diff options
Diffstat (limited to 'emulators/compat_netbsd/Makefile.common')
-rw-r--r-- | emulators/compat_netbsd/Makefile.common | 123 |
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 |