1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-25 00:51:21 +00:00
freebsd-ports/lang/modula3/Makefile
John Marino d6c6953ea5 lang/modula3: Add custom DEC/CM3 license
It doesn't appear possible to have two custom licenses combined, so I
had to get creative and concatenate them into one combined document.
Also, the auto-generated plist had to be modified to add the three new
entries.  There may be a better way to do this (e.g. use >> ${TMPPLIST}
instead of > ${TMPPLIST} on first line) but at least the awk method
works durably.
2014-02-16 08:42:53 +00:00

184 lines
6.9 KiB
Makefile

# Created by: marino@FreeBSD.org
# $FreeBSD$
PORTNAME= modula3
PORTVERSION= 5.8.6
PORTREVISION= 2
CATEGORIES= lang
MASTER_SITES= https://modula3.elegosoft.com/cm3/releng/ \
http://downloads.dragonlace.net/m3/ \
http://downloads.dragonlace.net/m3/:boot
DISTFILES= ${SRCDISTFILE} ${BOOTDIST}
MAINTAINER= marino@FreeBSD.org
COMMENT= Critical Mass Modula-3 compiler
LICENSE= DECM3
LICENSE_FILE= ${WRKSRC}/COM_LICENSE
LICENSE_NAME= CM3 License defined by DEC and Critical Mass copyrights
LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
LIB_DEPENDS= libodbc.so:${PORTSDIR}/databases/libiodbc
NEWBOOTDIR= ${WRKDIR}/new-bootstrap/bootstrap
SRCDISTFILE= cm3-src-all-${PORTVERSION}-REL.tgz
DST1= m3-bootstrap.AMD64.FREEBSD.92.tar.bz2:boot
DST2= m3-bootstrap.x86_64.DRAGONFLY.36.tar.bz2:boot
ONLY_FOR_ARCHS= amd64
CONFLICTS_INSTALL= cvsup-*
USES= gmake
USE_PGSQL= yes
USE_XORG= xaw xmu xext xt sm ice x11
USE_GL= gl glu
USE_GCC= any
NO_MTREE= yes
MAKE_ENV+= CM3_INSTALL="${STAGEDIR}${PREFIX}" \
CM3_DEBUG=yes \
M3_PORTABLE_RUN_PATH=yes
BOOTCM3= CM3="${WRKDIR}/bootstrap/bin/cm3"
BUILTCM3= CM3="${STAGEDIR}${PREFIX}/bin/cm3"
BSCONTENTS= bin/cm3 bin/cm3cg bin/m3bundle bin/mklib etc/modula3 \
lib/libm3core.* lib/libm3.* lib/libsysutils.* \
lib/libpatternmatching.* pkg/m3core pkg/libm3 pkg/sysutils \
pkg/patternmatching pkg/m3middle pkg/m3objfile pkg/m3linker \
pkg/m3back pkg/m3front pkg/m3quake pkg/cm3 pkg/mklib
.include <bsd.port.pre.mk>
M3MAKE_ENV= ${MAKE_ENV:C/^LDFLAGS=.*//:C/^CPPFLAGS=.*//}
# for port maintenance, invoke "make makesum PLUS_BOOTSTRAPS=1"
.if defined(PLUS_BOOTSTRAPS)
DISTFILES= ${SRCDISTFILE} ${DST1} ${DST2}
.else
. if ${OPSYS} == FreeBSD
BOOTDIST= ${DST1}
MARCH= AMD64
. if !exists(/usr/include/xlocale/_ctype.h)
IGNORE= the bootstrap compiler only runs on FreeBSD 9.0 or later
. endif
. endif
. if ${OPSYS} == DragonFly
IGNORE= modula-3 has not adapted to DragonFly yet
BOOTDIST= ${DST2}
MARCH= x86_64
. endif
NEWBOOTNAME= m3-bootstrap.${MARCH}.${OPSYS:U}.${OSREL:S/.//}.tar.bz2
M3TARGET= ${MARCH}_${OPSYS:U}
.endif
do-extract:
@${RM} -rf ${WRKDIR}
@${MKDIR} ${WRKSRC}
@(cd ${WRKSRC} && tar -xf ${DISTDIR}/${SRCDISTFILE})
@(cd ${WRKDIR} && tar -xf ${DISTDIR}/${BOOTDIST:C/:[^:]+$//})
@(cd ${WRKSRC} && ${CAT} COPYRIGHT-DEC COPYRIGHT-CMASS > COM_LICENSE)
post-patch:
# Use sed -i instead of ${REINPLACE_CMD} because we don't want .bak files
# installed in the final product which comes from config-no-install dir.
@${SED} -i "" -e 's|/usr/local|${PREFIX}|g' \
-e 's|\\\\$$ORIGIN"|${PREFIX}/lib"|' \
${WRKSRC}/m3-sys/cminstall/src/config-no-install/FreeBSD.common
@${SED} -i "" -e 's|/usr/X11R6|${PREFIX}|g' \
${WRKSRC}/m3-sys/cminstall/src/config-no-install/Unix.common
@${SED} -i "" -e 's/^SYSTEM_CC = ".* -gs/SYSTEM_CC = "${CC} -gs/' \
${WRKDIR}/bootstrap/etc/modula3/AMD64_FREEBSD \
${WRKSRC}/m3-sys/cminstall/src/config-no-install/AMD64_FREEBSD
do-bootstrap:
@(cd ${WRKSRC}; ${SETENV} ${M3MAKE_ENV} ${BOOTCM3} SHIP=${TRUE} \
${SH} scripts/boot-cm3-with-m3.sh onlybuild)
@${FIND} ${WRKSRC} -name \.M3SHIP -print | ${XARGS} ${SED} -i -e \
's|/bootstrap/|/stage${PREFIX}/|g'
@(cd ${WRKSRC}; ${SETENV} ${M3MAKE_ENV} ${BOOTCM3} \
${SH} scripts/boot-cm3-with-m3.sh ship)
(cd ${WRKSRC}/m3-sys/cminstall/src/config-no-install && \
${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/etc/modula3)
${INSTALL_PROGRAM} ${WRKSRC}/m3-sys/cm3/${M3TARGET}/cm3 \
${STAGEDIR}${PREFIX}/bin
${ECHO} "INSTALL_ROOT = \"${STAGEDIR}${PREFIX}\"" > \
${STAGEDIR}${PREFIX}/bin/cm3.cfg
${ECHO} "include(\"${STAGEDIR}${PREFIX}/etc/modula3/${M3TARGET}\")" >> \
${STAGEDIR}${PREFIX}/bin/cm3.cfg
@(cd ${WRKSRC}; ${SETENV} ${M3MAKE_ENV} ${BOOTCM3} \
${SH} scripts/boot-cm3-with-m3.sh cleanglobal)
@${ECHO} "======================================"
@${ECHO} "===== M3 compiler bootstrapped ====="
@${ECHO} "======================================"
@${ECHO}
do-build: do-bootstrap
@(cd ${WRKSRC}; ${SETENV} ${M3MAKE_ENV} ${BUILTCM3} \
${SH} scripts/do-cm3-min.sh buildship)
@(cd ${WRKSRC}; ${SETENV} ${M3MAKE_ENV} ${BUILTCM3} \
${SH} scripts/do-cm3-std.sh buildship)
@(cd ${WRKSRC}; ${SETENV} ${M3MAKE_ENV} ${BUILTCM3} \
${SH} scripts/do-cm3-caltech-parser.sh buildship)
do-install:
${FIND} ${STAGEDIR}${PREFIX}/pkg -type f -perm +111 -not -name cm3 | \
${XARGS} ${CHMOD} -x
${ECHO} "INSTALL_ROOT = \"${PREFIX}\"" > \
${STAGEDIR}${PREFIX}/bin/cm3.cfg
${ECHO} "include(\"${PREFIX}/etc/modula3/${M3TARGET}\")" >> \
${STAGEDIR}${PREFIX}/bin/cm3.cfg
${MKDIR} ${STAGEDIR}${PREFIX}/share/examples/bin \
${STAGEDIR}${PREFIX}/share/doc
${MV} ${STAGEDIR}${PREFIX}/examples \
${STAGEDIR}${PREFIX}/share/examples/modula3
${MV} ${STAGEDIR}${PREFIX}/www ${STAGEDIR}${PREFIX}/share/doc/modula3
${MV} ${STAGEDIR}${PREFIX}/bin/Cube \
${STAGEDIR}${PREFIX}/bin/Calculator \
${STAGEDIR}${PREFIX}/bin/fisheye \
${STAGEDIR}${PREFIX}/share/examples/bin
# The pkg-plist is well over 6000 entries, so let's just autogen it instead
post-install:
cd ${STAGEDIR}${PREFIX}; ${FIND} * \( -type f -or -type l \) | \
${SORT} | ${SED} -e 's/^man\/man[1578]\/.*[1578]$$/&.gz/' \
> ${TMPPLIST}
@echo ${PLIST_FILES} | awk '{print $$1}' RS=' ' >> ${TMPPLIST}
cd ${STAGEDIR}${PREFIX}; ${FIND} * -type d | ${SORT} -r | \
${SED} -e '/^bin$$/d' -e '/^lib$$/d' -e '/^pkg$$/d' \
-e '/^share\/examples$$/d' -e '/^share\/doc$$/d' -e '/^share$$/d' \
-e '/^etc$$/d' -e '/^man\/man[1578]$$/d' -e '/^man$$/d' \
-e 's/^/@dirrm /g' >> ${TMPPLIST}
@echo "@unexec rmdir %D/share/doc 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/share/examples 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/share 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/bin 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/etc 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/lib 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/man/man8 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/man/man7 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/man/man5 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/man/man1 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/man 2>/dev/null || true" >> ${TMPPLIST}
@echo "@unexec rmdir %D/pkg 2>/dev/null || true" >> ${TMPPLIST}
# to create a new bootstrap, invoke "make stage NEW_BOOTSTRAP=1"
.if defined(NEW_BOOTSTRAP)
post-stage:
@${RM} -rf ${NEWBOOTDIR}
@${MKDIR} ${NEWBOOTDIR}/bin ${NEWBOOTDIR}/lib \
${NEWBOOTDIR}/pkg ${NEWBOOTDIR}/etc
.for X in ${BSCONTENTS}
@${CP} -a ${STAGEDIR}${PREFIX}/${X} ${NEWBOOTDIR}/${X:H}/
.endfor
${ECHO} "INSTALL_ROOT = path() & \"/..\"" \
> ${NEWBOOTDIR}/bin/cm3.cfg
${ECHO} "include(path() & \"/../etc/modula3/${M3TARGET}\")" \
>> ${NEWBOOTDIR}/bin/cm3.cfg
@${FIND} ${NEWBOOTDIR} -type f -perm +111 | ${XARGS} ${STRIP_CMD}
(cd ${NEWBOOTDIR}/.. ; tar -cyf ${NEWBOOTNAME} bootstrap)
.endif
.include <bsd.port.post.mk>