pkgsrc/mk/platform/NetBSD.mk

176 lines
5.3 KiB
Makefile
Raw Normal View History

# $NetBSD: NetBSD.mk,v 1.60 2020/03/22 21:17:30 joerg Exp $
#
# Variable definitions for the NetBSD operating system.
# Needed for 1.6.1 and earlier due to rpcgen bugs and paths
.if defined(CPP) && ${CPP} == "cpp"
CPP= /usr/bin/cpp
.endif
ECHO_N?= ${ECHO} -n
IMAKE_MAKE?= ${MAKE} # program which gets invoked by imake
PKGLOCALEDIR?= share
PS?= /bin/ps
SU?= /usr/bin/su
TYPE?= type # Shell builtin
# pax-as-tar, found on <=8, and optionally later, fails on many archives.
EXTRACT_USING?= bsdtar
USERADD?= /usr/sbin/useradd
GROUPADD?= /usr/sbin/groupadd
CPP_PRECOMP_FLAGS?= # unset
DEF_UMASK?= 0022
.if ${OBJECT_FMT} == "ELF"
EXPORT_SYMBOLS_LDFLAGS?=-Wl,-E # add symbols to the dynamic symbol table
.else
EXPORT_SYMBOLS_LDFLAGS?=-Wl,--export-dynamic
.endif
MOTIF_TYPE_DEFAULT?= motif # default 2.0 compatible libs type
NOLOGIN?= /sbin/nologin
# This must be lazy and using :? evaluation doesn't work due to a make bugs.
PKG_TOOLS_BIN_cmd= if [ -x ${LOCALBASE}/sbin/pkg_info ]; then echo ${LOCALBASE}/sbin; else echo /usr/sbin; fi
PKG_TOOLS_BIN?= ${PKG_TOOLS_BIN_cmd:sh}
ROOT_CMD?= ${SU} - root -c
ROOT_USER?= root
ROOT_GROUP?= wheel
ULIMIT_CMD_virtualsize?= ulimit -v `ulimit -H -v`
ULIMIT_CMD_datasize?= ulimit -d `ulimit -H -d`
ULIMIT_CMD_stacksize?= ulimit -s `ulimit -H -s`
ULIMIT_CMD_memorysize?= ulimit -m `ulimit -H -m`
ULIMIT_CMD_cputime?= ulimit -t `ulimit -H -t`
# Native X11 is only supported on NetBSD-5 and later.
# On NetBSD-5, native X11 has enough issues that we default
# to modular.
.if empty(MACHINE_PLATFORM:MNetBSD-[0-5].*)
X11_TYPE?= native
.endif
* Support netbsd-* as a valid platform in EMUL_PLATFORMS. Use the pkgsrc/emulator/compat* and pkgsrc/emulator/netbsd32_compat* packages to provide the necessary shared libraries to run dynamically linked NetBSD binaries from the days of yore. * Add some additional compat* packages for completeness: compat15, compat20, compat30 * Modify the compat* packages so that "compatNM" only provides files that aren't in "NetBSD-N.(M+1)". For example, compat12 only provides files that don't exist in NetBSD-1.3.x, compat13 only provides files that don't exist in NetBSD-1.4.x, etc. As a result, if you are running NetBSD-3.0/alpha and want to run a 1.3 dynamically linked binary, there is an automatic dependency chain that causes the following packages to be installed: compat13, compat14, compat15, compat16, compat20 There are some deviations from this dependency chain on platforms that have changed executable formats, e.g. i386, m68, sparc, etc. However, in general pkgsrc will require that you have the necessary COMPAT_* options in your kernel to match the installed compat* packages. This restriction is an artificial one imposed by pkgsrc, but allows for a single set of distfiles to be used on all versions of NetBSD. * Provide compat* package support for every supported architecture of NetBSD. Verily, it is now possible to run 1.2 binaries on NetBSD-1.5.3/pc532 by installing the compat12 package from pkgsrc. Rejoice, one and all! * The netbsd32_compat* packages mirror the corresponding compat* packages for use by sparc64 and x86_64 to allow running 32-bit binaries with COMPAT_NETBSD32 kernel support. The "extras" packages supply the additional shared libraries from the corresponding release of NetBSD so that the set of files in /emul/netbsd32 will be complete. * pkgsrc/emulators/compat_netbsd contains infrastructure files shared by all of the compat* packages.
2007-08-22 00:49:02 +02:00
_OPSYS_EMULDIR.aout= /emul/aout
_OPSYS_EMULDIR.darwin= /emul/darwin
* Add new emulator framework in pkgsrc/mk/emulator that handles all binary-only packages that require binary "emulation" on the native operating system. Please see pkgsrc/mk/emulator/README for more details. * Teach the plist framework to automatically use any existing PLIST.${EMUL_PLATFORM} as part of the default PLIST_SRC definition. * Convert all of the binary-only packages in pkgsrc to use the emulator framework. Most of them have been tested to install and deinstall correctly. This involves the following cleanup actions: * Remove use of custom PLIST code and use PLIST.${EMUL_PLATFORM} more consistently. * Simplify packages by using default INSTALL and DEINSTALL scripts instead of custom INSTALL/DEINSTALL code. * Remove "SUSE_COMPAT32" and "PKG_OPTIONS.suse" from pkgsrc. Packages only need to state exactly which emulations they support, and the framework handles any i386-on-x86_64 or sparc-on-sparc64 uses. * Remove "USE_NATIVE_LINUX" from pkgsrc. The framework will automatically detect when the package is installing on Linux. Specific changes to packages include: * Bump the PKGREVISIONs for all of the suse100* and suse91* packages due to changes in the +INSTALL/+DEINSTALL scripts used in all of the packages. * Remove pkgsrc/emulators/suse_linux, which is unused by any packages. * cad/lc -- remove custom code to create the distinfo file for all supported platforms; just use "emul-fetch" and "emul-distinfo" instead. * lang/Cg-compiler -- install the shared libraries under ${EMULDIR} instead of ${PREFIX}/lib so that compiled programs will find the shared libraries. * mail/thunderbird-bin-nightly -- update to latest binary distributions for supported platforms. * multimedia/ns-flash -- update Linux version to 9.0.48 as the older version is no longer available for interactive fetch. * security/uvscan -- set LD_LIBRARY_PATH explicitly so that it's not necessary to install library symlinks into ${EMULDIR}/usr/local/lib. * www/firefox-bin-flash -- update Linux version to 9.0.48 as the older version is no longer available for interactive fetch.
2007-07-29 07:18:36 +02:00
_OPSYS_EMULDIR.freebsd= /emul/freebsd
_OPSYS_EMULDIR.hpux= /emul/hpux
_OPSYS_EMULDIR.irix= /emul/irix
_OPSYS_EMULDIR.linux= /emul/linux
_OPSYS_EMULDIR.linux32= /emul/linux32
* Support netbsd-* as a valid platform in EMUL_PLATFORMS. Use the pkgsrc/emulator/compat* and pkgsrc/emulator/netbsd32_compat* packages to provide the necessary shared libraries to run dynamically linked NetBSD binaries from the days of yore. * Add some additional compat* packages for completeness: compat15, compat20, compat30 * Modify the compat* packages so that "compatNM" only provides files that aren't in "NetBSD-N.(M+1)". For example, compat12 only provides files that don't exist in NetBSD-1.3.x, compat13 only provides files that don't exist in NetBSD-1.4.x, etc. As a result, if you are running NetBSD-3.0/alpha and want to run a 1.3 dynamically linked binary, there is an automatic dependency chain that causes the following packages to be installed: compat13, compat14, compat15, compat16, compat20 There are some deviations from this dependency chain on platforms that have changed executable formats, e.g. i386, m68, sparc, etc. However, in general pkgsrc will require that you have the necessary COMPAT_* options in your kernel to match the installed compat* packages. This restriction is an artificial one imposed by pkgsrc, but allows for a single set of distfiles to be used on all versions of NetBSD. * Provide compat* package support for every supported architecture of NetBSD. Verily, it is now possible to run 1.2 binaries on NetBSD-1.5.3/pc532 by installing the compat12 package from pkgsrc. Rejoice, one and all! * The netbsd32_compat* packages mirror the corresponding compat* packages for use by sparc64 and x86_64 to allow running 32-bit binaries with COMPAT_NETBSD32 kernel support. The "extras" packages supply the additional shared libraries from the corresponding release of NetBSD so that the set of files in /emul/netbsd32 will be complete. * pkgsrc/emulators/compat_netbsd contains infrastructure files shared by all of the compat* packages.
2007-08-22 00:49:02 +02:00
_OPSYS_EMULDIR.netbsd= # empty
_OPSYS_EMULDIR.netbsd32= /emul/netbsd32
* Add new emulator framework in pkgsrc/mk/emulator that handles all binary-only packages that require binary "emulation" on the native operating system. Please see pkgsrc/mk/emulator/README for more details. * Teach the plist framework to automatically use any existing PLIST.${EMUL_PLATFORM} as part of the default PLIST_SRC definition. * Convert all of the binary-only packages in pkgsrc to use the emulator framework. Most of them have been tested to install and deinstall correctly. This involves the following cleanup actions: * Remove use of custom PLIST code and use PLIST.${EMUL_PLATFORM} more consistently. * Simplify packages by using default INSTALL and DEINSTALL scripts instead of custom INSTALL/DEINSTALL code. * Remove "SUSE_COMPAT32" and "PKG_OPTIONS.suse" from pkgsrc. Packages only need to state exactly which emulations they support, and the framework handles any i386-on-x86_64 or sparc-on-sparc64 uses. * Remove "USE_NATIVE_LINUX" from pkgsrc. The framework will automatically detect when the package is installing on Linux. Specific changes to packages include: * Bump the PKGREVISIONs for all of the suse100* and suse91* packages due to changes in the +INSTALL/+DEINSTALL scripts used in all of the packages. * Remove pkgsrc/emulators/suse_linux, which is unused by any packages. * cad/lc -- remove custom code to create the distinfo file for all supported platforms; just use "emul-fetch" and "emul-distinfo" instead. * lang/Cg-compiler -- install the shared libraries under ${EMULDIR} instead of ${PREFIX}/lib so that compiled programs will find the shared libraries. * mail/thunderbird-bin-nightly -- update to latest binary distributions for supported platforms. * multimedia/ns-flash -- update Linux version to 9.0.48 as the older version is no longer available for interactive fetch. * security/uvscan -- set LD_LIBRARY_PATH explicitly so that it's not necessary to install library symlinks into ${EMULDIR}/usr/local/lib. * www/firefox-bin-flash -- update Linux version to 9.0.48 as the older version is no longer available for interactive fetch.
2007-07-29 07:18:36 +02:00
_OPSYS_EMULDIR.osf1= /emul/osf1
_OPSYS_EMULDIR.solaris= /emul/svr4
_OPSYS_EMULDIR.solaris32= /emul/svr4_32
_OPSYS_EMULDIR.sunos= /emul/sunos
_OPSYS_SYSTEM_RPATH?= /usr/lib
_OPSYS_LIB_DIRS?= /usr/lib
_OPSYS_INCLUDE_DIRS?= /usr/include
.if exists(/usr/include/netinet6)
_OPSYS_HAS_INET6= yes # IPv6 is standard
.else
_OPSYS_HAS_INET6= no # IPv6 is not standard
.endif
_OPSYS_HAS_JAVA= no # Java is not standard
_OPSYS_HAS_MANZ= yes # MANZ controls gzipping of man pages
_OPSYS_HAS_OSSAUDIO= yes # libossaudio is available
_OPSYS_PERL_REQD= # no base version of perl required
_OPSYS_PTHREAD_AUTO= no # -lpthread needed for pthreads
_OPSYS_SHLIB_TYPE= ${_OPSYS_SHLIB_TYPE_cmd:sh} # shared library type
_OPSYS_SHLIB_TYPE_cmd= \
output=`/usr/bin/file /sbin/sysctl`; \
case $$output in \
*ELF*dynamically*) echo ELF ;; \
*shared*library*) echo a.out ;; \
*dynamically*) echo a.out ;; \
*) echo ELF ;; \
esac
_PATCH_CAN_BACKUP= yes # native patch(1) can make backups
_PATCH_BACKUP_ARG?= -V simple --suffix # switch to patch(1) for backup suffix
_USE_RPATH= yes # add rpath to LDFLAGS
_STRIPFLAG_CC?= ${_INSTALL_UNSTRIPPED:D:U-s} # cc(1) option to strip
_STRIPFLAG_INSTALL?= ${_INSTALL_UNSTRIPPED:D:U-s} # install(1) option to strip
.if (${MACHINE_ARCH} == alpha)
DEFAULT_SERIAL_DEVICE?= /dev/ttyC0
SERIAL_DEVICES?= /dev/ttyC0 \
/dev/ttyC1
.elif (${MACHINE_ARCH} == "i386")
DEFAULT_SERIAL_DEVICE?= /dev/tty00
SERIAL_DEVICES?= /dev/tty00 \
/dev/tty01
.elif (${MACHINE_ARCH} == m68k)
DEFAULT_SERIAL_DEVICE?= /dev/tty00
SERIAL_DEVICES?= /dev/tty00 \
/dev/tty01
.elif (${MACHINE_ARCH} == mipsel)
DEFAULT_SERIAL_DEVICE?= /dev/ttyC0
SERIAL_DEVICES?= /dev/ttyC0 \
/dev/ttyC1
.elif (${MACHINE_ARCH} == "sparc")
DEFAULT_SERIAL_DEVICE?= /dev/ttya
SERIAL_DEVICES?= /dev/ttya \
/dev/ttyb
.else
DEFAULT_SERIAL_DEVICE?= /dev/null
SERIAL_DEVICES?= /dev/null
.endif
For NetBSD/alpha versions >= 1.5V add -mieee to both CFLAGS and FFLAGS. This will pass -mieee to those package which obey CFLAGS and FFLAGS. paraphrasing an email from Ross: The executive summary is: if i386 uses it (and it does) then alpha should also, or some programs will SIGFPE out on alpha when they don't on i386. If anyone asks, the details are as follows: The actual effect of -mieee is to put a software completion code bit into every floating point instruction, and to put trap barrier instructions in the code as necessary to ensure that traps are delivered before branches or other instructions make it impossible to trace backwards to the trapping op. The code bits have little effect on the hardware, mainly what happens is that when the hardware and palcode deliver a trap, they tell the trap handler whether the faulting op had a completion code. If it did, the kernel is suppose to trace backwards, find the op, and interpret it in SW, doing all the wacky ieee stuff that most chips don't do, stuff like denormal arithmetic and the generation of magic values (infinity, NaN) and the sticky flags. We do all that now except for a couple of truly obscure things that SoftFloat didn't support and which I haven't yet added. (And these are things that happen ONLY when you are taking overflow and underflow traps, which no one has every really done AFAICT. If you have the default behavior of gradual underflow and nontrapping infinity generation, we do everything.) This brings up the question of -mieee libraries, but that's not a pkgsrc problem. (Except to the extent that I recommend that libraries from pkgsrc, like everything else, also be compiled with -mieee. And in the case of libraries, it might be worth individually modifying the Makefile for the "not easy" case.)
2002-01-24 15:58:07 +01:00
.if (${MACHINE_ARCH} == alpha)
For NetBSD/alpha versions >= 1.5V add -mieee to both CFLAGS and FFLAGS. This will pass -mieee to those package which obey CFLAGS and FFLAGS. paraphrasing an email from Ross: The executive summary is: if i386 uses it (and it does) then alpha should also, or some programs will SIGFPE out on alpha when they don't on i386. If anyone asks, the details are as follows: The actual effect of -mieee is to put a software completion code bit into every floating point instruction, and to put trap barrier instructions in the code as necessary to ensure that traps are delivered before branches or other instructions make it impossible to trace backwards to the trapping op. The code bits have little effect on the hardware, mainly what happens is that when the hardware and palcode deliver a trap, they tell the trap handler whether the faulting op had a completion code. If it did, the kernel is suppose to trace backwards, find the op, and interpret it in SW, doing all the wacky ieee stuff that most chips don't do, stuff like denormal arithmetic and the generation of magic values (infinity, NaN) and the sticky flags. We do all that now except for a couple of truly obscure things that SoftFloat didn't support and which I haven't yet added. (And these are things that happen ONLY when you are taking overflow and underflow traps, which no one has every really done AFAICT. If you have the default behavior of gradual underflow and nontrapping infinity generation, we do everything.) This brings up the question of -mieee libraries, but that's not a pkgsrc problem. (Except to the extent that I recommend that libraries from pkgsrc, like everything else, also be compiled with -mieee. And in the case of libraries, it might be worth individually modifying the Makefile for the "not easy" case.)
2002-01-24 15:58:07 +01:00
CFLAGS+= -mieee
FFLAGS+= -mieee
.endif
# check for kqueue(2) support, added in NetBSD-1.6J
.if exists(/usr/include/sys/event.h)
PKG_HAVE_KQUEUE= # defined
.endif
# Register support for FORTIFY (with GCC)
.if !empty(OS_VERSION:M[2-6].*)
# Disable on older versions, see:
# http://mail-index.netbsd.org/pkgsrc-users/2017/08/07/msg025435.html
.else
_OPSYS_SUPPORTS_FORTIFY=yes
.endif
# Register support for PIE on supported architectures (with GCC)
.if (${MACHINE_ARCH} == "i386") || \
(${MACHINE_ARCH} == "x86_64")
_OPSYS_SUPPORTS_MKPIE= yes
.endif
# Register support for RELRO on supported architectures
.if (${MACHINE_ARCH} == "i386") || \
(${MACHINE_ARCH} == "x86_64")
_OPSYS_SUPPORTS_RELRO= yes
.endif
# Register support for REPRO (with GCC)
_OPSYS_SUPPORTS_MKREPRO= yes
# Register support for SSP on most architectures (with GCC)
.if (${MACHINE_ARCH} != "alpha") && \
(${MACHINE_ARCH} != "hppa") && \
(${MACHINE_ARCH} != "ia64") && \
(${MACHINE_ARCH} != "mips")
_OPSYS_SUPPORTS_SSP= yes
.endif
# Register support for stack check on supported architectures (with GCC)
.if (${MACHINE_ARCH} == "i386") || \
(${MACHINE_ARCH} == "x86_64")
_OPSYS_SUPPORTS_STACK_CHECK= yes
.endif
2016-10-27 14:29:17 +02:00
_OPSYS_SUPPORTS_CWRAPPERS= yes
# use readelf in check/bsd.check-vars.mk
_OPSYS_CAN_CHECK_RELRO= yes
_OPSYS_CAN_CHECK_SHLIBS= yes
_OPSYS_CAN_CHECK_SSP= no # only supports libssp at this time
# check for maximum command line length and set it in configure's environment,
# to avoid a test required by the libtool script that takes forever.
_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax