summaryrefslogtreecommitdiff
path: root/lang/modula-3-lib/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'lang/modula-3-lib/Makefile')
-rw-r--r--lang/modula-3-lib/Makefile137
1 files changed, 137 insertions, 0 deletions
diff --git a/lang/modula-3-lib/Makefile b/lang/modula-3-lib/Makefile
new file mode 100644
index 000000000000..1054f5826b3b
--- /dev/null
+++ b/lang/modula-3-lib/Makefile
@@ -0,0 +1,137 @@
+# New ports collection makefile for: modula-3-lib
+# Version required: 3.6
+# Date created: 28 Oct 1996
+# Whom: John Polstra <jdp@polstra.com>
+#
+# $Id$
+#
+
+DISTNAME= modula-3-lib-3.6
+CATEGORIES+= lang
+MASTER_SITES= ftp://freefall.FreeBSD.ORG/pub/FreeBSD/LOCAL_PORTS/
+DISTFILES= m3-fbsd-src-3.6.tar.gz m3-fbsd-m3cc-3.6.tar.gz
+# Note: Depending on what is already installed on the system, the code
+# below may add some more DISTFILES.
+
+MAINTAINER= jdp@polstra.com
+
+NO_WRKSUBDIR= yes
+
+# There are two distfiles that may or may not be needed, depending on
+# what is already installed on the system. First, we need an executable
+# for the Modula-3 compiler, in order to compile the new compiler, which
+# is written in Modula-3. Often, there will already be such an executable
+# installed on the system. Second, we need many files from gcc-2.7.2.1.
+# Often, we can find these in the system sources, under "/usr/src/contrib".
+#
+# This code tries to avoid fetching the distfiles, unless necessary.
+# We look on the system to see whether the necessary files are present,
+# and use those if we can. If we cannot find the needed files, we
+# fetch the distfiles.
+
+# For the Modula-3 compiler, we look in ${PREFIX} and in /usr/local.
+.ifdef PREFIX
+have_boot!= /bin/sh scripts/check_files files/T.boot installed ${PREFIX}
+.else
+have_boot=
+.endif
+.if empty(have_boot)
+have_boot!= /bin/sh scripts/check_files files/T.boot installed /usr/local
+.endif
+.if empty(have_boot)
+DISTFILES+= m3-fbsd-boot-3.6.tar.gz
+.endif
+
+# For gcc-2.7.2.1, we look in /usr/src/contrib.
+have_gcc!= /bin/sh scripts/check_files files/T.gcc m3cc /usr/src/contrib
+.if empty(have_gcc)
+DISTFILES+= m3-fbsd-gcc-3.6.tar.gz
+.endif
+
+# Startup script, run at boot time
+startup_dir= ${PREFIX}/etc/rc.d
+startup_script= ${startup_dir}/m3.sh
+
+# The Modula-3 build process insists on installing each individual
+# component immediately after that component is built. To avoid having
+# to do the entire build as root, we arrange for everything to first
+# be "installed" into the following directory, which we own.
+temp_prefix= ${WRKSRC}/installed
+
+post-extract:
+.if !empty(have_boot)
+ @echo "Copying bootstrap modula-3 compiler from ${have_boot}"
+ @/bin/sh ${SCRIPTDIR}/copy_files ${FILESDIR}/T.boot installed \
+ ${have_boot} ${WRKSRC}
+.endif
+.if !empty(have_gcc)
+ @echo "Copying gcc sources from ${have_gcc}"
+ @/bin/sh ${SCRIPTDIR}/copy_files ${FILESDIR}/T.gcc m3cc \
+ ${have_gcc} ${WRKSRC}
+.endif
+ @cd ${WRKSRC}/m3cc/gcc; \
+ chmod +x config.sub configure move-if-change
+
+do-build:
+ @test -d ${temp_prefix}/bin || mkdir -p ${temp_prefix}/bin
+ @test -d ${temp_prefix}/man/man1 || mkdir -p ${temp_prefix}/man/man1
+ @test -d ${temp_prefix}/lib/m3/pkg/m3build/templates || \
+ mkdir -p ${temp_prefix}/lib/m3/pkg/m3build/templates
+ @echo "++++++++++ quake ++++++++++"
+ @test -d ${WRKSRC}/m3/quake/FreeBSD2 || \
+ mkdir -p ${WRKSRC}/m3/quake/FreeBSD2
+ @cd ${WRKSRC}/m3/quake/FreeBSD2; \
+ make -f ../src/makefile TARGET=FreeBSD2 COPT=-O CDEBUG= ; \
+ cp -p quake ${temp_prefix}/bin; \
+ cp -p ../src/quake.1 ${temp_prefix}/man/man1
+ @echo "++++++++++ m3build ++++++++++"
+ @cd ${WRKSRC}/m3/m3build; \
+ PATH=${temp_prefix}/bin:$$PATH ./build FreeBSD2; \
+ cp -p FreeBSD2/m3build FreeBSD2/m3ship FreeBSD2/m3where \
+ ${temp_prefix}/bin; \
+ cp -p FreeBSD2/m3mkdir ${temp_prefix}/lib/m3/FreeBSD2; \
+ cp -p templates/CLEANUP templates/COMMON templates/COMMON.BOOT \
+ templates/FreeBSD2 templates/PLATFORMS templates/POSIX \
+ ${temp_prefix}/lib/m3/pkg/m3build/templates; \
+ cp -p FreeBSD2/m3build.1 FreeBSD2/m3ship.1 FreeBSD2/m3where.1 \
+ ${temp_prefix}/man/man1
+ @echo "++++++++++ m3cc ++++++++++"
+ @test -d ${WRKSRC}/m3cc/FreeBSD2 || mkdir -p ${WRKSRC}/m3cc/FreeBSD2
+ @cd ${WRKSRC}/m3cc/FreeBSD2; \
+ ../gcc/configure i486-unknown-freebsd; \
+ make m3cgc1 CC=cc CFLAGS=-O; \
+ cp -p m3cgc1 ${temp_prefix}/lib/m3/FreeBSD2
+ @echo "++++++++++ everything else ++++++++++"
+ @cd ${WRKSRC}/m3; \
+ LD_LIBRARY_PATH=${temp_prefix}/lib/m3/FreeBSD2:$$LD_LIBRARY_PATH; \
+ PATH=${temp_prefix}/bin:$$PATH; \
+ export LD_LIBRARY_PATH PATH; \
+ m3build
+
+pre-install:
+ @echo "Checking for conflicting shared libraries"
+ @PREFIX=${PREFIX} /bin/sh ${PKGDIR}/INSTALL ${PKGNAME} PRE-INSTALL
+
+do-install:
+ @echo "Installing shared libraries"
+ @cd ${temp_prefix}; \
+ umask 022; \
+ grep '^lib/m3/' ${PKGDIR}/PLIST | \
+ cpio -dump -R ${BINOWN}.${BINGRP} ${PREFIX}
+ @cd ${PREFIX}; \
+ grep '^lib/m3/' ${PKGDIR}/PLIST | xargs chmod go=u-w; \
+ find -X lib/m3 -type d | xargs chown ${BINOWN}.${BINGRP}; \
+ find -X lib/m3 -type d | xargs chmod 755
+ @if [ ! -f ${startup_script} ]; then \
+ echo "Installing ${startup_script} file"; \
+ test -d ${startup_dir} || mkdir -p ${startup_dir}; \
+ echo "#!/bin/sh" > ${startup_script}; \
+ echo "echo -n ' Modula-3'" >> ${startup_script}; \
+ echo "/sbin/ldconfig -m ${PREFIX}/lib/m3/FreeBSD2" \
+ >> ${startup_script}; \
+ chmod 755 ${startup_script}; \
+ fi
+ @echo "Running ldconfig"
+ @/sbin/ldconfig -m ${PREFIX}/lib/m3/FreeBSD2
+
+.include <bsd.port.mk>