4424b4c08b
* Introduce USE_GAMESGROUP, which causes the games user and group to be made available. * Retain SETGIDGAME as an alias for USE_GAMESGROUP. Describe it as deprecated. * Always define GAMES_USER, GAMES_GROUP, GAMEMODE, GAMEDIRMODE, and GAMEDATAMODE, regardless of whether USE_GAMESGROUP is turned on or not. * Define these variables in defaults/mk.conf instead of separately in every platform/*.mk file. The definitions used to be the same for each of these platforms anyway, except for some where they were randomly missing or commented out for no clear reason, leading to broken game packages. * Handle all these variables properly when unprivileged. * Update the comments/documentation for these variables. * Describe GAMEOWN and GAMEGRP as deprecated. These need to be retained as aliases for GAMES_USER and GAMES_GROUP respectively for supporting packages that use bsd.*.mk but should otherwise not be used. * Add GAMEDATA_PERMS and GAMEDIR_PERMS using GAMEDATAMODE and GAMEDIRMODE respectively. * Fix a bug I noticed that was improperly mixing the "games" group and "games" user. Things this does *not* do: - get rid of GAMES_USER, for which there should ultimately be no need. - move the declaration/documentation/default value of USE_GAMESGROUP to a suitable place. (It is currently where SETGIDGAME was, which is suboptimal.) - touch any of the games, all of which need updating with at least s/SETGIDGAME/USE_GAMESGROUP/ and probably more. - update the guide to explain how to handle games properly. Also, it would be nice if using GAMES_GROUP without setting USE_GAMESGROUP=yes caused an error but as far as I know there isn't any particularly good way to arrange this right now. Note that these changes may alter the build/install behavior of broken game packages, e.g. some may silently become setgid when they weren't before or things like that. If you run into any of this file a PR. While one might arguably bump the PKGREVISION of all games or other packages using any of these variables as a precaution, that seems like a bad idea. Instead, I think I will be bumping each game once it itself has been fixed up to do everything the right way.
129 lines
4.6 KiB
Makefile
129 lines
4.6 KiB
Makefile
# $NetBSD: Darwin.mk,v 1.43 2010/07/08 04:57:36 dholland Exp $
|
|
#
|
|
# Variable definitions for the Darwin operating system.
|
|
|
|
# OS, Kernel, Xcode Version
|
|
#
|
|
# Codename OS Kernel Xcode
|
|
# Cheetah 10.0.x 1.3.1
|
|
# Puma 10.1 1.4.1
|
|
# 10.1.x 5.x.y
|
|
# Jaguar 10.2.x 6.x.y
|
|
# Panther 10.3.x 7.x.y
|
|
# Tiger 10.4.x 8.x.y 2.x (gcc 4.0, 4.0.1 from 2.2)
|
|
# Leopard 10.5.x 9.x.y 3.x (gcc 4.0.1, 4.0.1 and 4.2.1 from 3.1)
|
|
# Snow Leopard 10.6.x 10.x.y 3.2+ (gcc 4.0.1 and 4.2.1)
|
|
|
|
.if !defined(CPP) || ${CPP} == "cpp"
|
|
CPP= ${CC} -E ${CPP_PRECOMP_FLAGS}
|
|
.endif
|
|
.if empty(MACHINE_PLATFORM:MDarwin-[0-8].*-*)
|
|
ECHO_N?= /bin/echo -n
|
|
.else
|
|
ECHO_N?= ${ECHO} -n
|
|
.endif
|
|
LDD?= /usr/bin/otool -L
|
|
IMAKE_MAKE?= ${MAKE} # program which gets invoked by imake
|
|
PKGLOCALEDIR?= share
|
|
PS?= /bin/ps
|
|
# XXX: default from defaults/mk.conf. Verify/correct for this platform
|
|
# and remove this comment.
|
|
SU?= /usr/bin/su
|
|
TYPE?= type # Shell builtin
|
|
IMAKEOPTS+= -DBuildHtmlManPages=NO
|
|
.if defined(UNPRIVILEGED) && !empty(UNPRIVILEGED:M[Yy][Ee][Ss])
|
|
IMAKEOPTS+= -DInstallFlags=-c # do not set user or group
|
|
.endif
|
|
|
|
.if !defined(PKGSRC_COMPILER) || !empty(PKGSRC_COMPILER:Mgcc)
|
|
# Use the GNU cpp, not the OS X cpp, don't look in "/usr/local/include"
|
|
# before "/usr/include".
|
|
CPP_PRECOMP_FLAGS?= -no-cpp-precomp -isystem /usr/include
|
|
# don't symlink to /usr/bin/gcc since the latter is a wrapper that tries
|
|
# evoke the real (architecture-dependent) gcc binary in the same place
|
|
# which fails when called via a symlink from a different directory
|
|
COMPILER_USE_SYMLINKS?= no
|
|
.endif
|
|
DEF_UMASK?= 0022
|
|
DEFAULT_SERIAL_DEVICE?= /dev/null
|
|
EXPORT_SYMBOLS_LDFLAGS?= # Don't add symbols to the dynamic symbol table
|
|
MOTIF_TYPE_DEFAULT?= openmotif # default 2.0 compatible libs type
|
|
NOLOGIN?= /usr/bin/false
|
|
PKG_TOOLS_BIN?= ${LOCALBASE}/sbin
|
|
ROOT_CMD?= /usr/bin/sudo ${SH} -c
|
|
ROOT_GROUP?= wheel
|
|
ROOT_USER?= root
|
|
SERIAL_DEVICES?= /dev/null
|
|
ULIMIT_CMD_datasize?= ulimit -d `ulimit -H -d`
|
|
ULIMIT_CMD_stacksize?= ulimit -s `ulimit -H -s`
|
|
ULIMIT_CMD_memorysize?= ulimit -m `ulimit -H -m`
|
|
|
|
GROUPADD?= ${LOCALBASE}/sbin/groupadd
|
|
USERADD?= ${LOCALBASE}/sbin/useradd
|
|
_PKG_USER_HOME?= /var/empty # to match other system accounts
|
|
_USER_DEPENDS= user>=20040801:../../sysutils/user_darwin
|
|
|
|
# imake installs manpages in weird places
|
|
# these values from /usr/X11R6/lib/X11/config/Imake.tmpl
|
|
IMAKE_MAN_SOURCE_PATH= man/man
|
|
IMAKE_MAN_SUFFIX= 1
|
|
IMAKE_LIBMAN_SUFFIX= 3
|
|
IMAKE_FILEMAN_SUFFIX= 5
|
|
IMAKE_GAMEMAN_SUFFIX= 6
|
|
IMAKE_MAN_DIR= ${IMAKE_MAN_SOURCE_PATH}1
|
|
IMAKE_LIBMAN_DIR= ${IMAKE_MAN_SOURCE_PATH}3
|
|
IMAKE_FILEMAN_DIR= ${IMAKE_MAN_SOURCE_PATH}5
|
|
IMAKE_GAMEMAN_DIR= ${IMAKE_MAN_SOURCE_PATH}6
|
|
IMAKE_MANNEWSUFFIX= ${IMAKE_MAN_SUFFIX}
|
|
IMAKE_MANINSTALL?= maninstall catinstall
|
|
|
|
_OPSYS_EMULDIR.darwin= # empty
|
|
|
|
.if ${OS_VERSION:R} >= 6
|
|
_OPSYS_HAS_INET6= yes # IPv6 is standard
|
|
.else
|
|
_OPSYS_HAS_INET6= no # IPv6 is not standard
|
|
.endif
|
|
_OPSYS_HAS_JAVA= yes # Java is standard
|
|
_OPSYS_HAS_MANZ= yes # MANZ controls gzipping of man pages
|
|
_OPSYS_HAS_OSSAUDIO= no # libossaudio is available
|
|
_OPSYS_PERL_REQD= 5.8.0 # base version of perl required
|
|
_OPSYS_PTHREAD_AUTO= yes # -lpthread not needed for pthreads
|
|
_OPSYS_LINKER_RPATH_FLAG= -L # darwin has no rpath, use -L instead
|
|
_OPSYS_COMPILER_RPATH_FLAG= -L # compiler flag to pass rpaths to linker
|
|
_OPSYS_SHLIB_TYPE= dylib # shared lib type
|
|
_PATCH_CAN_BACKUP= yes # native patch(1) can make backups
|
|
_PATCH_BACKUP_ARG?= -V simple -b -z # switch to patch(1) for backup suffix
|
|
_USE_RPATH= no # don't add rpath to LDFLAGS
|
|
|
|
# flags passed to the linker to extract all symbols from static archives.
|
|
# this is GNU ld.
|
|
_OPSYS_WHOLE_ARCHIVE_FLAG= -Wl,--whole-archive
|
|
_OPSYS_NO_WHOLE_ARCHIVE_FLAG= -Wl,--no-whole-archive
|
|
|
|
_OPSYS_CAN_CHECK_SHLIBS= no # can't use readelf in check/bsd.check-vars.mk
|
|
|
|
# The x86_64 "iconv" library is incomplete, please look here for details:
|
|
# http://www.mail-archive.com/gtk-list@gnome.org/msg28747.html
|
|
_INCOMPAT_ICONV= Darwin-*-x86_64
|
|
|
|
_STRIPFLAG_CC?= ${_INSTALL_UNSTRIPPED:D:U-Wl,-x} # cc(1) option to strip
|
|
_STRIPFLAG_INSTALL?= ${_INSTALL_UNSTRIPPED:D:U-s} # install(1) option to strip
|
|
|
|
# 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= /usr/sbin/sysctl -n kern.argmax
|
|
|
|
# Darwin 7.7.x has poll() in libc, but no poll.h. Try to help GNU
|
|
# configure packages that break because of this by pretending that
|
|
# there is no poll().
|
|
.if defined(GNU_CONFIGURE)
|
|
. if !exists(/usr/include/poll.h) && !exists(/usr/include/sys/poll.h)
|
|
CONFIGURE_ENV+= ac_cv_func_poll=no
|
|
. endif
|
|
.endif
|
|
|
|
# Use "/bin/ksh" for buildlink3 wrapper script to improve build performance.
|
|
.if empty(OS_VERSION:M[0-8].*) && exists(/bin/ksh)
|
|
WRAPPER_BIN_SH?= /bin/ksh
|
|
.endif
|