|
| 1 | +# Created by: Diederik de Groot <ddegroot@talon.nl> |
| 2 | +# $FreeBSD: head/lang/dmd2/Makefile 498264 2019-04-07 07:43:37Z antoine $ |
| 3 | + |
| 4 | +PORTNAME= dmd |
| 5 | +PORTVERSION= ${DMD_VERSION} |
| 6 | +DISTVERSIONPREFIX= v |
| 7 | +CATEGORIES= lang |
| 8 | +PKGNAMESUFFIX= 2 |
| 9 | + |
| 10 | +MAINTAINER= cy@FreeBSD.org |
| 11 | +COMMENT= D 2.0 compiler |
| 12 | + |
| 13 | +LICENSE= ART10 BSL |
| 14 | +LICENSE_COMB= multi |
| 15 | + |
| 16 | +NOT_FOR_ARCHS= aarch64 armv6 armv7 mips64 powerpc64 sparc64 |
| 17 | +NOT_FOR_ARCHS_REASON= dmd only supports i386 and x86_64, use ldc or gdc instead |
| 18 | + |
| 19 | +BUILD_DEPENDS= bash:shells/bash |
| 20 | + |
| 21 | +USES= gmake compiler dlang:bootstrap |
| 22 | + |
| 23 | +# dcompiler arguments/variables |
| 24 | +DRT_MINVER= 20791 |
| 25 | +DRT_MAXVER= 20881 |
| 26 | + |
| 27 | +DMD_MAJOR= 2 |
| 28 | +DMD_MINOR= 0 |
| 29 | +DMD_PATCHLEVEL= 89 |
| 30 | +DMD_REV= 0 |
| 31 | +DMD_VERSION= ${DMD_MAJOR}.${DMD_MINOR}${DMD_PATCHLEVEL}.${DMD_REV} |
| 32 | +DMD_LIBVER= 0.${DMD_PATCHLEVEL}.${DMD_REV} |
| 33 | + |
| 34 | +USE_GITHUB= nodefault |
| 35 | +GH_ACCOUNT= dlang |
| 36 | +GH_PROJECT= dmd:dmd druntime:druntime phobos:phobos |
| 37 | + |
| 38 | +# DOCS should be build from github.com/dlang/dlang.org in a seperate package |
| 39 | +# because it is dependent on lang/dlang-tools:rdmd |
| 40 | +OPTIONS_DEFINE= EXAMPLES LTO FORCE_BOOTSTRAP SHARED |
| 41 | +OPTIONS_DEFAULT= EXAMPLES LTO SHARED |
| 42 | +OPTIONS_SUB= yes |
| 43 | + |
| 44 | +LTO_DESC= Enable Link Time Optimizations |
| 45 | +FORCE_BOOTSTRAP_DESC= Override search for suitable bootstrap d-compiler |
| 46 | +FORCE_BOOTSTRAP_BUILD_DEPENDS=${LOCALBASE}/bin/ldmd2:lang/ldc |
| 47 | +SHARED_DESC= Enable shared libraries |
| 48 | + |
| 49 | +PREFIX?= ${LOCALBASE}/dmd2 |
| 50 | +MAKEFILE= posix.mak |
| 51 | +EXAMPLESDIR= ${PREFIX}/share/examples/dmd2 |
| 52 | +DOCSDIR= ${PREFIX}/share/doc/dmd2 |
| 53 | +WRKSRC= ${WRKDIR} |
| 54 | +MODULEDIR= ${PREFIX}/include/d |
| 55 | + |
| 56 | +PLIST_SUB+= DMD_PATCHLEVEL=${DMD_PATCHLEVEL} \ |
| 57 | + DMD_LIBVER=${DMD_LIBVER} \ |
| 58 | + |
| 59 | +.include <bsd.port.options.mk> |
| 60 | + |
| 61 | +.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031 |
| 62 | +EXTRA_PATCHES= ${PATCHDIR}/ino64-* |
| 63 | +.endif |
| 64 | + |
| 65 | +OSMODEL?= ${OPSYS:tl} |
| 66 | + |
| 67 | +MAKE_ARGS+= SHELL=${LOCALBASE}/bin/bash HOST_DMD=${DCOMPILER_DMD} |
| 68 | + |
| 69 | +.if ${ARCH} == amd64 || ${ARCH} == x86_64 |
| 70 | +MAKE_ARGS+= MODEL=64 PIC=1 |
| 71 | +MODEL= 64 |
| 72 | +CFLAGS+= -fPIC |
| 73 | +.else |
| 74 | +MAKE_ARGS+= MODEL=32 |
| 75 | +MODEL= 32 |
| 76 | +.endif |
| 77 | + |
| 78 | +.if ${PORT_OPTIONS:MFORCE_BOOTSTRAP} |
| 79 | +DCOMPILER_DMD= ${LOCALBASE}/bin/ldmd2 |
| 80 | +.endif |
| 81 | + |
| 82 | +.if ${PORT_OPTIONS:MSHARED} |
| 83 | +MAKE_ARGS+= SHARED=1 |
| 84 | +.endif |
| 85 | + |
| 86 | +.if ${PORT_OPTIONS:MLTO} |
| 87 | +MAKE_ARGS+= ENABLE_LTO=1 |
| 88 | +.endif |
| 89 | + |
| 90 | +.if defined(WITH_DEBUG) |
| 91 | +MAKE_ARGS+= ENABLE_DEBUG=1 DEBUG_FLAGS=-g -DDEBUG=1 -DUNITTEST BUILD=debug |
| 92 | +.else |
| 93 | +MAKE_ARGS+= ENABLE_RELEASE=1 BUILD=release |
| 94 | +.endif |
| 95 | + |
| 96 | +post-extract: |
| 97 | + @${MV} ${WRKSRC_dmd} ${WRKSRC}/dmd |
| 98 | + @${MV} ${WRKSRC_druntime} ${WRKSRC}/druntime |
| 99 | + @${MV} ${WRKSRC_phobos} ${WRKSRC}/phobos |
| 100 | + |
| 101 | +post-patch: |
| 102 | + @${REINPLACE_CMD} -e "s|g++|${CXX}|" \ |
| 103 | + -e "s|/etc|${PREFIX}/etc|" \ |
| 104 | + ${WRKSRC}/dmd/src/posix.mak |
| 105 | + @${REINPLACE_CMD} -e "s|cc|${CC}|" ${WRKSRC}/phobos/posix.mak |
| 106 | + @${REINPLACE_CMD} -e "s|/etc|${PREFIX}/etc|" \ |
| 107 | + -e "s|\(dmd\)|\12|gI" \ |
| 108 | + -e "s|\\\BR|.BR|" \ |
| 109 | + ${WRKDIR}/dmd/docs/man/man5/dmd.conf.5 |
| 110 | + @${REINPLACE_CMD} -e "s|%@P%/../../src/phobos|${MODULEDIR}/phobos|" \ |
| 111 | + -e "s|%@P%/../../src/druntime|${MODULEDIR}/druntime|" \ |
| 112 | + -e "s|%@P%/../lib32|${PREFIX}/lib|" \ |
| 113 | + -e "s|%@P%/../lib64|${PREFIX}/lib|" \ |
| 114 | + ${WRKDIR}/dmd/ini/${OSMODEL}/bin${MODEL}/dmd.conf |
| 115 | + @${ECHO_CMD} >> ${WRKDIR}/dmd/ini/${OSMODEL}/bin${MODEL}/dmd.conf |
| 116 | + |
| 117 | +make-phobos: make-druntime |
| 118 | + cd ${WRKSRC}/phobos && ${MAKE_ENV} ${MAKE_CMD} -f ${MAKEFILE} ${MAKE_ARGS} ${BUILD} |
| 119 | + |
| 120 | +make-druntime: make-dmd |
| 121 | + cd ${WRKSRC}/druntime && ${MAKE_ENV} ${MAKE_CMD} -f ${MAKEFILE} ${MAKE_ARGS} ${BUILD} |
| 122 | + |
| 123 | +make-dmd: |
| 124 | + cd ${WRKSRC}/dmd && ${MAKE_ENV} ${MAKE_CMD} -f ${MAKEFILE} -j${MAKE_JOBS_NUMBER} ${MAKE_ARGS} ${BUILD} |
| 125 | + |
| 126 | +do-build: make-dmd make-phobos make-druntime |
| 127 | + |
| 128 | +do-install: |
| 129 | + ${INSTALL_MAN} ${WRKDIR}/dmd/docs/man/man5/dmd.conf.5 ${STAGEDIR}${MANPREFIX}/man/man5/dmd.conf.5 |
| 130 | + ${INSTALL_DATA} ${WRKSRC}/dmd/generated/${OSMODEL}/release/${MODEL}/dmd.conf ${STAGEDIR}${PREFIX}/etc/dmd.conf |
| 131 | + ${INSTALL_PROGRAM} ${WRKSRC}/dmd/generated/${OSMODEL}/release/${MODEL}/dmd ${STAGEDIR}${PREFIX}/bin/dmd |
| 132 | + ${INSTALL_DATA} ${WRKSRC}/phobos/generated/${OSMODEL}/release/${MODEL}/libphobos2.a ${STAGEDIR}${PREFIX}/lib/libphobos2.a |
| 133 | +.if ${PORT_OPTIONS:MSHARED} |
| 134 | + ${INSTALL_LIB} ${WRKSRC}/phobos/generated/${OSMODEL}/release/${MODEL}/libphobos2.so.${DMD_LIBVER} ${STAGEDIR}${PREFIX}/lib/libphobos2.so.${DMD_LIBVER} |
| 135 | + ${RLN} ${STAGEDIR}${PREFIX}/lib/libphobos2.so.${DMD_LIBVER} ${STAGEDIR}${PREFIX}/lib/libphobos2.so.0.${DMD_PATCHLEVEL} |
| 136 | + ${RLN} ${STAGEDIR}${PREFIX}/lib/libphobos2.so.${DMD_LIBVER} ${STAGEDIR}${PREFIX}/lib/libphobos2.so |
| 137 | +.endif |
| 138 | + ${INSTALL_DATA} ${WRKDIR}/dmd/ini/${OSMODEL}/bin${MODEL}/dmd.conf ${STAGEDIR}${PREFIX}/etc/dmd.conf.sample |
| 139 | + cd ${WRKDIR}/druntime/import && ${COPYTREE_SHARE} . ${STAGEDIR}${MODULEDIR}/druntime/import |
| 140 | + cd ${WRKSRC}/phobos && ${COPYTREE_SHARE} std ${STAGEDIR}${MODULEDIR}/phobos |
| 141 | + cd ${WRKSRC}/phobos && ${COPYTREE_SHARE} etc ${STAGEDIR}${MODULEDIR}/phobos |
| 142 | + |
| 143 | +post-install-EXAMPLES-on: |
| 144 | + ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} |
| 145 | + cd ${WRKDIR}/dmd && ${COPYTREE_SHARE} samples ${STAGEDIR}${EXAMPLESDIR} |
| 146 | + ${INSTALL_DATA} ${WRKDIR}/dmd/ini/${OSMODEL}/bin32/dmd.conf ${STAGEDIR}${EXAMPLESDIR}/dmd32.conf |
| 147 | + ${INSTALL_DATA} ${WRKDIR}/dmd/ini/${OSMODEL}/bin64/dmd.conf ${STAGEDIR}${EXAMPLESDIR}/dmd64.conf |
| 148 | + |
| 149 | +.include <bsd.port.mk> |
0 commit comments