| @@ -1,107 +1,122 @@ | | | @@ -1,107 +1,122 @@ |
1 | # $NetBSD: Makefile,v 1.26 2016/04/14 22:10:06 dholland Exp $ | | 1 | # $NetBSD: Makefile,v 1.27 2016/07/03 19:08:22 dholland Exp $ |
2 | # | | 2 | # |
3 | | | 3 | |
4 | DISTNAME= boot.${BOX}-unix | | 4 | DISTNAME= boot.${BOX}-unix |
5 | PKGNAME= smlnj-${SML_VERSION} | | 5 | PKGNAME= smlnj-${SML_VERSION} |
6 | CATEGORIES= lang | | 6 | CATEGORIES= lang |
7 | MASTER_SITES= http://smlnj.cs.uchicago.edu/dist/working/${SML_VERSION}/ | | 7 | MASTER_SITES= http://smlnj.cs.uchicago.edu/dist/working/${SML_VERSION}/ |
8 | DISTFILES= MLRISC.tgz \ | | 8 | DISTFILES= MLRISC.tgz \ |
9 | boot.${BOX}-unix.tgz \ | | 9 | boot.${BOX}-unix.tgz \ |
10 | ckit.tgz \ | | 10 | ckit.tgz \ |
11 | cm.tgz \ | | 11 | cm.tgz \ |
12 | cml.tgz \ | | 12 | cml.tgz \ |
13 | compiler.tgz \ | | 13 | compiler.tgz \ |
14 | config.tgz \ | | 14 | config.tgz \ |
15 | eXene.tgz \ | | 15 | eXene.tgz \ |
16 | ml-burg.tgz \ | | 16 | ml-burg.tgz \ |
17 | ml-lex.tgz \ | | 17 | ml-lex.tgz \ |
18 | nlffi.tgz \ | | 18 | nlffi.tgz \ |
19 | ml-yacc.tgz \ | | 19 | ml-yacc.tgz \ |
20 | runtime.tgz \ | | 20 | runtime.tgz \ |
21 | smlnj-lib.tgz \ | | 21 | smlnj-lib.tgz \ |
22 | system.tgz \ | | 22 | system.tgz \ |
23 | ml-lpt.tgz \ | | 23 | ml-lpt.tgz \ |
24 | pgraph.tgz \ | | 24 | pgraph.tgz \ |
25 | trace-debug-profile.tgz \ | | 25 | trace-debug-profile.tgz \ |
26 | heap2asm.tgz \ | | 26 | heap2asm.tgz \ |
27 | smlnj-c.tgz | | 27 | smlnj-c.tgz |
28 | | | 28 | |
29 | MAINTAINER= richards+netbsd@CS.Princeton.EDU | | 29 | MAINTAINER= richards+netbsd@CS.Princeton.EDU |
30 | HOMEPAGE= http://www.smlnj.org/index.html | | 30 | HOMEPAGE= http://www.smlnj.org/index.html |
31 | COMMENT= Popular functional language from Bell Labs | | 31 | COMMENT= Popular functional language from Bell Labs |
32 | | | 32 | |
33 | SML_VERSION= 110.73 | | 33 | SML_VERSION= 110.73 |
34 | PKGREVISION= 1 | | 34 | PKGREVISION= 1 |
35 | | | 35 | |
36 | WRKSRC= ${WRKDIR} | | 36 | WRKSRC= ${WRKDIR} |
37 | DIST_SUBDIR= smlnj-${SML_VERSION} | | 37 | DIST_SUBDIR= smlnj-${SML_VERSION} |
38 | USE_TOOLS+= gmake pax | | 38 | USE_TOOLS+= gmake pax |
39 | | | 39 | |
40 | # previous versions of the package had an additional '-' | | 40 | # previous versions of the package had an additional '-' |
41 | CONFLICTS= sml-nj-[0-9]* | | 41 | CONFLICTS= sml-nj-[0-9]* |
42 | | | 42 | |
43 | SML_BASE= ${PREFIX}/lib/smlnj | | 43 | SML_BASE= ${PREFIX}/lib/smlnj |
44 | SML_LIBDIR= ${SML_BASE}/lib | | 44 | SML_LIBDIR= ${SML_BASE}/lib |
45 | SML_BINDIR= ${SML_BASE}/bin | | 45 | SML_BINDIR= ${SML_BASE}/bin |
46 | SML_SCRIPTS= _link-sml _run-sml _ml-build _ml-makedepend | | 46 | SML_SCRIPTS= _link-sml _run-sml _ml-build _ml-makedepend |
47 | | | 47 | |
48 | .include "../../lang/smlnj/Makefile.common" | | 48 | .include "../../lang/smlnj/Makefile.common" |
49 | | | 49 | |
50 | # create parent directory for the runtime system | | 50 | # |
| | | 51 | # For smlnj reasons the runtime system needs to be unpacked twice, once |
| | | 52 | # in work/src and once in work/base. |
| | | 53 | # |
| | | 54 | # As of 20160624, instead of inconsistently patching one copy or the |
| | | 55 | # other and hoping, or patching both and duplicating all the patches, |
| | | 56 | # we'll patch only work/src, and then *after* patching clone work/src |
| | | 57 | # into work/base. |
| | | 58 | # |
| | | 59 | |
| | | 60 | # create parent directories for the runtime system |
51 | pre-extract: | | 61 | pre-extract: |
52 | ${MKDIR} ${WRKDIR}/src || ${TRUE} | | 62 | ${MKDIR} ${WRKDIR}/src || ${TRUE} |
| | | 63 | ${MKDIR} ${WRKDIR}/base || ${TRUE} |
53 | | | 64 | |
54 | # make it easier to patch the runtime system | | 65 | # make it easier to patch the runtime system |
55 | do-extract: | | 66 | do-extract: |
56 | ${RUN} extract_file="${_DISTDIR}/config.tgz"; export extract_file; \ | | 67 | ${RUN} extract_file="${_DISTDIR}/config.tgz"; \ |
| | | 68 | export extract_file; \ |
57 | cd ${WRKDIR}; ${EXTRACT_CMD} | | 69 | cd ${WRKDIR}; ${EXTRACT_CMD} |
58 | ${RUN} extract_file="${_DISTDIR}/runtime.tgz"; export extract_file; \ | | 70 | ${RUN} extract_file="${_DISTDIR}/runtime.tgz"; \ |
| | | 71 | export extract_file; \ |
59 | cd ${WRKDIR}/src; ${EXTRACT_CMD} | | 72 | cd ${WRKDIR}/src; ${EXTRACT_CMD} |
60 | ${RUN} extract_file="${_DISTDIR}/runtime.tgz"; export extract_file; \ | | | |
61 | mkdir ${WRKDIR}/base; cd ${WRKDIR}/base; ${EXTRACT_CMD} | | | |
62 | | | 73 | |
63 | # make symlinks to the dist files | | 74 | # symlink the rest of the distfiles |
64 | post-extract: | | 75 | post-extract: |
65 | cd ${WRKDIR} && ${LN} -sf ${_DISTDIR}/* . | | 76 | cd ${WRKDIR} && ${LN} -sf ${_DISTDIR}/* . |
| | | 77 | |
| | | 78 | # make the necessary copy of the runtime, _after_ patching src |
| | | 79 | post-patch: |
| | | 80 | cd ${WRKDIR}/src && pax -rw runtime ${WRKDIR}/base/ |
66 | | | 81 | |
67 | # resolve definition of SML_BASE, CFLAGS in patched files | | 82 | # resolve definition of SML_BASE, CFLAGS in patched files |
68 | do-configure: | | 83 | do-configure: |
69 | set -e; \ | | 84 | set -e; \ |
70 | if [ ${MACHINE_ARCH} = "powerpc" ]; then \ | | 85 | if [ ${MACHINE_ARCH} = "powerpc" ]; then \ |
71 | ${AWK} '(! /^request nlffi$$/) { print }' \ | | 86 | ${AWK} '(! /^request nlffi$$/) { print }' \ |
72 | < ${WRKDIR}/config/targets \ | | 87 | < ${WRKDIR}/config/targets \ |
73 | > ${WRKDIR}/temp; \ | | 88 | > ${WRKDIR}/temp; \ |
74 | ${MV} ${WRKDIR}/temp ${WRKDIR}/config/targets; \ | | 89 | ${MV} ${WRKDIR}/temp ${WRKDIR}/config/targets; \ |
75 | fi | | 90 | fi |
76 | set -e; \ | | 91 | set -e; \ |
77 | cd ${WRKDIR}/config; \ | | 92 | cd ${WRKDIR}/config; \ |
78 | for f in ${SML_SCRIPTS}; do \ | | 93 | for f in ${SML_SCRIPTS}; do \ |
79 | ${CP} "$${f}" "$${f}.tmp"; \ | | 94 | ${CP} "$${f}" "$${f}.tmp"; \ |
80 | ${SED} -e 's|@SML_BASE@|${SML_BASE}|g' \ | | 95 | ${SED} -e 's|@SML_BASE@|${SML_BASE}|g' \ |
81 | < "$${f}.tmp" > "$${f}"; \ | | 96 | < "$${f}.tmp" > "$${f}"; \ |
82 | done; \ | | 97 | done; \ |
83 | cd ${WRKDIR}/src/runtime/objs; \ | | 98 | cd ${WRKDIR}/src/runtime/objs; \ |
84 | for f in *; do \ | | 99 | for f in *; do \ |
85 | ${CP} "$${f}" "$${f}.tmp"; \ | | 100 | ${CP} "$${f}" "$${f}.tmp"; \ |
86 | ${SED} -e 's|@CFLAGS@|'${CFLAGS:Q}'|g' \ | | 101 | ${SED} -e 's|@CFLAGS@|'${CFLAGS:Q}'|g' \ |
87 | < "$${f}.tmp" > "$${f}"; \ | | 102 | < "$${f}.tmp" > "$${f}"; \ |
88 | done | | 103 | done |
89 | | | 104 | |
90 | # The build target needs to run $WRKDIR/config/install.sh | | 105 | # The build target needs to run $WRKDIR/config/install.sh |
91 | do-build: | | 106 | do-build: |
92 | cd ${WRKDIR} && unset PWD && \ | | 107 | cd ${WRKDIR} && unset PWD && \ |
93 | FILESDIR=${FILESDIR} PATCH=${PATCH:Q} PATCH_ARGS=${PATCH_ARGS:Q} \ | | 108 | FILESDIR=${FILESDIR} PATCH=${PATCH:Q} PATCH_ARGS=${PATCH_ARGS:Q} \ |
94 | SMLNJ_HOME="${WRKDIR}" ./config/install.sh | | 109 | SMLNJ_HOME="${WRKDIR}" ./config/install.sh |
95 | | | 110 | |
96 | # install target | | 111 | # install target |
97 | # (see ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.38/INSTALL) | | 112 | # (see ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.38/INSTALL) |
98 | # 1. create installation directories | | 113 | # 1. create installation directories |
99 | # 2. copy the ./bin and ./lib directories across | | 114 | # 2. copy the ./bin and ./lib directories across |
100 | # 3. install links to executables in $PREFIX/bin | | 115 | # 3. install links to executables in $PREFIX/bin |
101 | INSTALLATION_DIRS= bin | | 116 | INSTALLATION_DIRS= bin |
102 | do-install: | | 117 | do-install: |
103 | ${INSTALL_DATA_DIR} ${DESTDIR}${SML_BASE} | | 118 | ${INSTALL_DATA_DIR} ${DESTDIR}${SML_BASE} |
104 | cd ${WRKDIR} && pax -rw -pam bin lib ${DESTDIR}${SML_BASE} | | 119 | cd ${WRKDIR} && pax -rw -pam bin lib ${DESTDIR}${SML_BASE} |
105 | cd ${DESTDIR}${PREFIX}/bin && ${LN} -sf ../lib/smlnj/bin/* . | | 120 | cd ${DESTDIR}${PREFIX}/bin && ${LN} -sf ../lib/smlnj/bin/* . |
106 | | | 121 | |
107 | .include "../../mk/bsd.pkg.mk" | | 122 | .include "../../mk/bsd.pkg.mk" |