summaryrefslogtreecommitdiff
path: root/emulators/compat_netbsd/Makefile.common
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/compat_netbsd/Makefile.common')
-rw-r--r--emulators/compat_netbsd/Makefile.common123
1 files changed, 123 insertions, 0 deletions
diff --git a/emulators/compat_netbsd/Makefile.common b/emulators/compat_netbsd/Makefile.common
new file mode 100644
index 00000000000..9ca372db860
--- /dev/null
+++ b/emulators/compat_netbsd/Makefile.common
@@ -0,0 +1,123 @@
+# $NetBSD: Makefile.common,v 1.1 2007/08/21 22:49:25 jlam Exp $
+#
+# Common infrastructure for NetBSD compat* packages.
+#
+# This file should be included after EMUL_PLATFORMS and NETBSD_VERSION are
+# defined and before EMUL_PLATFORM is used.
+#
+
+PKGNAME= ${DISTNAME:S/-${EMUL_ARCH}-/-/}
+CATEGORIES= emulators
+MASTER_SITES= ${MASTER_SITE_LOCAL}
+EXTRACT_SUFX= .tar.bz2
+
+MAINTAINER= pkgsrc-users@NetBSD.org
+
+NO_SRC_ON_FTP= Already in MASTER_SITE_LOCAL
+
+NETBSD_PKG= yes
+NETBSD_VERSION_REQD= ${NETBSD_VERSION}
+
+.include "../../mk/bsd.prefs.mk"
+
+.if defined(NETBSD_COMPAT32) && defined(ACCEPTABLE_NETBSD)
+ONLY_FOR_PLATFORM+= ${ACCEPTABLE_NETBSD:S/$/-sparc64/}
+ONLY_FOR_PLATFORM+= ${ACCEPTABLE_NETBSD:S/$/-x86_64/}
+.endif
+
+NETBSD_PKGSRCDIR?= ${.CURDIR}/../${.CURDIR:T:S/^netbsd32_//}
+FILESDIR= ${NETBSD_PKGSRCDIR}/files
+PATCHDIR= ${NETBSD_PKGSRCDIR}/patches
+PKGDIR= ${NETBSD_PKGSRCDIR}
+
+.if ((${EMUL_ARCH} == "i386") && (${MACHINE_ARCH} == "x86_64")) || \
+ ((${EMUL_ARCH} == "sparc") && (${MACHINE_ARCH} == "sparc64"))
+PKGNAME:= ${PKGNAME:S/^/netbsd32_/}
+COMMENT:= ${COMMENT:S/NetBSD/NetBSD 32-bit/}
+NETBSD_BASE= netbsd32_
+.else
+NETBSD_BASE= # empty
+.endif
+
+BUILD_DIRS= # empty
+MAKE_DIRS+= ${EMULDIR}
+ELF_SYMLINKS_DATA= ${WRKDIR}/.symlinks-data
+
+#
+# PLISTs are composed from the following bits, in order:
+#
+# PLIST.${EMUL_ARCH} e.g. PLIST.alpha
+# PLIST.${EMUL_EXEC_FMT} e.g. PLIST.ELF
+# PLIST e.g. PLIST
+#
+.if exists(${PKGDIR}/PLIST.${EMUL_ARCH})
+PLIST_SRC+= ${PKGDIR}/PLIST.${EMUL_ARCH}
+.endif
+.if exists(${PKGDIR}/PLIST.${EMUL_EXEC_FMT})
+PLIST_SRC+= ${PKGDIR}/PLIST.${EMUL_EXEC_FMT}
+.endif
+.if exists(${PKGDIR}/PLIST)
+PLIST_SRC+= ${PKGDIR}/PLIST
+.endif
+
+#
+# Different combinations of the native executable format and the emulated
+# executable format require different ways of making the installed shared
+# libraries useful after installation.
+#
+# native emul action
+# ----- ---- ------
+# a.out a.out append to ld.so.conf and run ldconfig
+# ELF a.out run ldconfig
+# ELF ELF create symlinks to shlibs into base system
+# ELF64 ELF32 nothing
+#
+.if (${NATIVE_EXEC_FMT} == "a.out") && (${EMUL_EXEC_FMT} == "a.out")
+INSTALL_TEMPLATES+= ${PKGSRCDIR}/emulators/compat_netbsd/INSTALL.a.out
+
+.elif (${NATIVE_EXEC_FMT} == "ELF") && (${EMUL_EXEC_FMT} == "a.out")
+INSTALL_TEMPLATES+= ${PKGSRCDIR}/emulators/compat_netbsd/INSTALL.emulaout
+
+.elif defined(NETBSD_COMPAT32)
+INSTALL_TEMPLATES+= ${PKGSRCDIR}/emulators/compat_netbsd/INSTALL.emulnetbsd32
+
+.else # (${NATIVE_EXEC_FMT} == "ELF") && (${EMUL_EXEC_FMT} == "ELF")
+INSTALL_TEMPLATES+= ${PKGSRCDIR}/emulators/compat_netbsd/INSTALL.ELF
+INSTALL_TEMPLATES+= ${ELF_SYMLINKS_DATA}
+post-build: symlinks-data
+.endif
+
+DEINSTALL_TEMPLATES+= ${PKGSRCDIR}/emulators/compat_netbsd/DEINSTALL
+
+#
+# For ELF platforms, the INSTALL.ELF script needs SYMLINK data lines to
+# tell it which shared libraries need to be symlinked to where. Generate
+# this information from the PLIST.
+#
+.PHONY: symlinks-data
+symlinks-data: ${ELF_SYMLINKS_DATA}
+${ELF_SYMLINKS_DATA}: plist
+ ${RUN} ${CAT} ${PLIST} | ${AWK} \
+ 'BEGIN { print "#" } END { print "#" } /^@/ { next } \
+ { src = $$0; dst = src; sub("^${EMULSUBDIRSLASH}", "/", dst); \
+ print "# SYMLINK: " src " " dst }' > ${.TARGET}
+
+#
+# The compat* packages have a very strict package layout:
+#
+# ${WRKSRC}/lib
+# ${WRKSRC}/libexec
+# ${WRKSRC}/usr
+#
+# Each of these directories, if they exist, are copied directly into
+# ${EMULDIR}.
+#
+.PHONY: compat-install
+do-install: compat-install
+compat-install:
+ ${INSTALL_DATA_DIR} ${PREFIX}/${EMULSUBDIR}
+ cd ${WRKSRC} && for dir in lib libexec usr; do \
+ if ${TEST} -d "$$dir"; then \
+ ${PAX} -rw "$$dir" ${PREFIX}/${EMULSUBDIR}; \
+ fi; \
+ done