3d8ef5a52d
many packages used to use ${PAX}. Use the common way of directly calling pax, it is created as tool after all.
140 lines
4.1 KiB
Text
140 lines
4.1 KiB
Text
# $NetBSD: Makefile.common,v 1.11 2008/05/26 02:13:18 joerg 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.
|
|
#
|
|
|
|
CATEGORIES= emulators
|
|
MASTER_SITES= ${MASTER_SITE_LOCAL:=${DIST_SUBDIR}${DIST_SUBDIR:D/}}
|
|
EXTRACT_SUFX= .tar.bz2
|
|
|
|
MAINTAINER= pkgsrc-users@NetBSD.org
|
|
|
|
PKG_DESTDIR_SUPPORT= destdir
|
|
|
|
NO_SRC_ON_FTP= Already in MASTER_SITE_LOCAL
|
|
|
|
USE_TOOLS+= pax
|
|
|
|
NETBSD_PKG= yes
|
|
EMUL_REQD= netbsd>=${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 defined(NETBSD_COMPAT32)
|
|
PKGNAME= netbsd32_${DISTNAME:S/-${EMUL_ARCH}-/-/}
|
|
COMMENT:= ${COMMENT:S/NetBSD/NetBSD 32-bit/}
|
|
NETBSD_BASE= netbsd32_
|
|
.else
|
|
PKGNAME= ${DISTNAME:S/-${EMUL_ARCH}-/-/}
|
|
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
|
|
|
|
# Set NATIVE_EXEC_FMT and EMUL_EXEC_FMT appropriately. Normally, these
|
|
# are set by mk/emulator.mk, included in bsd.pkg.mk, but this happens
|
|
# too late for us here.
|
|
#
|
|
# Directly set NATIVE_EXEC_FMT and include the correct emulator.mk file
|
|
# to define EMUL_EXEC_FMT.
|
|
#
|
|
NATIVE_EXEC_FMT= ${_NATIVE_EXEC_FMT_cmd:sh}
|
|
_NATIVE_EXEC_FMT_cmd= sh ${.CURDIR}/../../mk/scripts/shlib-type \
|
|
${_OPSYS_SHLIB_TYPE:Q} ${MAKE:Q}
|
|
|
|
.include "${PKGSRCDIR}/emulators/${COMPAT_PKG}/emulator.mk"
|
|
|
|
#
|
|
# 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} ${DESTDIR}${PREFIX}/${EMULSUBDIR}
|
|
cd ${WRKSRC} && for dir in lib libexec usr; do \
|
|
if ${TEST} -d "$$dir"; then \
|
|
pax -rw "$$dir" \
|
|
${DESTDIR}${PREFIX}/${EMULSUBDIR}; \
|
|
fi; \
|
|
done
|