for manipulating PLISTs. This module is not used by default pending more widespread testing -- currently the variable _USE_PLIST_MODULE must be defined in /etc/mk.conf to enable its use. The main features of the new PLIST module are: (1) Splits out the PLIST-handling code from bsd.pkg.mk into a separate "plist" module. (2) Splits out giant, multi-line awk scripts stored in make variables into separate awk scripts that may be joined together to post-process PLISTs. Each of these awk scripts consolidates the processing for one set of files, e.g., man pages, info pages, etc., and is more easily commented than a make variable. (3) Splits out the print-PLIST code from the regular PLIST code since they have no common pieces (print-plist.mk vs. plist.mk). (4) Completely re-implements the shared-library handling to be more efficient. Along the way, this also fixes a problem for Mac OS X users where the PLISTs incorrectly contained absolute paths. (5) Completely re-implements the info-file handling so that we can migrate from INFO_FILES definitions to just adding info/foo.info entries in the static PLISTs. (6) Adds commented-out support for automatically compressed or decompressed info page entries based on the value of MANZ. These changes will be activated after texinfo.mk has been replaced by something that is built using the more modern primitives now available in pkgsrc. (7) Move the file compression logic into a separate script "doc-compress" that compresses or decompresses files while minding symlinks. This script is now called by bsd.pkg.mk to do the "autmoatic man page handling". In the future, it will also handle the "automatic info page handling" and possible others. In general, the idea is to move stuff out of the Makefiles and into separate files where we don't need to worry about quoting rules and where each file can have a separate history of commits. This simplifies the makefile logic (especially in terms of readability) and also simplifies maintenance of the code.
115 lines
4.2 KiB
Makefile
115 lines
4.2 KiB
Makefile
# $NetBSD: Darwin.mk,v 1.16 2006/01/12 23:43:57 jlam Exp $
|
|
#
|
|
# Variable definitions for the Darwin operating system.
|
|
|
|
.if !defined(CPP) || ${CPP} == "cpp"
|
|
CPP= ${CC} -E ${CPP_PRECOMP_FLAGS}
|
|
.endif
|
|
ECHO_N?= ${ECHO} -n
|
|
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.
|
|
RSH?= /usr/bin/rsh
|
|
SU?= /usr/bin/su
|
|
TYPE?= type # Shell builtin
|
|
IMAKEOPTS+= -DBuildHtmlManPages=NO
|
|
|
|
.if !defined(PKGSRC_COMPILER) || !empty(PKGSRC_COMPILER:Mgcc)
|
|
CPP_PRECOMP_FLAGS?= -no-cpp-precomp # use the GNU cpp, not the OS X cpp
|
|
.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?= ${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
|
|
_PKG_USER_SHELL?= /usr/bin/false # 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}
|
|
.if defined(_USE_PLIST_MODULE)
|
|
IMAKE_MANINSTALL?= maninstall catinstall
|
|
.endif
|
|
|
|
.if !defined(_USE_PLIST_MODULE)
|
|
_DO_SHLIB_CHECKS= yes # on installation, fixup PLIST for shared libs
|
|
.endif
|
|
.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
|
|
.if !defined(_USE_PLIST_MODULE)
|
|
_PREFORMATTED_MAN_DIR= cat # directory where catman pages are
|
|
.endif
|
|
_USE_GNU_GETTEXT= no # Don't use GNU gettext
|
|
_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
|
|
|
|
_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
|
|
|
|
LOCALBASE?= ${DESTDIR}/usr/pkg
|
|
|
|
# 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
|
|
|
|
# If games are to be installed setgid, then SETGIDGAME is set to 'yes'
|
|
# (it defaults to 'no' as per defaults/mk.conf).
|
|
# Set the group and mode to meaningful values in that case (defaults to
|
|
# BINOWN, BINGRP and BINMODE as per defaults/mk.conf).
|
|
# FIXME: Adjust to work on this system and enable the lines below.
|
|
#.if !(empty(SETGIDGAME:M[yY][eE][sS]))
|
|
#GAMEOWN= games
|
|
#GAMEGRP= games
|
|
#GAMEMODE= 2555
|
|
#.endif
|