diff options
Diffstat (limited to 'lang/sbcl/Makefile')
-rw-r--r-- | lang/sbcl/Makefile | 292 |
1 files changed, 95 insertions, 197 deletions
diff --git a/lang/sbcl/Makefile b/lang/sbcl/Makefile index 69bd3a78466c..4de3522dc14b 100644 --- a/lang/sbcl/Makefile +++ b/lang/sbcl/Makefile @@ -1,14 +1,13 @@ # $FreeBSD$ PORTNAME= sbcl -PORTVERSION= 1.3.1 +PORTVERSION= 1.3.13 +DISTVERSIONSUFFIX= -source PORTEPOCH= 1 CATEGORIES= lang lisp -MASTER_SITES= SF/sbcl/sbcl/${PORTVERSION} LOCAL/marino:binaries -DISTFILES= sbcl-${PORTVERSION}-source${EXTRACT_SUFX} \ - sbcl-${PORTVERSION}-documentation-html${EXTRACT_SUFX} +MASTER_SITES= SF/sbcl/sbcl/${PORTVERSION} -MAINTAINER= ports@FreeBSD.org +MAINTAINER= pavelivolkov@gmail.com COMMENT= Common Lisp development system derived from the CMU CL system LICENSE= sbcl @@ -16,210 +15,109 @@ LICENSE_NAME= public domain | FreeBSD LICENSE_FILE= ${WRKSRC}/COPYING LICENSE_PERMS= dist-mirror pkg-mirror auto-accept dist-sell pkg-sell -LIB_DEPENDS= libgmp.so:math/gmp +LIB_DEPENDS= libgmp.so:math/gmp \ + libmpfr.so:math/mpfr -USES= gmake tar:bzip2 +USES= gmake makeinfo tar:bzip2 ONLY_FOR_ARCHS= i386 amd64 -SBCL_HOME= ${PREFIX}/lib/sbcl -MANUALS= asdf.html sbcl.html -MODULESDOCS= asdf/README.md \ - asdf/README.SBCL \ - sb-aclrepl/README \ - sb-bsd-sockets/FAQ \ - sb-bsd-sockets/NEWS \ - sb-gmp/README.md \ - sb-md5/README \ - sb-mpfr/README.md \ - sb-posix/README \ - sb-rotate-byte/README \ - sb-simple-streams/README -TEXTDOCS= BUGS CREDITS COPYING NEWS PRINCIPLES TLA TODO -CFLAGS+= -fno-omit-frame-pointer -CPPFLAGS+= -I. -DSBCL_PREFIX=\\\"\$$(SBCL_PREFIX)\\\" -CONMODULES= asdf sb-aclrepl sb-bsd-sockets sb-cltl2 sb-concurrency \ - sb-cover sb-executable sb-gmp sb-grovel sb-introspect \ - sb-md5 sb-mpfr sb-posix sb-queue sb-rotate-byte sb-rt \ - sb-simple-streams sb-sprof - -MAKE_SH_ARGS?= --prefix=${PREFIX} \ - --dynamic-space-size=${DYNAMIC_SPACE_SIZE} \ - --with-sb-core-compression \ - --with-sb-qshow -NM?= /usr/bin/nm -NMFLAGS?= -gp - -BOOT_ARCH_OS_LIST= 1.0.31-amd64-freebsd8 1.0.31-i386-freebsd8 \ - 1.2.9-x86_64-dragonfly4 - -OPTIONS_DEFINE= SBCL #THREADS (don't build, see PR 184425) -SBCL_DESC= Bootstrap with installed SBCL binary, if available -THREADS_DESC= Experimental threading support - -.include <bsd.port.options.mk> - -NEWBOOTNAME= sbcl-${PORTVERSION}-${ARCH}-${OPSYS:tl}${OSREL:R} -PATTERN= *-${ARCH}-${OPSYS:tl}* -# FreeBSD hack is to support legacy make, add unrelated core fix while here -. if ${OPSYS} == FreeBSD -CORE= sbcl.core -BOOT_DISTNAME= sbcl-1.0.31-${ARCH}-freebsd8 -. else # newer core format -CORE= sbcl_core -BOOT_DISTNAME= sbcl-${BOOT_ARCH_OS_LIST:M${PATTERN}} -. endif - -.if make(makesum) || defined(FETCH_ALL) -. for BOOT_ARCH_OS in ${BOOT_ARCH_OS_LIST} -DISTFILES:= ${DISTFILES} sbcl-${BOOT_ARCH_OS}-binary.tar.bz2:binaries -. endfor -.else -DISTFILES:= ${DISTFILES} ${BOOT_DISTNAME}-binary.tar.bz2:binaries -.endif -.if ${ARCH} == "i386" -DYNAMIC_SPACE_SIZE?= 512 -PLIST_SUB+= I386_ONLY="" AMD64_ONLY="@comment " -SBCLCONFIG= Config.x86-${OPSYS:tl} -.else -DYNAMIC_SPACE_SIZE?= 1024 -PLIST_SUB+= I386_ONLY="@comment " AMD64_ONLY="" -SBCLCONFIG= Config.x86-64-${OPSYS:tl} -.endif +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} -# If the SBCL option is enabled, try to use existing "sbcl" first: -.if empty(PORT_OPTIONS:MSBCL) || !exists(${LOCALBASE}/bin/sbcl) -XC_HOST?= ${WRKDIR}/${BOOT_DISTNAME}/src/runtime/sbcl \ - --core ${WRKDIR}/${BOOT_DISTNAME}/output/${CORE} \ - --dynamic-space-size ${DYNAMIC_SPACE_SIZE} \ - --disable-debugger \ - --userinit /dev/null \ - --sysinit /dev/null -MAKE_SH_ARGS+= --xc-host='${XC_HOST}' -.endif # SBCL - -.if ${PORT_OPTIONS:MTHREADS} -MAKE_SH_ARGS+= --with-sb-thread -. if defined(WITH_FUTEX) -MAKE_SH_ARGS+= --with-sb-futex -. else -MAKE_SH_ARGS+= --without-sb-futex -. endif -. if defined(WITH_SAFEPOINT) || defined(WITH_STRICT_SAFEPOINT) -MAKE_SH_ARGS+= --with-sb-safepoint --with-sb-thruption --with-sb-wtimer -. if defined(WITH_STRICT_SAFEPOINT) -MAKE_SH_ARGS+= --with-sb-safepoint-strictly -. else -MAKE_SH_ARGS+= --without-sb-safepoint-strictly -. endif -. else -MAKE_SH_ARGS+= --without-sb-safepoint \ - --without-sb-safepoint-strictly \ - --without-sb-thruption \ - --without-sb-wtimer -. endif -.else -MAKE_SH_ARGS+= --without-sb-thread +MAKE_SH_ARGS?= --prefix="${PREFIX}" \ + --xc-host="${XC_HOST}" + +# You can use the DYNAMIC_SPACE_SIZE knob to change the size of SBCL dynamically-allocated memory. +# Default for arch: i386 = 512Mb, amd64 = 1Gb. +.if defined(DYNAMIC_SPACE_SIZE) +MAKE_SH_ARGS+= --dynamic-space-size=${DYNAMIC_SPACE_SIZE} .endif -pre-everything:: - @${ECHO_MSG} - @${ECHO_MSG} "---------------------------------------------------------" - @${ECHO_MSG} "You might need to adjust memory limits in order to" - @${ECHO_MSG} "build SBCL." - @${ECHO_MSG} - @${ECHO_MSG} "You can use the DYNAMIC_SPACE_SIZE knob to change the size" - @${ECHO_MSG} "of SBCL dynamically-allocated memory." - @${ECHO_MSG} "---------------------------------------------------------" - @${ECHO_MSG} - -post-patch: - @${ECHO_CMD} "CC=${CC}" >> ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${ECHO_CMD} "CFLAGS=${CFLAGS}" >> \ - ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${ECHO_CMD} "CPPFLAGS=${CPPFLAGS}" >> \ - ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${ECHO_CMD} "GREP=${GREP}" >> ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${ECHO_CMD} "LD=${LD}" >> ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${ECHO_CMD} "LINKFLAGS=${LDFLAGS} -dynamic -rdynamic" >> \ - ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${ECHO_CMD} "NM=${NM} ${NMFLAGS}" >> \ - ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${REINPLACE_CMD} -E -e 's,-lthr,-lpthread,g' \ - ${WRKSRC}/src/runtime/${SBCLCONFIG} - @${GREP} -Fe '.core' -l -r ${WRKSRC} | ${XARGS} ${REINPLACE_CMD} \ - -e 's|\.core|_core|g' - @${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|g' \ - ${WRKSRC}/doc/sbcl.1 - @${REINPLACE_CMD} -E -e 's!-sbcl-shared!& ${CFLAGS}!' \ - -e 's!\$$(TEST_FILESTEM|x|1)_core!$${\1}_core!g' \ - ${WRKSRC}/tests/core.test.sh \ - ${WRKSRC}/tests/foreign.test.sh - @${REINPLACE_CMD} -E -e 's!"-O3"!!' \ - -e 's!("-sbcl-(pic|shared)"[[:blank:]]*)+!& ${CFLAGS:C/.*/"&"/}!' \ - ${WRKSRC}/tests/foreign-stack-alignment.impure.lisp \ - ${WRKSRC}/tests/kill-non-lisp-thread.impure.lisp \ - ${WRKSRC}/tests/swap-lispobjs.impure.lisp \ - ${WRKSRC}/tests/threads.impure.lisp - @${REINPLACE_CMD} -e 's|( cd ./doc ; sh ./clean.sh )|#&|' \ - ${WRKSRC}/clean.sh - @case "`${CC} --version`" in \ - *clang*) \ - ${REINPLACE_CMD} -e '/#define END()/s/\.end//' \ - ${WRKSRC}/src/runtime/x86-assem.S \ - ${WRKSRC}/src/runtime/x86-64-assem.S ;; \ - esac - ${REINPLACE_CMD} -e 's!/bin/bash!${LOCALBASE}&!' \ - ${WRKSRC}/release.sh \ - ${WRKSRC}/src/code/run-program.lisp \ - ${WRKSRC}/tests/run-compiler.sh - @${FIND} ${WRKSRC} \( -name '*.orig' -o -name '*.bak' \) -delete +# All options explained into file: ${WRKSRC}/base-target-features.lisp-expr +OPTIONS_DEFINE= DOCS QSHOW RENAME SAFEPOINT THREADS UNICODE XREF ZLIB +OPTIONS_DEFAULT=CCL UNICODE + +QSHOW_DESC= C runtime with low-level debugging output +RENAME_DESC= Rename suffix .core to _core +SAFEPOINT_DESC= Using safepoints instead of signals +XREF_DESC= XREF data for SBCL internals + +OPTIONS_SINGLE= BOOTSTRAP +OPTIONS_SINGLE_BOOTSTRAP= ABCL CCL CMUCL SBCL + +ABCL_DESC= Armed Bear Common Lisp +BOOTSTRAP_DESC= Supported languages of the build host +CCL_DESC= Clozure Common Lisp +CMUCL_DESC= Carnegie Mellon University Common Lisp +SBCL_DESC= Steel Bank Common Lisp + +# On this moment CMUCL - don't builds sbcl correctly, ABCL - I don't tested. Welcome volunteers. +OPTIONS_EXCLUDE=ABCL CMUCL + +ABCL_VARS= XC_HOST="abcl" +ABCL_BUILD_DEPENDS= abcl:lang/abcl + +CCL_VARS= XC_HOST="ccl --no-init --batch --quiet" +CCL_BUILD_DEPENDS= ccl:lang/ccl + +CMUCL_VARS= XC_HOST="lisp -nositeinit -noinit -batch -quiet" +CMUCL_BUILD_DEPENDS= lisp:lang/cmucl + +DOCS_VARS= INFO="asdf sbcl" + +QSHOW_VARS= MAKE_SH_ARGS+="--with-sb-qshow" +QSHOW_VARS_OFF= MAKE_SH_ARGS+="--without-sb-qshow" + +RENAME_PLIST_SUB= RENAME_DLM="_" +RENAME_PLIST_SUB_OFF= RENAME_DLM="." +RENAME_VARS= RENAME_DLM="_" +RENAME_VARS_OFF=RENAME_DLM="." + +SAFEPOINT_VARS= MAKE_SH_ARGS+="--with-sb-safepoint --with-sb-thruption --with-sb-wtimer" +SAFEPOINT_VARS_OFF= MAKE_SH_ARGS+="--without-sb-safepoint --without-sb-thruption --without-sb-wtimer" +SAFEPOINT_IMPLIES= THREADS + +SBCL_VARS= XC_HOST="sbcl --noinform --disable-debugger --no-sysinit --no-userinit" + +THREADS_VARS= MAKE_SH_ARGS+="--with-sb-thread --with-restore-fs-segment-register-from-tls" +THREADS_VARS_OFF= MAKE_SH_ARGS+="--without-sb-thread --without-restore-fs-segment-register-from-tls" + +UNICODE_VARS= MAKE_SH_ARGS+="--with-sb-unicode" +UNICODE_VARS_OFF= MAKE_SH_ARGS+="--without-sb-unicode" + +XREF_VARS= MAKE_SH_ARGS+="--with-sb-xref-for-internals" +XREF_VARS_OFF= MAKE_SH_ARGS+="--without-sb-xref-for-internals" + +ZLIB_VARS= MAKE_SH_ARGS+="--with-sb-core-compression" +ZLIB_VARS_OFF= MAKE_SH_ARGS+="--without-sb-core-compression" + +PORTDOCS= * + +post-patch-RENAME-on: + ${GREP} -Frl '.core' ${WRKSRC} | ${XARGS} ${REINPLACE_CMD} -e 's|\.core|_core|g' do-build: - (cd ${WRKSRC} && ${SETENV} CC="${CC}" ${SH} make.sh ${MAKE_SH_ARGS}) - ${RM} -r ${WRKSRC}/contrib/sb-cover/test-output - ${REINPLACE_CMD} -E -e \ - 's|\$$Date\$$|'"`${SETENV} LANG=C /bin/date '+%B %d, %Y'`|g" \ - ${WRKSRC}/doc/sbcl.1 + (cd ${WRKSRC} && ${SH} make.sh ${MAKE_SH_ARGS}) do-install: - ${MKDIR} ${STAGEDIR}${SBCL_HOME}/contrib \ - ${STAGEDIR}${SBCL_HOME}/site-systems - ${INSTALL_PROGRAM} ${WRKSRC}/src/runtime/sbcl ${STAGEDIR}${PREFIX}/bin - ${INSTALL_DATA} ${WRKSRC}/output/sbcl_core ${STAGEDIR}${SBCL_HOME} - ${INSTALL_DATA} ${WRKSRC}/obj/sbcl-home/contrib/*.fasl \ - ${STAGEDIR}${SBCL_HOME}/contrib/ - ${INSTALL_DATA} ${WRKSRC}/obj/sbcl-home/contrib/*.asd \ - ${STAGEDIR}${SBCL_HOME}/contrib/ -.for MOD in ${CONMODULES} - ${MKDIR} ${STAGEDIR}${SBCL_HOME}/${MOD} - - ${INSTALL_DATA} ${WRKSRC}/contrib/${MOD}/*.lisp \ - ${STAGEDIR}${SBCL_HOME}/${MOD} - - ${INSTALL_DATA} ${WRKSRC}/contrib/${MOD}/*.fasl \ - ${STAGEDIR}${SBCL_HOME}/${MOD} - - ${INSTALL_DATA} ${WRKSRC}/contrib/${MOD}/${MOD}.asd \ - ${STAGEDIR}${SBCL_HOME}/${MOD} -.endfor -.if ${PORT_OPTIONS:MDOCS} - ${MKDIR} ${STAGEDIR}${DOCSDIR}/ - ${INSTALL_DATA} ${MANUALS:S,^, ${WRKSRC}/doc/manual/,g} \ - ${STAGEDIR}${DOCSDIR}/ - ${INSTALL_DATA} ${TEXTDOCS:S,^,${WRKSRC}/,g} ${STAGEDIR}${DOCSDIR}/ - ${MKDIR} ${MODULESDOCS:C,/[^/]+$,,g:u:S,^,${STAGEDIR}${DOCSDIR}/,g} -. for MODDOC in ${MODULESDOCS} - ${INSTALL_DATA} ${WRKSRC}/contrib/${MODDOC} \ - ${STAGEDIR}${DOCSDIR}/${MODDOC} -. endfor -.endif - ${INSTALL_MAN} ${WRKSRC}/doc/sbcl.1 ${STAGEDIR}${MAN1PREFIX}/man/man1 + (cd ${WRKSRC} && ${SETENV} \ + INSTALL_ROOT="${STAGEDIR}${PREFIX}" \ + MAN_DIR="${STAGEDIR}${MANPREFIX}/man" \ + INFO_DIR="${STAGEDIR}${PREFIX}/${INFO_PATH}" \ + DOC_DIR="${STAGEDIR}${DOCSDIR}" \ + ${SH} install.sh) -check regression-test test: build - (cd ${WRKSRC}/tests && ${SETENV} CC="${CC}" ${SH} run-tests.sh) +post-build-DOCS-on: + ${DO_MAKE_BUILD} -C ${WRKSRC}/doc/manual info html -bootstrap: - ${CP} -r ${WRKSRC} ${WRKDIR}/${NEWBOOTNAME} - (cd ${WRKDIR}/ && \ - ${WRKDIR}/${NEWBOOTNAME}/binary-distribution.sh ${NEWBOOTNAME}) - (cd ${WRKDIR}/ && ${BZIP2_CMD} ${NEWBOOTNAME}-binary.tar) +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/sbcl + +post-install-DOCS-on: + ${RM} ${STAGEDIR}${PREFIX}/${INFO_PATH}/dir # don't requered with INFO= + ${RM} -r ${STAGEDIR}${DOCSDIR}/html # empty directory created by install.sh + +check regression-test test: build + (cd ${WRKSRC}/tests && ${SH} run-tests.sh) .include <bsd.port.mk> |