Thu May 26 16:03:04 2016 UTC ()
Import mini-framework for paxctl(8) on NetBSD/{amd64,i386}

This allows setting flags for PaX on select binaries. Two new variables
are introduced for packages: NOT_PAX_ASLR_SAFE and NOT_PAX_MPROTECT_SAFE.
They both expect a list of binaries are known to not support PaX ASLR
and/or PaX MPROTECT, respectively.

"Please commit" wiz@


(khorben)
diff -r1.2018 -r1.2019 pkgsrc/mk/bsd.pkg.mk
diff -r0 -r1.1 pkgsrc/mk/pax.mk
diff -r1.57 -r1.58 pkgsrc/mk/tools/tools.NetBSD.mk

cvs diff -r1.2018 -r1.2019 pkgsrc/mk/bsd.pkg.mk (switch to unified diff)

--- pkgsrc/mk/bsd.pkg.mk 2016/03/23 11:50:01 1.2018
+++ pkgsrc/mk/bsd.pkg.mk 2016/05/26 16:03:04 1.2019
@@ -1,823 +1,827 @@ @@ -1,823 +1,827 @@
1# $NetBSD: bsd.pkg.mk,v 1.2018 2016/03/23 11:50:01 jperkin Exp $ 1# $NetBSD: bsd.pkg.mk,v 1.2019 2016/05/26 16:03:04 khorben Exp $
2# 2#
3# This file is in the public domain. 3# This file is in the public domain.
4# 4#
5# Please see the pkgsrc/doc/guide manual for details on the 5# Please see the pkgsrc/doc/guide manual for details on the
6# variables used in this make file template. 6# variables used in this make file template.
7# 7#
8# Default sequence for "all" is: 8# Default sequence for "all" is:
9# 9#
10# bootstrap-depends 10# bootstrap-depends
11# fetch 11# fetch
12# checksum 12# checksum
13# depends 13# depends
14# tools 14# tools
15# extract 15# extract
16# patch 16# patch
17# wrapper 17# wrapper
18# configure 18# configure
19# build 19# build
20# 20#
21 21
22.include "misc/common.mk" 22.include "misc/common.mk"
23 23
24############################################################################ 24############################################################################
25# Transform package Makefile variables and set defaults 25# Transform package Makefile variables and set defaults
26# This is the early set used directly or indirectly in 26# This is the early set used directly or indirectly in
27# the phase variables. 27# the phase variables.
28############################################################################ 28############################################################################
29 29
30##### PKGBASE, PKGNAME[_NOREV], PKGVERSION 30##### PKGBASE, PKGNAME[_NOREV], PKGVERSION
31 31
32PKGBASE?= ${PKGNAME:C/-[^-]*$//} 32PKGBASE?= ${PKGNAME:C/-[^-]*$//}
33PKGVERSION?= ${PKGNAME:C/^.*-//} 33PKGVERSION?= ${PKGNAME:C/^.*-//}
34.if defined(PKGREVISION) && !empty(PKGREVISION) && (${PKGREVISION} != "0") 34.if defined(PKGREVISION) && !empty(PKGREVISION) && (${PKGREVISION} != "0")
35. if defined(PKGNAME) 35. if defined(PKGNAME)
36PKGNAME_NOREV:= ${PKGNAME} 36PKGNAME_NOREV:= ${PKGNAME}
37PKGNAME:= ${PKGNAME}nb${PKGREVISION} 37PKGNAME:= ${PKGNAME}nb${PKGREVISION}
38. else 38. else
39PKGNAME?= ${DISTNAME}nb${PKGREVISION} 39PKGNAME?= ${DISTNAME}nb${PKGREVISION}
40PKGNAME_NOREV= ${DISTNAME} 40PKGNAME_NOREV= ${DISTNAME}
41. endif 41. endif
42.else 42.else
43PKGNAME?= ${DISTNAME} 43PKGNAME?= ${DISTNAME}
44PKGNAME_NOREV= ${PKGNAME} 44PKGNAME_NOREV= ${PKGNAME}
45.endif 45.endif
46PKGVERSION_NOREV= ${PKGNAME_NOREV:C/^.*-//} 46PKGVERSION_NOREV= ${PKGNAME_NOREV:C/^.*-//}
47 47
48# Fail-safe in the case of circular dependencies 48# Fail-safe in the case of circular dependencies
49.if defined(_PKGSRC_DEPS) && defined(PKGNAME) && !empty(_PKGSRC_DEPS:M${PKGNAME}) 49.if defined(_PKGSRC_DEPS) && defined(PKGNAME) && !empty(_PKGSRC_DEPS:M${PKGNAME})
50PKG_FAIL_REASON+= "Circular dependency detected" 50PKG_FAIL_REASON+= "Circular dependency detected"
51.endif 51.endif
52 52
53#### 53####
54 54
55############################################################################ 55############################################################################
56# Allow various phases to define the default variables 56# Allow various phases to define the default variables
57############################################################################ 57############################################################################
58.if defined(EMUL_PLATFORMS) && !empty(EMUL_PLATFORMS) 58.if defined(EMUL_PLATFORMS) && !empty(EMUL_PLATFORMS)
59. include "emulator/emulator.mk" 59. include "emulator/emulator.mk"
60.endif 60.endif
61 61
62.include "features/features.mk" 62.include "features/features.mk"
63 63
64.include "pkgformat/bsd.pkgformat-vars.mk" 64.include "pkgformat/bsd.pkgformat-vars.mk"
65.include "check/bsd.check-vars.mk" 65.include "check/bsd.check-vars.mk"
66.include "depends/bsd.depends-vars.mk" 66.include "depends/bsd.depends-vars.mk"
67.include "fetch/bsd.fetch-vars.mk" 67.include "fetch/bsd.fetch-vars.mk"
68.include "checksum/bsd.checksum-vars.mk" 68.include "checksum/bsd.checksum-vars.mk"
69.include "extract/bsd.extract-vars.mk" 69.include "extract/bsd.extract-vars.mk"
70.include "patch/bsd.patch-vars.mk" 70.include "patch/bsd.patch-vars.mk"
71.include "configure/bsd.configure-vars.mk" 71.include "configure/bsd.configure-vars.mk"
72.include "build/bsd.build-vars.mk" 72.include "build/bsd.build-vars.mk"
73.include "install/bsd.install-vars.mk" 73.include "install/bsd.install-vars.mk"
74 74
75.include "bsd.pkg.error.mk" 75.include "bsd.pkg.error.mk"
76 76
77.include "bsd.hacks.mk" 77.include "bsd.hacks.mk"
78 78
79############################################################################ 79############################################################################
80# Transform package Makefile variables and set defaults 80# Transform package Makefile variables and set defaults
81############################################################################ 81############################################################################
82 82
83MKCRYPTO?= YES # build crypto packages by default 83MKCRYPTO?= YES # build crypto packages by default
84 84
85##### Others 85##### Others
86 86
87BUILD_DEPENDS?= # empty 87BUILD_DEPENDS?= # empty
88COMMENT?= (no description) 88COMMENT?= (no description)
89DEPENDS?= # empty 89DEPENDS?= # empty
90DESCR_SRC?= ${PKGDIR}/DESCR 90DESCR_SRC?= ${PKGDIR}/DESCR
91INTERACTIVE_STAGE?= none 91INTERACTIVE_STAGE?= none
92.if defined(OWNER) 92.if defined(OWNER)
93MAINTAINER=${OWNER} 93MAINTAINER=${OWNER}
94.else 94.else
95MAINTAINER?= pkgsrc-users@NetBSD.org 95MAINTAINER?= pkgsrc-users@NetBSD.org
96.endif 96.endif
97PKGWILDCARD?= ${PKGBASE}-[0-9]* 97PKGWILDCARD?= ${PKGBASE}-[0-9]*
98TOOL_DEPENDS?= # empty 98TOOL_DEPENDS?= # empty
99.if defined(GITHUB_TAG) 99.if defined(GITHUB_TAG)
100WRKSRC?= ${WRKDIR}/${GITHUB_PROJECT}-${GITHUB_TAG:C/^v//} 100WRKSRC?= ${WRKDIR}/${GITHUB_PROJECT}-${GITHUB_TAG:C/^v//}
101.else 101.else
102WRKSRC?= ${WRKDIR}/${DISTNAME:U${PKGNAME_NOREV}} 102WRKSRC?= ${WRKDIR}/${DISTNAME:U${PKGNAME_NOREV}}
103.endif 103.endif
104 104
105# Override for SU_CMD user check 105# Override for SU_CMD user check
106_IS_ROOT_CMD?= ${TEST} `${ID} -u` = `${ID} -u ${_SU_ROOT_USER}` 106_IS_ROOT_CMD?= ${TEST} `${ID} -u` = `${ID} -u ${_SU_ROOT_USER}`
107_SU_ROOT_USER?= ${ROOT_USER} 107_SU_ROOT_USER?= ${ROOT_USER}
108REAL_ROOT_USER?= ${ROOT_USER} 108REAL_ROOT_USER?= ${ROOT_USER}
109REAL_ROOT_GROUP?= ${ROOT_GROUP} 109REAL_ROOT_GROUP?= ${ROOT_GROUP}
110 110
111.if (defined(INSTALL_UNSTRIPPED) && !empty(INSTALL_UNSTRIPPED:M[yY][eE][sS])) 111.if (defined(INSTALL_UNSTRIPPED) && !empty(INSTALL_UNSTRIPPED:M[yY][eE][sS]))
112_INSTALL_UNSTRIPPED= # set (flag used by platform/*.mk) 112_INSTALL_UNSTRIPPED= # set (flag used by platform/*.mk)
113.endif 113.endif
114 114
115##### Transform USE_* into dependencies 115##### Transform USE_* into dependencies
116 116
117.include "bsd.pkg.use.mk" 117.include "bsd.pkg.use.mk"
118 118
119############################################################################ 119############################################################################
120# Sanity checks 120# Sanity checks
121############################################################################ 121############################################################################
122 122
123.if defined(BUILDLINK_DEPTH) || defined(BUILDLINK_PACKAGES) || \ 123.if defined(BUILDLINK_DEPTH) || defined(BUILDLINK_PACKAGES) || \
124 defined(BUILDLINK_DEPENDS) || defined(BUILDLINK_ORDER) 124 defined(BUILDLINK_DEPENDS) || defined(BUILDLINK_ORDER)
125PKG_FAIL_REASON+= "Out-dated buildlink3.mk detected, please update" 125PKG_FAIL_REASON+= "Out-dated buildlink3.mk detected, please update"
126.endif 126.endif
127 127
128.if !defined(CATEGORIES) 128.if !defined(CATEGORIES)
129PKG_FAIL_REASON+='CATEGORIES are mandatory.' 129PKG_FAIL_REASON+='CATEGORIES are mandatory.'
130.endif 130.endif
131 131
132.if !defined(PKGNAME) && !defined(DISTNAME) 132.if !defined(PKGNAME) && !defined(DISTNAME)
133PKG_FAIL_REASON+='PKGNAME and/or DISTNAME are mandatory.' 133PKG_FAIL_REASON+='PKGNAME and/or DISTNAME are mandatory.'
134.endif 134.endif
135 135
136.if defined(PKG_PATH) 136.if defined(PKG_PATH)
137PKG_FAIL_REASON+='Please unset PKG_PATH before doing pkgsrc work!' 137PKG_FAIL_REASON+='Please unset PKG_PATH before doing pkgsrc work!'
138.endif 138.endif
139 139
140# Allow variables to be set on a per-OS basis 140# Allow variables to be set on a per-OS basis
141OPSYSVARS+= CFLAGS CXXFLAGS CPPFLAGS LDFLAGS LIBS 141OPSYSVARS+= CFLAGS CXXFLAGS CPPFLAGS LDFLAGS LIBS
142OPSYSVARS+= CMAKE_ARGS CONFIGURE_ARGS CONFIGURE_ENV 142OPSYSVARS+= CMAKE_ARGS CONFIGURE_ARGS CONFIGURE_ENV
143OPSYSVARS+= BUILDLINK_TRANSFORM SUBST_CLASSES 143OPSYSVARS+= BUILDLINK_TRANSFORM SUBST_CLASSES
144OPSYSVARS+= BUILD_TARGET MAKE_ENV MAKE_FLAGS USE_TOOLS 144OPSYSVARS+= BUILD_TARGET MAKE_ENV MAKE_FLAGS USE_TOOLS
145.for _var_ in ${OPSYSVARS:O} 145.for _var_ in ${OPSYSVARS:O}
146. if defined(${_var_}.${OPSYS}) 146. if defined(${_var_}.${OPSYS})
147${_var_}+= ${${_var_}.${OPSYS}} 147${_var_}+= ${${_var_}.${OPSYS}}
148. elif defined(${_var_}.*) 148. elif defined(${_var_}.*)
149${_var_}+= ${${_var_}.*} 149${_var_}+= ${${_var_}.*}
150. endif 150. endif
151.endfor 151.endfor
152 152
153CPPFLAGS+= ${CPP_PRECOMP_FLAGS} 153CPPFLAGS+= ${CPP_PRECOMP_FLAGS}
154 154
155# To sanitise environment set PKGSRC_SETENV=${SETENV} -i 155# To sanitise environment set PKGSRC_SETENV=${SETENV} -i
156# This will however cause build failures (e.g. "www/firefox"). Settings 156# This will however cause build failures (e.g. "www/firefox"). Settings
157# like "ALLOW_VULNERABLE_PACKAGES" will also not be correctly passed 157# like "ALLOW_VULNERABLE_PACKAGES" will also not be correctly passed
158# to dependence builds. 158# to dependence builds.
159PKGSRC_SETENV?= ${SETENV} 159PKGSRC_SETENV?= ${SETENV}
160 160
161ALL_ENV+= CC=${CC:Q} 161ALL_ENV+= CC=${CC:Q}
162ALL_ENV+= CFLAGS=${CFLAGS:M*:Q} 162ALL_ENV+= CFLAGS=${CFLAGS:M*:Q}
163ALL_ENV+= CPPFLAGS=${CPPFLAGS:M*:Q} 163ALL_ENV+= CPPFLAGS=${CPPFLAGS:M*:Q}
164ALL_ENV+= CXX=${CXX:Q} 164ALL_ENV+= CXX=${CXX:Q}
165ALL_ENV+= CXXFLAGS=${CXXFLAGS:M*:Q} 165ALL_ENV+= CXXFLAGS=${CXXFLAGS:M*:Q}
166ALL_ENV+= COMPILER_RPATH_FLAG=${COMPILER_RPATH_FLAG:Q} 166ALL_ENV+= COMPILER_RPATH_FLAG=${COMPILER_RPATH_FLAG:Q}
167ALL_ENV+= F77=${FC:Q} 167ALL_ENV+= F77=${FC:Q}
168ALL_ENV+= FC=${FC:Q} 168ALL_ENV+= FC=${FC:Q}
169ALL_ENV+= FFLAGS=${FFLAGS:M*:Q} 169ALL_ENV+= FFLAGS=${FFLAGS:M*:Q}
170ALL_ENV+= LANG=C 170ALL_ENV+= LANG=C
171ALL_ENV+= LC_ALL=C 171ALL_ENV+= LC_ALL=C
172ALL_ENV+= LC_COLLATE=C 172ALL_ENV+= LC_COLLATE=C
173ALL_ENV+= LC_CTYPE=C 173ALL_ENV+= LC_CTYPE=C
174ALL_ENV+= LC_MESSAGES=C 174ALL_ENV+= LC_MESSAGES=C
175ALL_ENV+= LC_MONETARY=C 175ALL_ENV+= LC_MONETARY=C
176ALL_ENV+= LC_NUMERIC=C 176ALL_ENV+= LC_NUMERIC=C
177ALL_ENV+= LC_TIME=C 177ALL_ENV+= LC_TIME=C
178ALL_ENV+= LDFLAGS=${LDFLAGS:M*:Q} 178ALL_ENV+= LDFLAGS=${LDFLAGS:M*:Q}
179ALL_ENV+= LINKER_RPATH_FLAG=${LINKER_RPATH_FLAG:Q} 179ALL_ENV+= LINKER_RPATH_FLAG=${LINKER_RPATH_FLAG:Q}
180ALL_ENV+= PATH=${PATH:Q}:${LOCALBASE}/bin:${X11BASE}/bin 180ALL_ENV+= PATH=${PATH:Q}:${LOCALBASE}/bin:${X11BASE}/bin
181ALL_ENV+= PREFIX=${PREFIX} 181ALL_ENV+= PREFIX=${PREFIX}
182ALL_ENV+= MAKELEVEL=0 182ALL_ENV+= MAKELEVEL=0
183 183
184# This variable can be added to MAKE_ENV to ease installation of packages 184# This variable can be added to MAKE_ENV to ease installation of packages
185# that use BSD-style Makefiles. 185# that use BSD-style Makefiles.
186BSD_MAKE_ENV= BINOWN=${BINOWN} BINGRP=${BINGRP} 186BSD_MAKE_ENV= BINOWN=${BINOWN} BINGRP=${BINGRP}
187BSD_MAKE_ENV+= GAMEOWN=${GAMEOWN} GAMEGRP=${GAMEGRP} 187BSD_MAKE_ENV+= GAMEOWN=${GAMEOWN} GAMEGRP=${GAMEGRP}
188BSD_MAKE_ENV+= MANOWN=${MANOWN} MANGRP=${MANGRP} 188BSD_MAKE_ENV+= MANOWN=${MANOWN} MANGRP=${MANGRP}
189BSD_MAKE_ENV+= SHAREOWN=${SHAREOWN} SHAREGRP=${SHAREGRP} 189BSD_MAKE_ENV+= SHAREOWN=${SHAREOWN} SHAREGRP=${SHAREGRP}
190BSD_MAKE_ENV+= DOCOWN=${DOCOWN} DOCGRP=${DOCGRP} 190BSD_MAKE_ENV+= DOCOWN=${DOCOWN} DOCGRP=${DOCGRP}
191BSD_MAKE_ENV+= BINMODE=${BINMODE} NONBINMODE=${NONBINMODE} 191BSD_MAKE_ENV+= BINMODE=${BINMODE} NONBINMODE=${NONBINMODE}
192BSD_MAKE_ENV+= BINDIR=${PREFIX}/bin 192BSD_MAKE_ENV+= BINDIR=${PREFIX}/bin
193BSD_MAKE_ENV+= INCSDIR=${PREFIX}/include 193BSD_MAKE_ENV+= INCSDIR=${PREFIX}/include
194BSD_MAKE_ENV+= LIBDIR=${PREFIX}/lib 194BSD_MAKE_ENV+= LIBDIR=${PREFIX}/lib
195BSD_MAKE_ENV+= MANDIR=${PREFIX}/${PKGMANDIR} 195BSD_MAKE_ENV+= MANDIR=${PREFIX}/${PKGMANDIR}
196BSD_MAKE_ENV+= STRIPFLAG=${_STRIPFLAG_INSTALL:Q} 196BSD_MAKE_ENV+= STRIPFLAG=${_STRIPFLAG_INSTALL:Q}
197BSD_MAKE_ENV+= MANINSTALL=${MANINSTALL:Q} 197BSD_MAKE_ENV+= MANINSTALL=${MANINSTALL:Q}
198BSD_MAKE_ENV+= MKCATPAGES=${MKCATPAGES:Q} 198BSD_MAKE_ENV+= MKCATPAGES=${MKCATPAGES:Q}
199BSD_MAKE_ENV+= MKHTML=no 199BSD_MAKE_ENV+= MKHTML=no
200 200
201_BUILD_DEFS= ${BUILD_DEFS} 201_BUILD_DEFS= ${BUILD_DEFS}
202_BUILD_DEFS+= LOCALBASE 202_BUILD_DEFS+= LOCALBASE
203_BUILD_DEFS+= PKGGNUDIR 203_BUILD_DEFS+= PKGGNUDIR
204_BUILD_DEFS+= PKGINFODIR 204_BUILD_DEFS+= PKGINFODIR
205_BUILD_DEFS+= PKGMANDIR 205_BUILD_DEFS+= PKGMANDIR
206_BUILD_DEFS+= _USE_DESTDIR 206_BUILD_DEFS+= _USE_DESTDIR
207 207
208# Store the result in the +BUILD_INFO file so we can query for the build 208# Store the result in the +BUILD_INFO file so we can query for the build
209# options using "pkg_info -Q PKG_OPTIONS <pkg>". 209# options using "pkg_info -Q PKG_OPTIONS <pkg>".
210# 210#
211.if defined(PKG_SUPPORTED_OPTIONS) && defined(PKG_OPTIONS) 211.if defined(PKG_SUPPORTED_OPTIONS) && defined(PKG_OPTIONS)
212_BUILD_DEFS+= PKG_OPTIONS 212_BUILD_DEFS+= PKG_OPTIONS
213.endif 213.endif
214 214
215# Store the build options for multi-packages, i.e. packages that can 215# Store the build options for multi-packages, i.e. packages that can
216# be built with multiple versions of Apache, Python, Ruby, PHP etc. 216# be built with multiple versions of Apache, Python, Ruby, PHP etc.
217# 217#
218.if defined(MULTI) 218.if defined(MULTI)
219_BUILD_DEFS+= MULTI 219_BUILD_DEFS+= MULTI
220.endif 220.endif
221 221
222# ZERO_FILESIZE_P exits with a successful return code if the given file 222# ZERO_FILESIZE_P exits with a successful return code if the given file
223# has zero length. 223# has zero length.
224# NONZERO_FILESIZE_P exits with a successful return code if the given file 224# NONZERO_FILESIZE_P exits with a successful return code if the given file
225# has nonzero length. 225# has nonzero length.
226# 226#
227_ZERO_FILESIZE_P= ${AWK} 'END { exit (NR > 0) ? 1 : 0; }' 227_ZERO_FILESIZE_P= ${AWK} 'END { exit (NR > 0) ? 1 : 0; }'
228_NONZERO_FILESIZE_P= ${AWK} 'END { exit (NR > 0) ? 0 : 1; }' 228_NONZERO_FILESIZE_P= ${AWK} 'END { exit (NR > 0) ? 0 : 1; }'
229 229
230# Automatically increase process limit where necessary for building. 230# Automatically increase process limit where necessary for building.
231_ULIMIT_CMD= ${UNLIMIT_RESOURCES:@_lim_@${ULIMIT_CMD_${_lim_}};@} 231_ULIMIT_CMD= ${UNLIMIT_RESOURCES:@_lim_@${ULIMIT_CMD_${_lim_}};@}
232 232
233_NULL_COOKIE= ${WRKDIR}/.null 233_NULL_COOKIE= ${WRKDIR}/.null
234 234
235# Miscellaneous overridable commands: 235# Miscellaneous overridable commands:
236SHCOMMENT?= ${ECHO_MSG} >/dev/null '***' 236SHCOMMENT?= ${ECHO_MSG} >/dev/null '***'
237 237
238LIBABISUFFIX?= 238LIBABISUFFIX?=
239 239
240TOUCH_FLAGS?= -f 240TOUCH_FLAGS?= -f
241 241
242# A few aliases for *-install targets 242# A few aliases for *-install targets
243INSTALL= ${TOOLS_INSTALL} # XXX override sys.mk 243INSTALL= ${TOOLS_INSTALL} # XXX override sys.mk
244INSTALL_PROGRAM?= \ 244INSTALL_PROGRAM?= \
245 ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} 245 ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
246INSTALL_GAME?= \ 246INSTALL_GAME?= \
247 ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEMODE} 247 ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEMODE}
248INSTALL_SCRIPT?= \ 248INSTALL_SCRIPT?= \
249 ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} 249 ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
250INSTALL_LIB?= \ 250INSTALL_LIB?= \
251 ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} 251 ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
252INSTALL_DATA?= \ 252INSTALL_DATA?= \
253 ${INSTALL} ${COPY} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} 253 ${INSTALL} ${COPY} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE}
254INSTALL_GAME_DATA?= \ 254INSTALL_GAME_DATA?= \
255 ${INSTALL} ${COPY} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDATAMODE} 255 ${INSTALL} ${COPY} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDATAMODE}
256INSTALL_MAN?= \ 256INSTALL_MAN?= \
257 ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} 257 ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
258INSTALL_PROGRAM_DIR?= \ 258INSTALL_PROGRAM_DIR?= \
259 ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m ${PKGDIRMODE} 259 ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m ${PKGDIRMODE}
260INSTALL_GAME_DIR?= \ 260INSTALL_GAME_DIR?= \
261 ${INSTALL} -d -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDIRMODE} 261 ${INSTALL} -d -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDIRMODE}
262INSTALL_SCRIPT_DIR?= \ 262INSTALL_SCRIPT_DIR?= \
263 ${INSTALL_PROGRAM_DIR} 263 ${INSTALL_PROGRAM_DIR}
264INSTALL_LIB_DIR?= \ 264INSTALL_LIB_DIR?= \
265 ${INSTALL_PROGRAM_DIR} 265 ${INSTALL_PROGRAM_DIR}
266INSTALL_DATA_DIR?= \ 266INSTALL_DATA_DIR?= \
267 ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${PKGDIRMODE} 267 ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${PKGDIRMODE}
268INSTALL_MAN_DIR?= \ 268INSTALL_MAN_DIR?= \
269 ${INSTALL} -d -o ${MANOWN} -g ${MANGRP} -m ${PKGDIRMODE} 269 ${INSTALL} -d -o ${MANOWN} -g ${MANGRP} -m ${PKGDIRMODE}
270 270
271INSTALL_MACROS= BSD_INSTALL_PROGRAM=${INSTALL_PROGRAM:Q} \ 271INSTALL_MACROS= BSD_INSTALL_PROGRAM=${INSTALL_PROGRAM:Q} \
272 BSD_INSTALL_SCRIPT=${INSTALL_SCRIPT:Q} \ 272 BSD_INSTALL_SCRIPT=${INSTALL_SCRIPT:Q} \
273 BSD_INSTALL_LIB=${INSTALL_LIB:Q} \ 273 BSD_INSTALL_LIB=${INSTALL_LIB:Q} \
274 BSD_INSTALL_DATA=${INSTALL_DATA:Q} \ 274 BSD_INSTALL_DATA=${INSTALL_DATA:Q} \
275 BSD_INSTALL_MAN=${INSTALL_MAN:Q} \ 275 BSD_INSTALL_MAN=${INSTALL_MAN:Q} \
276 BSD_INSTALL=${INSTALL:Q} \ 276 BSD_INSTALL=${INSTALL:Q} \
277 BSD_INSTALL_PROGRAM_DIR=${INSTALL_PROGRAM_DIR:Q} \ 277 BSD_INSTALL_PROGRAM_DIR=${INSTALL_PROGRAM_DIR:Q} \
278 BSD_INSTALL_SCRIPT_DIR=${INSTALL_SCRIPT_DIR:Q} \ 278 BSD_INSTALL_SCRIPT_DIR=${INSTALL_SCRIPT_DIR:Q} \
279 BSD_INSTALL_LIB_DIR=${INSTALL_LIB_DIR:Q} \ 279 BSD_INSTALL_LIB_DIR=${INSTALL_LIB_DIR:Q} \
280 BSD_INSTALL_DATA_DIR=${INSTALL_DATA_DIR:Q} \ 280 BSD_INSTALL_DATA_DIR=${INSTALL_DATA_DIR:Q} \
281 BSD_INSTALL_MAN_DIR=${INSTALL_MAN_DIR:Q} \ 281 BSD_INSTALL_MAN_DIR=${INSTALL_MAN_DIR:Q} \
282 BSD_INSTALL_GAME=${INSTALL_GAME:Q} \ 282 BSD_INSTALL_GAME=${INSTALL_GAME:Q} \
283 BSD_INSTALL_GAME_DATA=${INSTALL_GAME_DATA:Q} \ 283 BSD_INSTALL_GAME_DATA=${INSTALL_GAME_DATA:Q} \
284 BSD_INSTALL_GAME_DIR=${INSTALL_GAME_DIR:Q} 284 BSD_INSTALL_GAME_DIR=${INSTALL_GAME_DIR:Q}
285MAKE_ENV+= ${INSTALL_MACROS:M*} 285MAKE_ENV+= ${INSTALL_MACROS:M*}
286SCRIPTS_ENV+= ${INSTALL_MACROS:M*} 286SCRIPTS_ENV+= ${INSTALL_MACROS:M*}
287 287
288# If pkgsrc is supposed to ensure that tests are run before installation 288# If pkgsrc is supposed to ensure that tests are run before installation
289# of the package, then the build targets should be "build test", otherwise 289# of the package, then the build targets should be "build test", otherwise
290# just "build" suffices. 290# just "build" suffices.
291# 291#
292.if !empty(PKGSRC_RUN_TEST:M[yY][eE][sS]) 292.if !empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
293_PKGSRC_BUILD_TARGETS= build test 293_PKGSRC_BUILD_TARGETS= build test
294.else 294.else
295_PKGSRC_BUILD_TARGETS= build 295_PKGSRC_BUILD_TARGETS= build
296.endif 296.endif
297 297
298# OVERRIDE_DIRDEPTH represents the common directory depth under 298# OVERRIDE_DIRDEPTH represents the common directory depth under
299# ${WRKSRC} up to which we find the files that need to be 299# ${WRKSRC} up to which we find the files that need to be
300# overridden. By default, we search two levels down, i.e., 300# overridden. By default, we search two levels down, i.e.,
301# */*/file. 301# */*/file.
302# 302#
303OVERRIDE_DIRDEPTH?= 2 303OVERRIDE_DIRDEPTH?= 2
304 304
305# Handle alternatives 305# Handle alternatives
306# 306#
307.include "alternatives.mk" 307.include "alternatives.mk"
308 308
309# Handle alternative init systems 309# Handle alternative init systems
310# 310#
311.if ${INIT_SYSTEM} == "smf" 311.if ${INIT_SYSTEM} == "smf"
312. include "smf.mk" 312. include "smf.mk"
313.endif 313.endif
314 314
315# Define SMART_MESSAGES in /etc/mk.conf for messages giving the tree 315# Define SMART_MESSAGES in /etc/mk.conf for messages giving the tree
316# of dependencies for building, and the current target. 316# of dependencies for building, and the current target.
317_PKGSRC_IN?= ===${SMART_MESSAGES:D> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] ===} 317_PKGSRC_IN?= ===${SMART_MESSAGES:D> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] ===}
318 318
319# Used to print all the '===>' style prompts - override this to turn them off. 319# Used to print all the '===>' style prompts - override this to turn them off.
320ECHO_MSG?= ${ECHO} 320ECHO_MSG?= ${ECHO}
321PHASE_MSG?= ${ECHO_MSG} ${_PKGSRC_IN:Q}\> 321PHASE_MSG?= ${ECHO_MSG} ${_PKGSRC_IN:Q}\>
322STEP_MSG?= ${ECHO_MSG} "=>" 322STEP_MSG?= ${ECHO_MSG} "=>"
323INFO_MSG?= ${ECHO_MSG} "INFO:" 323INFO_MSG?= ${ECHO_MSG} "INFO:"
324WARNING_MSG?= ${ECHO_MSG} 1>&2 "WARNING:" 324WARNING_MSG?= ${ECHO_MSG} 1>&2 "WARNING:"
325ERROR_MSG?= ${ECHO_MSG} 1>&2 "ERROR:" 325ERROR_MSG?= ${ECHO_MSG} 1>&2 "ERROR:"
326FAIL_MSG?= ${FAIL} ${ERROR_MSG} 326FAIL_MSG?= ${FAIL} ${ERROR_MSG}
327 327
328WARNING_CAT?= ${SED} -e "s|^|WARNING: |" 1>&2 328WARNING_CAT?= ${SED} -e "s|^|WARNING: |" 1>&2
329ERROR_CAT?= ${SED} -e "s|^|ERROR: |" 1>&2 329ERROR_CAT?= ${SED} -e "s|^|ERROR: |" 1>&2
330 330
331# How to do nothing. Override if you, for some strange reason, would rather 331# How to do nothing. Override if you, for some strange reason, would rather
332# do something. 332# do something.
333DO_NADA?= ${TRUE} 333DO_NADA?= ${TRUE}
334 334
335# the FAIL command executes its arguments and then exits with a non-zero 335# the FAIL command executes its arguments and then exits with a non-zero
336# status. 336# status.
337FAIL?= ${SH} ${PKGSRCDIR}/mk/scripts/fail 337FAIL?= ${SH} ${PKGSRCDIR}/mk/scripts/fail
338 338
339# 339#
340# Config file related settings - see doc/pkgsrc.txt 340# Config file related settings - see doc/pkgsrc.txt
341# 341#
342PKG_SYSCONFVAR?= ${PKGBASE} 342PKG_SYSCONFVAR?= ${PKGBASE}
343PKG_SYSCONFSUBDIR?= # empty 343PKG_SYSCONFSUBDIR?= # empty
344PKG_SYSCONFBASEDIR= ${PKG_SYSCONFBASE} 344PKG_SYSCONFBASEDIR= ${PKG_SYSCONFBASE}
345.if empty(PKG_SYSCONFSUBDIR) 345.if empty(PKG_SYSCONFSUBDIR)
346DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR} 346DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR}
347.else 347.else
348DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR}/${PKG_SYSCONFSUBDIR} 348DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR}/${PKG_SYSCONFSUBDIR}
349.endif 349.endif
350PKG_SYSCONFDIR= ${DFLT_PKG_SYSCONFDIR} 350PKG_SYSCONFDIR= ${DFLT_PKG_SYSCONFDIR}
351.if defined(PKG_SYSCONFDIR.${PKG_SYSCONFVAR}) 351.if defined(PKG_SYSCONFDIR.${PKG_SYSCONFVAR})
352PKG_SYSCONFDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}} 352PKG_SYSCONFDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
353PKG_SYSCONFBASEDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}} 353PKG_SYSCONFBASEDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
354.endif 354.endif
355PKG_SYSCONFDIR_PERMS?= ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 755 355PKG_SYSCONFDIR_PERMS?= ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 755
356 356
357ALL_ENV+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR:Q} 357ALL_ENV+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR:Q}
358_BUILD_DEFS+= PKG_SYSCONFBASEDIR PKG_SYSCONFDIR 358_BUILD_DEFS+= PKG_SYSCONFBASEDIR PKG_SYSCONFDIR
359 359
360# These are all of the tools use by pkgsrc Makefiles. This should 360# These are all of the tools use by pkgsrc Makefiles. This should
361# eventually be split up into lists of tools required by different 361# eventually be split up into lists of tools required by different
362# phases of a pkgsrc build. 362# phases of a pkgsrc build.
363# 363#
364USE_TOOLS+= \ 364USE_TOOLS+= \
365 [ awk basename cat chgrp chmod chown cmp cp cut dirname echo \ 365 [ awk basename cat chgrp chmod chown cmp cp cut dirname echo \
366 egrep env false fgrep find grep head hostname id install ln ls \ 366 egrep env false fgrep find grep head hostname id install ln ls \
367 mkdir mv printf pwd rm rmdir sed sh sort \ 367 mkdir mv printf pwd rm rmdir sed sh sort \
368 tail test touch tr true wc xargs 368 tail test touch tr true wc xargs
369 369
370# bsd.wrapper.mk 370# bsd.wrapper.mk
371USE_TOOLS+= expr 371USE_TOOLS+= expr
372 372
373# scripts/shlib-type 373# scripts/shlib-type
374.if ${_OPSYS_SHLIB_TYPE} == "ELF/a.out" 374.if ${_OPSYS_SHLIB_TYPE} == "ELF/a.out"
375USE_TOOLS+= file 375USE_TOOLS+= file
376.endif 376.endif
377 377
378# INSTALL/DEINSTALL script framework 378# INSTALL/DEINSTALL script framework
379.include "pkginstall/bsd.pkginstall.mk" 379.include "pkginstall/bsd.pkginstall.mk"
380 380
381# Locking 381# Locking
382.include "internal/locking.mk" 382.include "internal/locking.mk"
383 383
384# Tools 384# Tools
385.include "tools/bsd.tools.mk" 385.include "tools/bsd.tools.mk"
386 386
387# Barrier 387# Barrier
388.include "bsd.pkg.barrier.mk" 388.include "bsd.pkg.barrier.mk"
389 389
390# Unprivileged builds 390# Unprivileged builds
391.include "unprivileged.mk" 391.include "unprivileged.mk"
392 392
393# If NO_BUILD is defined, default to not needing a compiler. 393# If NO_BUILD is defined, default to not needing a compiler.
394.if defined(NO_BUILD) 394.if defined(NO_BUILD)
395USE_LANGUAGES?= # empty 395USE_LANGUAGES?= # empty
396.endif 396.endif
397 397
398# Get the proper dependencies and set the PATH to use the compiler 398# Get the proper dependencies and set the PATH to use the compiler
399# named in PKGSRC_COMPILER. 399# named in PKGSRC_COMPILER.
400# 400#
401.include "compiler.mk" 401.include "compiler.mk"
402 402
403#Fake up a home directory 403#Fake up a home directory
404WRAPPER_TARGETS+= fake-home 404WRAPPER_TARGETS+= fake-home
405FAKEHOMEDIR= ${WRKDIR}/.home 405FAKEHOMEDIR= ${WRKDIR}/.home
406ALL_ENV+= HOME=${FAKEHOMEDIR} 406ALL_ENV+= HOME=${FAKEHOMEDIR}
407.PHONY: fake-home 407.PHONY: fake-home
408fake-home: ${FAKEHOMEDIR} 408fake-home: ${FAKEHOMEDIR}
409${FAKEHOMEDIR}: 409${FAKEHOMEDIR}:
410 ${RUN} ${MKDIR} ${.TARGET} 410 ${RUN} ${MKDIR} ${.TARGET}
411 411
412# Use C-based wrappers or legacy shell versions. 412# Use C-based wrappers or legacy shell versions.
413.if ${_USE_CWRAPPERS} == "yes" 413.if ${_USE_CWRAPPERS} == "yes"
414.include "cwrappers.mk" 414.include "cwrappers.mk"
415.else 415.else
416.include "wrapper/bsd.wrapper.mk" 416.include "wrapper/bsd.wrapper.mk"
417.endif 417.endif
418 418
419.if defined(ABI_DEPENDS) || defined(BUILD_ABI_DEPENDS) 419.if defined(ABI_DEPENDS) || defined(BUILD_ABI_DEPENDS)
420. if !empty(USE_ABI_DEPENDS:M[yY][eE][sS]) 420. if !empty(USE_ABI_DEPENDS:M[yY][eE][sS])
421DEPENDS+= ${ABI_DEPENDS} 421DEPENDS+= ${ABI_DEPENDS}
422BUILD_DEPENDS+= ${BUILD_ABI_DEPENDS} 422BUILD_DEPENDS+= ${BUILD_ABI_DEPENDS}
423. else 423. else
424_BUILD_DEFS+= USE_ABI_DEPENDS 424_BUILD_DEFS+= USE_ABI_DEPENDS
425. endif 425. endif
426.endif 426.endif
427 427
428.if !defined(_PATH_ORIG) 428.if !defined(_PATH_ORIG)
429_PATH_ORIG:= ${PATH} 429_PATH_ORIG:= ${PATH}
430MAKEFLAGS+= _PATH_ORIG=${_PATH_ORIG:Q} 430MAKEFLAGS+= _PATH_ORIG=${_PATH_ORIG:Q}
431.endif 431.endif
432 432
433.if !empty(PREPEND_PATH:M*) 433.if !empty(PREPEND_PATH:M*)
434# This is very Special. Because PREPEND_PATH is set with += in reverse order, 434# This is very Special. Because PREPEND_PATH is set with += in reverse order,
435# this command reverses the order again (since bootstrap bmake doesn't 435# this command reverses the order again (since bootstrap bmake doesn't
436# yet support the :[-1..1] construct). 436# yet support the :[-1..1] construct).
437_PATH_CMD= \ 437_PATH_CMD= \
438 path=${_PATH_ORIG:Q}; \ 438 path=${_PATH_ORIG:Q}; \
439 for i in ${PREPEND_PATH}; do path="$$i:$$path"; done; \ 439 for i in ${PREPEND_PATH}; do path="$$i:$$path"; done; \
440 ${ECHO} "$$path" 440 ${ECHO} "$$path"
441PATH= ${_PATH_CMD:sh} # DOES NOT use :=, to defer evaluation 441PATH= ${_PATH_CMD:sh} # DOES NOT use :=, to defer evaluation
442.endif 442.endif
443 443
444################################################################ 444################################################################
445# Many ways to disable a package. 445# Many ways to disable a package.
446# 446#
447# Ignore packages that can't be resold if building for a CDROM. 447# Ignore packages that can't be resold if building for a CDROM.
448# 448#
449# Don't build a package if it's restricted and we don't want to 449# Don't build a package if it's restricted and we don't want to
450# get into that. 450# get into that.
451# 451#
452# Don't build any package that utilizes strong cryptography, for 452# Don't build any package that utilizes strong cryptography, for
453# when the law of the land forbids it. 453# when the law of the land forbids it.
454# 454#
455# Don't attempt to build packages against X if we don't have X. 455# Don't attempt to build packages against X if we don't have X.
456# 456#
457# Don't build a package if it's broken. 457# Don't build a package if it's broken.
458################################################################ 458################################################################
459.if ${X11_TYPE} == "xorg" 459.if ${X11_TYPE} == "xorg"
460PKG_FAIL_REASON+= "Support for X11_TYPE=xorg was removed." 460PKG_FAIL_REASON+= "Support for X11_TYPE=xorg was removed."
461PKG_FAIL_REASON+= "Please switch to X11_TYPE=modular." 461PKG_FAIL_REASON+= "Please switch to X11_TYPE=modular."
462X11_TYPE:= native 462X11_TYPE:= native
463X11BASE:= /usr 463X11BASE:= /usr
464.endif 464.endif
465 465
466.if !defined(NO_SKIP) 466.if !defined(NO_SKIP)
467. if (defined(NO_BIN_ON_CDROM) && defined(FOR_CDROM)) 467. if (defined(NO_BIN_ON_CDROM) && defined(FOR_CDROM))
468PKG_SKIP_REASON+= "${PKGNAME} may not be placed in binary form on a CDROM:" \ 468PKG_SKIP_REASON+= "${PKGNAME} may not be placed in binary form on a CDROM:" \
469 " "${NO_BIN_ON_CDROM:Q} 469 " "${NO_BIN_ON_CDROM:Q}
470. endif 470. endif
471. if (defined(NO_SRC_ON_CDROM) && defined(FOR_CDROM)) 471. if (defined(NO_SRC_ON_CDROM) && defined(FOR_CDROM))
472PKG_SKIP_REASON+= "${PKGNAME} may not be placed in source form on a CDROM:" \ 472PKG_SKIP_REASON+= "${PKGNAME} may not be placed in source form on a CDROM:" \
473 " "${NO_SRC_ON_CDROM:Q} 473 " "${NO_SRC_ON_CDROM:Q}
474. endif 474. endif
475. if (defined(RESTRICTED) && defined(NO_RESTRICTED)) 475. if (defined(RESTRICTED) && defined(NO_RESTRICTED))
476PKG_SKIP_REASON+= "${PKGNAME} is restricted:" \ 476PKG_SKIP_REASON+= "${PKGNAME} is restricted:" \
477 " "${RESTRICTED:Q} 477 " "${RESTRICTED:Q}
478. endif 478. endif
479. if !(${MKCRYPTO} == "YES" || ${MKCRYPTO} == yes) 479. if !(${MKCRYPTO} == "YES" || ${MKCRYPTO} == yes)
480. if defined(CRYPTO) 480. if defined(CRYPTO)
481PKG_SKIP_REASON+= "${PKGNAME} may not be built, because it utilizes strong cryptography" 481PKG_SKIP_REASON+= "${PKGNAME} may not be built, because it utilizes strong cryptography"
482. endif 482. endif
483. endif 483. endif
484. if defined(USE_X11) && (${X11_TYPE} == "native") && !exists(${X11BASE}) 484. if defined(USE_X11) && (${X11_TYPE} == "native") && !exists(${X11BASE})
485PKG_FAIL_REASON+= "${PKGNAME} uses X11, but ${X11BASE} not found" 485PKG_FAIL_REASON+= "${PKGNAME} uses X11, but ${X11BASE} not found"
486. endif 486. endif
487. if defined(BROKEN) 487. if defined(BROKEN)
488PKG_FAIL_REASON+= "${PKGNAME} is marked as broken:" ${BROKEN:Q} 488PKG_FAIL_REASON+= "${PKGNAME} is marked as broken:" ${BROKEN:Q}
489. endif 489. endif
490 490
491.include "license.mk" 491.include "license.mk"
492 492
493# 493#
494# Check for packages broken or inappropriate on this platform. 494# Check for packages broken or inappropriate on this platform.
495# Set __PLATFORM_OK and __PLATFORM_WORKS only if the platform passes 495# Set __PLATFORM_OK and __PLATFORM_WORKS only if the platform passes
496# both the NOT_FOR/ONLY_FOR and BROKEN_ON lists (respectively). 496# both the NOT_FOR/ONLY_FOR and BROKEN_ON lists (respectively).
497# 497#
498 498
499# 1. BROKEN_EXCEPT_ON_PLATFORM 499# 1. BROKEN_EXCEPT_ON_PLATFORM
500. if defined(BROKEN_EXCEPT_ON_PLATFORM) && !empty(BROKEN_EXCEPT_ON_PLATFORM) 500. if defined(BROKEN_EXCEPT_ON_PLATFORM) && !empty(BROKEN_EXCEPT_ON_PLATFORM)
501. for __tmp__ in ${BROKEN_EXCEPT_ON_PLATFORM} 501. for __tmp__ in ${BROKEN_EXCEPT_ON_PLATFORM}
502. if ${MACHINE_PLATFORM:M${__tmp__}} != "" 502. if ${MACHINE_PLATFORM:M${__tmp__}} != ""
503__PLATFORM_WORKS?= yes 503__PLATFORM_WORKS?= yes
504. endif # MACHINE_PLATFORM 504. endif # MACHINE_PLATFORM
505. endfor # __tmp__ 505. endfor # __tmp__
506. else # !BROKEN_EXCEPT_ON_PLATFORM 506. else # !BROKEN_EXCEPT_ON_PLATFORM
507__PLATFORM_WORKS?= yes 507__PLATFORM_WORKS?= yes
508. endif # BROKEN_EXCEPT_ON_PLATFORM 508. endif # BROKEN_EXCEPT_ON_PLATFORM
509 509
510# 2. ONLY_FOR_PLATFORM 510# 2. ONLY_FOR_PLATFORM
511. if defined(ONLY_FOR_PLATFORM) && !empty(ONLY_FOR_PLATFORM) 511. if defined(ONLY_FOR_PLATFORM) && !empty(ONLY_FOR_PLATFORM)
512. for __tmp__ in ${ONLY_FOR_PLATFORM} 512. for __tmp__ in ${ONLY_FOR_PLATFORM}
513. if ${MACHINE_PLATFORM:M${__tmp__}} != "" 513. if ${MACHINE_PLATFORM:M${__tmp__}} != ""
514__PLATFORM_OK?= yes 514__PLATFORM_OK?= yes
515. endif # MACHINE_PLATFORM 515. endif # MACHINE_PLATFORM
516. endfor # __tmp__ 516. endfor # __tmp__
517. else # !ONLY_FOR_PLATFORM 517. else # !ONLY_FOR_PLATFORM
518__PLATFORM_OK?= yes 518__PLATFORM_OK?= yes
519. endif # ONLY_FOR_PLATFORM 519. endif # ONLY_FOR_PLATFORM
520 520
521# 3. BROKEN_ON_PLATFORM 521# 3. BROKEN_ON_PLATFORM
522. for __tmp__ in ${BROKEN_ON_PLATFORM} 522. for __tmp__ in ${BROKEN_ON_PLATFORM}
523. if ${MACHINE_PLATFORM:M${__tmp__}} != "" 523. if ${MACHINE_PLATFORM:M${__tmp__}} != ""
524. undef __PLATFORM_WORKS 524. undef __PLATFORM_WORKS
525. endif # MACHINE_PLATFORM 525. endif # MACHINE_PLATFORM
526. endfor # __tmp__ 526. endfor # __tmp__
527 527
528# 4. NOT_FOR_PLATFORM 528# 4. NOT_FOR_PLATFORM
529. for __tmp__ in ${NOT_FOR_PLATFORM} 529. for __tmp__ in ${NOT_FOR_PLATFORM}
530. if ${MACHINE_PLATFORM:M${__tmp__}} != "" 530. if ${MACHINE_PLATFORM:M${__tmp__}} != ""
531. undef __PLATFORM_OK 531. undef __PLATFORM_OK
532. endif # MACHINE_PLATFORM 532. endif # MACHINE_PLATFORM
533. endfor # __tmp__ 533. endfor # __tmp__
534 534
535# Check OK (NOT_FOR/ONLY_FOR) before WORKS (BROKEN_ON) 535# Check OK (NOT_FOR/ONLY_FOR) before WORKS (BROKEN_ON)
536. if !defined(__PLATFORM_OK) 536. if !defined(__PLATFORM_OK)
537PKG_SKIP_REASON+= "${PKGNAME} is not available for ${MACHINE_PLATFORM}" 537PKG_SKIP_REASON+= "${PKGNAME} is not available for ${MACHINE_PLATFORM}"
538. endif # !__PLATFORM_OK 538. endif # !__PLATFORM_OK
539. if !defined(__PLATFORM_WORKS) 539. if !defined(__PLATFORM_WORKS)
540PKG_FAIL_REASON+= "${PKGNAME} is marked broken on ${MACHINE_PLATFORM}" 540PKG_FAIL_REASON+= "${PKGNAME} is marked broken on ${MACHINE_PLATFORM}"
541. endif # !__PLATFORM_WORKS 541. endif # !__PLATFORM_WORKS
542 542
543.endif # NO_SKIP 543.endif # NO_SKIP
544 544
545# Add these defs to the ones dumped into +BUILD_DEFS 545# Add these defs to the ones dumped into +BUILD_DEFS
546_BUILD_DEFS+= PKGPATH 546_BUILD_DEFS+= PKGPATH
547_BUILD_DEFS+= OPSYS OS_VERSION MACHINE_ARCH MACHINE_GNU_ARCH 547_BUILD_DEFS+= OPSYS OS_VERSION MACHINE_ARCH MACHINE_GNU_ARCH
548_BUILD_DEFS+= ABI 548_BUILD_DEFS+= ABI
549_BUILD_DEFS+= CPPFLAGS CFLAGS FFLAGS LDFLAGS 549_BUILD_DEFS+= CPPFLAGS CFLAGS FFLAGS LDFLAGS
550_BUILD_DEFS+= OBJECT_FMT LICENSE RESTRICTED 550_BUILD_DEFS+= OBJECT_FMT LICENSE RESTRICTED
551_BUILD_DEFS+= NO_SRC_ON_FTP NO_SRC_ON_CDROM 551_BUILD_DEFS+= NO_SRC_ON_FTP NO_SRC_ON_CDROM
552_BUILD_DEFS+= NO_BIN_ON_FTP NO_BIN_ON_CDROM 552_BUILD_DEFS+= NO_BIN_ON_FTP NO_BIN_ON_CDROM
553 553
554.if defined(OSVERSION_SPECIFIC) 554.if defined(OSVERSION_SPECIFIC)
555_BUILD_DEFS+= OSVERSION_SPECIFIC 555_BUILD_DEFS+= OSVERSION_SPECIFIC
556DEPENDS+= osabi-${OPSYS}-${OS_VERSION}:../../pkgtools/osabi 556DEPENDS+= osabi-${OPSYS}-${OS_VERSION}:../../pkgtools/osabi
557.endif # OSVERSION_SPECIFIC 557.endif # OSVERSION_SPECIFIC
558 558
559.for _pkg_ in ${_BUILTIN_PKGS} 559.for _pkg_ in ${_BUILTIN_PKGS}
560. if defined(USE_BUILTIN.${_pkg_}) && \ 560. if defined(USE_BUILTIN.${_pkg_}) && \
561 !empty(USE_BUILTIN.${_pkg_}:M[yY][eE][sS]) && \ 561 !empty(USE_BUILTIN.${_pkg_}:M[yY][eE][sS]) && \
562 defined(BUILTIN_PKG.${_pkg_}) && !empty(BUILTIN_PKG.${_pkg_}) 562 defined(BUILTIN_PKG.${_pkg_}) && !empty(BUILTIN_PKG.${_pkg_})
563BUILTIN_PKGS+= ${BUILTIN_PKG.${_pkg_}} 563BUILTIN_PKGS+= ${BUILTIN_PKG.${_pkg_}}
564. endif 564. endif
565.endfor 565.endfor
566.if defined(BUILTIN_PKGS) 566.if defined(BUILTIN_PKGS)
567_BUILD_DEFS+= BUILTIN_PKGS 567_BUILD_DEFS+= BUILTIN_PKGS
568.endif 568.endif
569 569
570.if defined(GLIBC_VERSION) 570.if defined(GLIBC_VERSION)
571_BUILD_DEFS+= GLIBC_VERSION 571_BUILD_DEFS+= GLIBC_VERSION
572.endif # GLIBC_VERSION 572.endif # GLIBC_VERSION
573 573
574.PHONY: all 574.PHONY: all
575.if !target(all) 575.if !target(all)
576all: ${_PKGSRC_BUILD_TARGETS} 576all: ${_PKGSRC_BUILD_TARGETS}
577.endif 577.endif
578 578
579.PHONY: makedirs 579.PHONY: makedirs
580makedirs: ${WRKDIR} ${FAKEHOMEDIR} 580makedirs: ${WRKDIR} ${FAKEHOMEDIR}
581 581
582${WRKDIR}: 582${WRKDIR}:
583.if !defined(KEEP_WRKDIR) 583.if !defined(KEEP_WRKDIR)
584. if ${WRKDIR_LOCKTYPE} != "none" 584. if ${WRKDIR_LOCKTYPE} != "none"
585 ${RUN} ${TEST} -f ${_WRKDIR_LOCKFILE} || ${RM} -fr ${WRKDIR} 585 ${RUN} ${TEST} -f ${_WRKDIR_LOCKFILE} || ${RM} -fr ${WRKDIR}
586. endif 586. endif
587.endif 587.endif
588 ${RUN} umask 077 && ${MKDIR} ${WRKDIR} 588 ${RUN} umask 077 && ${MKDIR} ${WRKDIR}
589 589
590# Create a symlink from ${WRKDIR} to the package directory if 590# Create a symlink from ${WRKDIR} to the package directory if
591# CREATE_WRKDIR_SYMLINK is "yes". 591# CREATE_WRKDIR_SYMLINK is "yes".
592# 592#
593CREATE_WRKDIR_SYMLINK?= no 593CREATE_WRKDIR_SYMLINK?= no
594 594
595.if defined(WRKOBJDIR) && !empty(CREATE_WRKDIR_SYMLINK:M[Yy][Ee][Ss]) 595.if defined(WRKOBJDIR) && !empty(CREATE_WRKDIR_SYMLINK:M[Yy][Ee][Ss])
596makedirs: ${.CURDIR}/${WRKDIR_BASENAME} 596makedirs: ${.CURDIR}/${WRKDIR_BASENAME}
597${.CURDIR}/${WRKDIR_BASENAME}: 597${.CURDIR}/${WRKDIR_BASENAME}:
598. if ${WRKDIR_LOCKTYPE} != "none" 598. if ${WRKDIR_LOCKTYPE} != "none"
599 ${RUN} ${TEST} -f ${_WRKDIR_LOCKFILE} || ${RM} -f ${.TARGET} 599 ${RUN} ${TEST} -f ${_WRKDIR_LOCKFILE} || ${RM} -f ${.TARGET}
600. endif 600. endif
601 ${RUN} \ 601 ${RUN} \
602 if ${LN} -s ${WRKDIR} ${.TARGET} 2>/dev/null; then \ 602 if ${LN} -s ${WRKDIR} ${.TARGET} 2>/dev/null; then \
603 ${ECHO_MSG} "${.TARGET:T} -> ${WRKDIR}"; \ 603 ${ECHO_MSG} "${.TARGET:T} -> ${WRKDIR}"; \
604 fi 604 fi
605.endif 605.endif
606 606
607.include "pkgformat/bsd.pkgformat.mk" 607.include "pkgformat/bsd.pkgformat.mk"
608 608
609.include "depends/bsd.depends.mk" 609.include "depends/bsd.depends.mk"
610.include "check/bsd.check.mk" 610.include "check/bsd.check.mk"
611.include "fetch/bsd.fetch.mk" 611.include "fetch/bsd.fetch.mk"
612.include "checksum/bsd.checksum.mk" 612.include "checksum/bsd.checksum.mk"
613.include "extract/bsd.extract.mk" 613.include "extract/bsd.extract.mk"
614.include "patch/bsd.patch.mk" 614.include "patch/bsd.patch.mk"
615.include "configure/bsd.configure.mk" 615.include "configure/bsd.configure.mk"
616.include "build/bsd.build.mk" 616.include "build/bsd.build.mk"
617.include "install/bsd.install.mk" 617.include "install/bsd.install.mk"
618.include "package/bsd.package.mk" 618.include "package/bsd.package.mk"
619 619
620.include "bsd.pkg.clean.mk" 620.include "bsd.pkg.clean.mk"
621.include "bsd.pkg.update.mk" 621.include "bsd.pkg.update.mk"
622 622
623# su-target is a macro target that does just-in-time su-to-root before 623# su-target is a macro target that does just-in-time su-to-root before
624# reinvoking the make process as root. It acquires root privileges and 624# reinvoking the make process as root. It acquires root privileges and
625# invokes a new make process with the target named "su-${.TARGET}". 625# invokes a new make process with the target named "su-${.TARGET}".
626# 626#
627# MAKEFLAGS.su-${.TARGET} 627# MAKEFLAGS.su-${.TARGET}
628# The additional flags that are passed to the make process. 628# The additional flags that are passed to the make process.
629# 629#
630 630
631_ROOT_CMD= cd ${.CURDIR} && \ 631_ROOT_CMD= cd ${.CURDIR} && \
632 ${PKGSRC_SETENV} ${PKGSRC_MAKE_ENV} \ 632 ${PKGSRC_SETENV} ${PKGSRC_MAKE_ENV} \
633 PATH=${_PATH_ORIG:Q}:${SU_CMD_PATH_APPEND:Q} \ 633 PATH=${_PATH_ORIG:Q}:${SU_CMD_PATH_APPEND:Q} \
634 ${MAKE} ${MAKEFLAGS} _PKGSRC_BARRIER=yes \ 634 ${MAKE} ${MAKEFLAGS} _PKGSRC_BARRIER=yes \
635 PKG_DEBUG_LEVEL=${PKG_DEBUG_LEVEL:Q} \ 635 PKG_DEBUG_LEVEL=${PKG_DEBUG_LEVEL:Q} \
636 ${USE_CROSS_COMPILE:DUSE_CROSS_COMPILE=${USE_CROSS_COMPILE:Q}} \ 636 ${USE_CROSS_COMPILE:DUSE_CROSS_COMPILE=${USE_CROSS_COMPILE:Q}} \
637 su-${.TARGET} ${MAKEFLAGS.su-${.TARGET}} 637 su-${.TARGET} ${MAKEFLAGS.su-${.TARGET}}
638 638
639.PHONY: su-target 639.PHONY: su-target
640su-target: .USE 640su-target: .USE
641 ${RUN} \ 641 ${RUN} \
642 case ${PRE_CMD.su-${.TARGET}:Q}"" in \ 642 case ${PRE_CMD.su-${.TARGET}:Q}"" in \
643 "") ;; \ 643 "") ;; \
644 *) ${PRE_CMD.su-${.TARGET}} ;; \ 644 *) ${PRE_CMD.su-${.TARGET}} ;; \
645 esac; \ 645 esac; \
646 if ${_IS_ROOT_CMD}; then \ 646 if ${_IS_ROOT_CMD}; then \
647 ${_ROOT_CMD}; \ 647 ${_ROOT_CMD}; \
648 else \ 648 else \
649 case ${PRE_ROOT_CMD:Q}"" in \ 649 case ${PRE_ROOT_CMD:Q}"" in \
650 ${TRUE:Q}"") ;; \ 650 ${TRUE:Q}"") ;; \
651 *) ${WARNING_MSG} "Running: "${PRE_ROOT_CMD:Q} ;; \ 651 *) ${WARNING_MSG} "Running: "${PRE_ROOT_CMD:Q} ;; \
652 esac; \ 652 esac; \
653 ${PRE_ROOT_CMD}; \ 653 ${PRE_ROOT_CMD}; \
654 ${STEP_MSG} "Becoming \`\`${_SU_ROOT_USER}'' to make su-${.TARGET} (`${ECHO} ${SU_CMD} | ${AWK} '{ print $$1 }'`)"; \ 654 ${STEP_MSG} "Becoming \`\`${_SU_ROOT_USER}'' to make su-${.TARGET} (`${ECHO} ${SU_CMD} | ${AWK} '{ print $$1 }'`)"; \
655 ${SU_CMD} ${_ROOT_CMD:Q}; \ 655 ${SU_CMD} ${_ROOT_CMD:Q}; \
656 ${STEP_MSG} "Dropping \`\`${_SU_ROOT_USER}'' privileges."; \ 656 ${STEP_MSG} "Dropping \`\`${_SU_ROOT_USER}'' privileges."; \
657 fi 657 fi
658 658
659################################################################ 659################################################################
660# Some more targets supplied for users' convenience 660# Some more targets supplied for users' convenience
661################################################################ 661################################################################
662 662
663# Run pkglint: 663# Run pkglint:
664.PHONY: lint 664.PHONY: lint
665lint: 665lint:
666 ${RUN} ${LOCALBASE}/bin/pkglint 666 ${RUN} ${LOCALBASE}/bin/pkglint
667 667
668# List of flags to pass to pkg_add(1) for bin-install: 668# List of flags to pass to pkg_add(1) for bin-install:
669 669
670BIN_INSTALL_FLAGS?= # -v 670BIN_INSTALL_FLAGS?= # -v
671_BIN_INSTALL_FLAGS= ${BIN_INSTALL_FLAGS} 671_BIN_INSTALL_FLAGS= ${BIN_INSTALL_FLAGS}
672.if defined(_AUTOMATIC) && !empty(_AUTOMATIC:M[Yy][Ee][Ss]) 672.if defined(_AUTOMATIC) && !empty(_AUTOMATIC:M[Yy][Ee][Ss])
673_BIN_INSTALL_FLAGS+= -A 673_BIN_INSTALL_FLAGS+= -A
674.endif 674.endif
675_BIN_INSTALL_FLAGS+= ${PKG_ARGS_ADD} 675_BIN_INSTALL_FLAGS+= ${PKG_ARGS_ADD}
676 676
677_SHORT_UNAME_R= ${:!${UNAME} -r!:C@\.([0-9]*)[_.-].*@.\1@} # n.n[_.]anything => n.n 677_SHORT_UNAME_R= ${:!${UNAME} -r!:C@\.([0-9]*)[_.-].*@.\1@} # n.n[_.]anything => n.n
678 678
679.include "install/bin-install.mk" 679.include "install/bin-install.mk"
680 680
 681# Handle PaX flags
 682#
 683.include "pax.mk"
 684
681.PHONY: show-pkgtools-version 685.PHONY: show-pkgtools-version
682.if !target(show-pkgtools-version) 686.if !target(show-pkgtools-version)
683show-pkgtools-version: 687show-pkgtools-version:
684 @${ECHO} ${PKGTOOLS_VERSION} 688 @${ECHO} ${PKGTOOLS_VERSION}
685.endif 689.endif
686 690
687# convenience target, to display make variables from command line 691# convenience target, to display make variables from command line
688# i.e. "make show-var VARNAME=var", will print var's value 692# i.e. "make show-var VARNAME=var", will print var's value
689# 693#
690# See also: 694# See also:
691# show-vars, show-subdir-var 695# show-vars, show-subdir-var
692# 696#
693.PHONY: show-var 697.PHONY: show-var
694show-var: 698show-var:
695 @${ECHO} ${${VARNAME}:Q} 699 @${ECHO} ${${VARNAME}:Q}
696 700
697# enhanced version of target above, to display multiple variables 701# enhanced version of target above, to display multiple variables
698.PHONY: show-vars 702.PHONY: show-vars
699show-vars: 703show-vars:
700.for VARNAME in ${VARNAMES} 704.for VARNAME in ${VARNAMES}
701 @${ECHO} ${${VARNAME}:Q} 705 @${ECHO} ${${VARNAME}:Q}
702.endfor 706.endfor
703 707
704# displays multiple variables as shell expressions 708# displays multiple variables as shell expressions
705# VARS is space separated list of VARNAME:shellvarname 709# VARS is space separated list of VARNAME:shellvarname
706.PHONY: show-vars-eval 710.PHONY: show-vars-eval
707show-vars-eval: 711show-vars-eval:
708.for var in ${VARS} 712.for var in ${VARS}
709 @${ECHO} ${var:C/^.*://}="${${var:C/:.*$//}:Q}" 713 @${ECHO} ${var:C/^.*://}="${${var:C/:.*$//}:Q}"
710.endfor 714.endfor
711 715
712LICENSE_FILE?= ${PKGSRCDIR}/licenses/${LICENSE} 716LICENSE_FILE?= ${PKGSRCDIR}/licenses/${LICENSE}
713 717
714.if !target(show-license) 718.if !target(show-license)
715show-license show-licence: .PHONY 719show-license show-licence: .PHONY
716 @license=${LICENSE:Q}; \ 720 @license=${LICENSE:Q}; \
717 license_file=${LICENSE_FILE:Q}; \ 721 license_file=${LICENSE_FILE:Q}; \
718 pager=${PAGER:Q}; \ 722 pager=${PAGER:Q}; \
719 case "$$pager" in "") pager=${CAT:Q};; esac; \ 723 case "$$pager" in "") pager=${CAT:Q};; esac; \
720 case "$$license" in "") exit 0;; esac; \ 724 case "$$license" in "") exit 0;; esac; \
721 if ${TEST} -f "$$license_file"; then \ 725 if ${TEST} -f "$$license_file"; then \
722 $$pager "$$license_file"; \ 726 $$pager "$$license_file"; \
723 else \ 727 else \
724 ${ECHO} "Generic $$license information not available"; \ 728 ${ECHO} "Generic $$license information not available"; \
725 ${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \ 729 ${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \
726 fi 730 fi
727.endif 731.endif
728 732
729# This target is defined in bsd.options.mk for packages that use 733# This target is defined in bsd.options.mk for packages that use
730# the options framework. 734# the options framework.
731.if !target(show-options) 735.if !target(show-options)
732.PHONY: show-options 736.PHONY: show-options
733show-options: 737show-options:
734 @${ECHO} This package does not use the options framework. 738 @${ECHO} This package does not use the options framework.
735.endif 739.endif
736 740
737# Depend is generally meaningless for arbitrary packages, but if someone wants 741# Depend is generally meaningless for arbitrary packages, but if someone wants
738# one they can override this. This is just to catch people who've gotten into 742# one they can override this. This is just to catch people who've gotten into
739# the habit of typing `${MAKE} depend all install' as a matter of course. 743# the habit of typing `${MAKE} depend all install' as a matter of course.
740# 744#
741.PHONY: depend 745.PHONY: depend
742.if !target(depend) 746.if !target(depend)
743depend: 747depend:
744.endif 748.endif
745 749
746# Same goes for tags 750# Same goes for tags
747.PHONY: tags 751.PHONY: tags
748.if !target(tags) 752.if !target(tags)
749tags: 753tags:
750.endif 754.endif
751 755
752.include "plist/bsd.plist.mk" 756.include "plist/bsd.plist.mk"
753 757
754.include "bsd.utils.mk" 758.include "bsd.utils.mk"
755 759
756.include "subst.mk" 760.include "subst.mk"
757 761
758# README generation code. 762# README generation code.
759.include "bsd.pkg.readme.mk" 763.include "bsd.pkg.readme.mk"
760 764
761# Create a PKG_ERROR_HANDLER shell command for each class listed in 765# Create a PKG_ERROR_HANDLER shell command for each class listed in
762# PKG_ERROR_CLASSES. The error handler is meant to be invoked within 766# PKG_ERROR_CLASSES. The error handler is meant to be invoked within
763# a make target. 767# a make target.
764# 768#
765.for _class_ in ${PKG_ERROR_CLASSES} 769.for _class_ in ${PKG_ERROR_CLASSES}
766PKG_ERROR_HANDLER.${_class_}?= { \ 770PKG_ERROR_HANDLER.${_class_}?= { \
767 ec=$$?; \ 771 ec=$$?; \
768 for str in ${PKG_ERROR_MSG.${_class_}}; do \ 772 for str in ${PKG_ERROR_MSG.${_class_}}; do \
769 ${PHASE_MSG} "$$str"; \ 773 ${PHASE_MSG} "$$str"; \
770 done; \ 774 done; \
771 exit $$ec; \ 775 exit $$ec; \
772 } 776 }
773.endfor 777.endfor
774 778
775# Cache variables listed in MAKEVARS in a phase-specific "makevars.mk" 779# Cache variables listed in MAKEVARS in a phase-specific "makevars.mk"
776# file. These variables are effectively passed to sub-make processes 780# file. These variables are effectively passed to sub-make processes
777# that are invoked on the same Makefile. 781# that are invoked on the same Makefile.
778# 782#
779.for _phase_ in ${_ALL_PHASES} 783.for _phase_ in ${_ALL_PHASES}
780${_MAKEVARS_MK.${_phase_}}: ${WRKDIR} 784${_MAKEVARS_MK.${_phase_}}: ${WRKDIR}
781 ${RUN}${RM} -f ${.TARGET}.tmp 785 ${RUN}${RM} -f ${.TARGET}.tmp
782. for _var_ in ${MAKEVARS:O:u} 786. for _var_ in ${MAKEVARS:O:u}
783. if defined(${_var_}) 787. if defined(${_var_})
784 ${RUN} \ 788 ${RUN} \
785 ${ECHO} ${_var_}"= "${${_var_}:Q} >> ${.TARGET}.tmp 789 ${ECHO} ${_var_}"= "${${_var_}:Q} >> ${.TARGET}.tmp
786. endif 790. endif
787. endfor 791. endfor
788 ${RUN} \ 792 ${RUN} \
789 if ${TEST} -f ${.TARGET}.tmp; then \ 793 if ${TEST} -f ${.TARGET}.tmp; then \
790 ( ${ECHO} ".if !defined(_MAKEVARS_MK)"; \ 794 ( ${ECHO} ".if !defined(_MAKEVARS_MK)"; \
791 ${ECHO} "_MAKEVARS_MK= defined"; \ 795 ${ECHO} "_MAKEVARS_MK= defined"; \
792 ${ECHO} ""; \ 796 ${ECHO} ""; \
793 ${CAT} ${.TARGET}.tmp; \ 797 ${CAT} ${.TARGET}.tmp; \
794 ${ECHO} ""; \ 798 ${ECHO} ""; \
795 ${ECHO} ".endif # _MAKEVARS_MK"; \ 799 ${ECHO} ".endif # _MAKEVARS_MK"; \
796 ) > ${.TARGET}; \ 800 ) > ${.TARGET}; \
797 ${RM} -f ${.TARGET}.tmp; \ 801 ${RM} -f ${.TARGET}.tmp; \
798 fi 802 fi
799 ${RUN}${TOUCH} ${TOUCH_FLAGS} ${.TARGET} 803 ${RUN}${TOUCH} ${TOUCH_FLAGS} ${.TARGET}
800.endfor 804.endfor
801 805
802.if make(pbulk-index) || make(pbulk-index-item) || make(pbulk-save-wrkdir) 806.if make(pbulk-index) || make(pbulk-index-item) || make(pbulk-save-wrkdir)
803.include "pbulk/pbulk-index.mk" 807.include "pbulk/pbulk-index.mk"
804.endif 808.endif
805 809
806.if defined(_OPSYS_REQUIRE_UAC_MANIFEST) && !empty(_OPSYS_REQUIRE_UAC_MANIFEST:M[Yy][Ee][Ss]) 810.if defined(_OPSYS_REQUIRE_UAC_MANIFEST) && !empty(_OPSYS_REQUIRE_UAC_MANIFEST:M[Yy][Ee][Ss])
807. if defined(UAC_REQD_EXECS) && !empty(UAC_REQD_EXECS) 811. if defined(UAC_REQD_EXECS) && !empty(UAC_REQD_EXECS)
808.include "misc/uac-manifest.mk" 812.include "misc/uac-manifest.mk"
809. endif 813. endif
810.endif 814.endif
811 815
812.if ${PKG_DEVELOPER:Uno} != "no" 816.if ${PKG_DEVELOPER:Uno} != "no"
813. include "misc/developer.mk" 817. include "misc/developer.mk"
814.endif 818.endif
815.include "misc/show.mk" 819.include "misc/show.mk"
816.if make(debug) 820.if make(debug)
817. include "bsd.pkg.debug.mk" 821. include "bsd.pkg.debug.mk"
818.endif 822.endif
819.include "misc/warnings.mk" 823.include "misc/warnings.mk"
820.if make(import) 824.if make(import)
821.include "misc/import.mk" 825.include "misc/import.mk"
822.endif 826.endif
823.include "misc/can-be-built-here.mk" 827.include "misc/can-be-built-here.mk"

File Added: pkgsrc/mk/pax.mk
# $NetBSD: pax.mk,v 1.1 2016/05/26 16:03:04 khorben Exp $
#
# Infrastructure support for binaries known to fail with PaX enabled.
#
# User-settable variables:
# PAXCTL
#	The path to the paxctl(8) binary
#
# Package-settable variables:
#
# NOT_PAX_ASLR_SAFE
#	The list of binaries which do not support PaX ASLR.
#
# NOT_PAX_MPROTECT_SAFE
#	The list of binaries which do not support PaX MPROTECT.

.if !defined(PAX_MK)

. if defined(TOOLS_PLATFORM.paxctl)
PAXCTL=	${TOOLS_PLATFORM.paxctl}
.  if !empty(NOT_PAX_ASLR_SAFE)
_INSTALL_ALL_TARGETS+=		post-install-pax-aslr-binaries

.PHONY: post-install-pax-aslr-binaries
post-install: post-install-pax-aslr-binaries
post-install-pax-aslr-binaries:
	@${STEP_MSG} "Setting PaX ASLR flags"
	${RUN}								\
	for binary in ${NOT_PAX_ASLR_SAFE}; do				\
		${PAXCTL} +a ${DESTDIR}${PREFIX}/$$binary;		\
	done
.  endif

.  if !empty(NOT_PAX_MPROTECT_SAFE)
_INSTALL_ALL_TARGETS+=		post-install-pax-mprotect-binaries

.PHONY: post-install-pax-mprotect-binaries
post-install: post-install-pax-mprotect-binaries
post-install-pax-mprotect-binaries:
	@${STEP_MSG} "Setting PaX MPROTECT flags"
	${RUN}								\
	for binary in ${NOT_PAX_MPROTECT_SAFE}; do			\
		${PAXCTL} +m ${DESTDIR}${PREFIX}/$$binary;		\
	done
.  endif
. endif

.endif

cvs diff -r1.57 -r1.58 pkgsrc/mk/tools/tools.NetBSD.mk (switch to unified diff)

--- pkgsrc/mk/tools/tools.NetBSD.mk 2015/09/08 11:36:34 1.57
+++ pkgsrc/mk/tools/tools.NetBSD.mk 2016/05/26 16:03:04 1.58
@@ -1,160 +1,164 @@ @@ -1,160 +1,164 @@
1# $NetBSD: tools.NetBSD.mk,v 1.57 2015/09/08 11:36:34 jperkin Exp $ 1# $NetBSD: tools.NetBSD.mk,v 1.58 2016/05/26 16:03:04 khorben Exp $
2# 2#
3# System-supplied tools for the NetBSD operating system. 3# System-supplied tools for the NetBSD operating system.
4 4
5TOOLS_PLATFORM.[?= [ # shell builtin 5TOOLS_PLATFORM.[?= [ # shell builtin
6TOOLS_PLATFORM.awk?= /usr/bin/awk 6TOOLS_PLATFORM.awk?= /usr/bin/awk
7TOOLS_PLATFORM.basename?= /usr/bin/basename 7TOOLS_PLATFORM.basename?= /usr/bin/basename
8TOOLS_PLATFORM.byacc?= /usr/bin/yacc 8TOOLS_PLATFORM.byacc?= /usr/bin/yacc
9.if exists(/usr/bin/bzcat) 9.if exists(/usr/bin/bzcat)
10TOOLS_PLATFORM.bzcat?= /usr/bin/bzcat 10TOOLS_PLATFORM.bzcat?= /usr/bin/bzcat
11.endif 11.endif
12TOOLS_PLATFORM.bzip2?= /usr/bin/bzip2 12TOOLS_PLATFORM.bzip2?= /usr/bin/bzip2
13TOOLS_PLATFORM.cat?= /bin/cat 13TOOLS_PLATFORM.cat?= /bin/cat
14TOOLS_PLATFORM.chgrp?= /usr/bin/chgrp 14TOOLS_PLATFORM.chgrp?= /usr/bin/chgrp
15TOOLS_PLATFORM.chmod?= /bin/chmod 15TOOLS_PLATFORM.chmod?= /bin/chmod
16TOOLS_PLATFORM.chown?= /usr/sbin/chown 16TOOLS_PLATFORM.chown?= /usr/sbin/chown
17TOOLS_PLATFORM.cmp?= /usr/bin/cmp 17TOOLS_PLATFORM.cmp?= /usr/bin/cmp
18TOOLS_PLATFORM.cp?= /bin/cp 18TOOLS_PLATFORM.cp?= /bin/cp
19TOOLS_PLATFORM.csh?= /bin/csh 19TOOLS_PLATFORM.csh?= /bin/csh
20TOOLS_PLATFORM.cut?= /usr/bin/cut 20TOOLS_PLATFORM.cut?= /usr/bin/cut
21TOOLS_PLATFORM.date?= /bin/date 21TOOLS_PLATFORM.date?= /bin/date
22TOOLS_PLATFORM.diff?= /usr/bin/diff 22TOOLS_PLATFORM.diff?= /usr/bin/diff
23TOOLS_PLATFORM.diff3?= /usr/bin/diff3 23TOOLS_PLATFORM.diff3?= /usr/bin/diff3
24TOOLS_PLATFORM.dirname?= /usr/bin/dirname 24TOOLS_PLATFORM.dirname?= /usr/bin/dirname
25TOOLS_PLATFORM.echo?= echo # shell builtin 25TOOLS_PLATFORM.echo?= echo # shell builtin
26TOOLS_PLATFORM.egrep?= /usr/bin/egrep 26TOOLS_PLATFORM.egrep?= /usr/bin/egrep
27TOOLS_PLATFORM.env?= /usr/bin/env 27TOOLS_PLATFORM.env?= /usr/bin/env
28TOOLS_PLATFORM.expr?= /bin/expr 28TOOLS_PLATFORM.expr?= /bin/expr
29TOOLS_PLATFORM.false?= false # shell builtin 29TOOLS_PLATFORM.false?= false # shell builtin
30TOOLS_PLATFORM.fgrep?= /usr/bin/fgrep 30TOOLS_PLATFORM.fgrep?= /usr/bin/fgrep
31TOOLS_PLATFORM.file?= /usr/bin/file 31TOOLS_PLATFORM.file?= /usr/bin/file
32TOOLS_PLATFORM.find?= /usr/bin/find 32TOOLS_PLATFORM.find?= /usr/bin/find
33TOOLS_PLATFORM.flex?= /usr/bin/lex 33TOOLS_PLATFORM.flex?= /usr/bin/lex
34TOOLS_PLATFORM.ftp?= /usr/bin/ftp 34TOOLS_PLATFORM.ftp?= /usr/bin/ftp
35.if exists(/usr/bin/gettext) 35.if exists(/usr/bin/gettext)
36TOOLS_PLATFORM.gettext?= /usr/bin/gettext 36TOOLS_PLATFORM.gettext?= /usr/bin/gettext
37.endif 37.endif
38TOOLS_PLATFORM.grep?= /usr/bin/grep 38TOOLS_PLATFORM.grep?= /usr/bin/grep
39TOOLS_PLATFORM.groff?= /usr/bin/groff 39TOOLS_PLATFORM.groff?= /usr/bin/groff
40TOOLS_PLATFORM.gsoelim?= ${TOOLS_PLATFORM.soelim} # GNUish 40TOOLS_PLATFORM.gsoelim?= ${TOOLS_PLATFORM.soelim} # GNUish
41TOOLS_PLATFORM.gunzip?= /usr/bin/gunzip -f 41TOOLS_PLATFORM.gunzip?= /usr/bin/gunzip -f
42TOOLS_PLATFORM.gzcat?= /usr/bin/gzcat 42TOOLS_PLATFORM.gzcat?= /usr/bin/gzcat
43TOOLS_PLATFORM.gzip?= /usr/bin/gzip -nf ${GZIP} 43TOOLS_PLATFORM.gzip?= /usr/bin/gzip -nf ${GZIP}
44TOOLS_PLATFORM.head?= /usr/bin/head 44TOOLS_PLATFORM.head?= /usr/bin/head
45TOOLS_PLATFORM.hostname?= /bin/hostname 45TOOLS_PLATFORM.hostname?= /bin/hostname
46TOOLS_PLATFORM.id?= /usr/bin/id 46TOOLS_PLATFORM.id?= /usr/bin/id
47TOOLS_PLATFORM.ident?= /usr/bin/ident 47TOOLS_PLATFORM.ident?= /usr/bin/ident
48.if empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 48.if empty(USE_CROSS_COMPILE:M[yY][eE][sS])
49TOOLS_PLATFORM.install?= /usr/bin/install 49TOOLS_PLATFORM.install?= /usr/bin/install
50.else 50.else
51TOOLS_PLATFORM.install?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-install 51TOOLS_PLATFORM.install?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-install
52.endif 52.endif
53.if exists(/usr/bin/install-info) 53.if exists(/usr/bin/install-info)
54TOOLS_PLATFORM.install-info?= /usr/bin/install-info 54TOOLS_PLATFORM.install-info?= /usr/bin/install-info
55.endif 55.endif
56.if exists(/sbin/ldconfig) && ${OBJECT_FMT} == "a.out" 56.if exists(/sbin/ldconfig) && ${OBJECT_FMT} == "a.out"
57TOOLS_PLATFORM.ldconfig?= /sbin/ldconfig 57TOOLS_PLATFORM.ldconfig?= /sbin/ldconfig
58.endif 58.endif
59TOOLS_PLATFORM.ksh?= /bin/ksh 59TOOLS_PLATFORM.ksh?= /bin/ksh
60TOOLS_PLATFORM.lex?= /usr/bin/lex 60TOOLS_PLATFORM.lex?= /usr/bin/lex
61TOOLS_PLATFORM.ln?= /bin/ln 61TOOLS_PLATFORM.ln?= /bin/ln
62TOOLS_PLATFORM.ls?= /bin/ls 62TOOLS_PLATFORM.ls?= /bin/ls
63TOOLS_PLATFORM.m4?= /usr/bin/m4 63TOOLS_PLATFORM.m4?= /usr/bin/m4
64TOOLS_PLATFORM.mail?= /usr/bin/mail 64TOOLS_PLATFORM.mail?= /usr/bin/mail
65.if exists(/usr/bin/makeinfo) 65.if exists(/usr/bin/makeinfo)
66TOOLS_PLATFORM.makeinfo?= /usr/bin/makeinfo 66TOOLS_PLATFORM.makeinfo?= /usr/bin/makeinfo
67.endif 67.endif
68TOOLS_PLATFORM.mkdir?= /bin/mkdir -p 68TOOLS_PLATFORM.mkdir?= /bin/mkdir -p
69TOOLS_PLATFORM.mktemp?= /usr/bin/mktemp 69TOOLS_PLATFORM.mktemp?= /usr/bin/mktemp
70.if exists(/usr/bin/msgconv) 70.if exists(/usr/bin/msgconv)
71TOOLS_PLATFORM.msgconv?= /usr/bin/msgconv 71TOOLS_PLATFORM.msgconv?= /usr/bin/msgconv
72.endif 72.endif
73.if exists(/usr/bin/msgfmt) 73.if exists(/usr/bin/msgfmt)
74TOOLS_PLATFORM.msgfmt?= /usr/bin/msgfmt 74TOOLS_PLATFORM.msgfmt?= /usr/bin/msgfmt
75.endif 75.endif
76.if exists(/usr/bin/msgmerge) 76.if exists(/usr/bin/msgmerge)
77TOOLS_PLATFORM.msgmerge?= /usr/bin/msgmerge 77TOOLS_PLATFORM.msgmerge?= /usr/bin/msgmerge
78.endif 78.endif
79TOOLS_PLATFORM.mtree?= /usr/sbin/mtree 79TOOLS_PLATFORM.mtree?= /usr/sbin/mtree
80TOOLS_PLATFORM.mv?= /bin/mv 80TOOLS_PLATFORM.mv?= /bin/mv
81TOOLS_PLATFORM.nice?= /usr/bin/nice 81TOOLS_PLATFORM.nice?= /usr/bin/nice
82TOOLS_PLATFORM.nroff?= /usr/bin/nroff 82TOOLS_PLATFORM.nroff?= /usr/bin/nroff
83TOOLS_PLATFORM.openssl?= /usr/bin/openssl 83TOOLS_PLATFORM.openssl?= /usr/bin/openssl
84TOOLS_PLATFORM.patch?= /usr/bin/patch 84TOOLS_PLATFORM.patch?= /usr/bin/patch
85TOOLS_PLATFORM.pax?= /bin/pax 85TOOLS_PLATFORM.pax?= /bin/pax
 86.if empty(MACHINE_PLATFORM:MNetBSD-[^0-3].*-386) || \
 87 empty(MACHINE_PLATFORM:MNetBSD-[^0-3].*-x86_64)
 88TOOLS_PLATFORM.paxctl?= /usr/sbin/paxctl
 89.endif
86TOOLS_PLATFORM.printf?= /usr/bin/printf 90TOOLS_PLATFORM.printf?= /usr/bin/printf
87TOOLS_PLATFORM.pwd?= /bin/pwd 91TOOLS_PLATFORM.pwd?= /bin/pwd
88.if empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 92.if empty(USE_CROSS_COMPILE:M[yY][eE][sS])
89TOOLS_PLATFORM.readelf?= /usr/bin/readelf 93TOOLS_PLATFORM.readelf?= /usr/bin/readelf
90.else 94.else
91TOOLS_PLATFORM.readelf?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-readelf 95TOOLS_PLATFORM.readelf?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-readelf
92.endif 96.endif
93TOOLS_PLATFORM.readlink?= /usr/bin/readlink 97TOOLS_PLATFORM.readlink?= /usr/bin/readlink
94TOOLS_PLATFORM.rm?= /bin/rm 98TOOLS_PLATFORM.rm?= /bin/rm
95TOOLS_PLATFORM.rmdir?= /bin/rmdir 99TOOLS_PLATFORM.rmdir?= /bin/rmdir
96TOOLS_PLATFORM.sdiff?= /usr/bin/sdiff 100TOOLS_PLATFORM.sdiff?= /usr/bin/sdiff
97TOOLS_PLATFORM.sed?= /usr/bin/sed 101TOOLS_PLATFORM.sed?= /usr/bin/sed
98TOOLS_PLATFORM.sh?= /bin/sh 102TOOLS_PLATFORM.sh?= /bin/sh
99TOOLS_PLATFORM.shlock?= /usr/bin/shlock 103TOOLS_PLATFORM.shlock?= /usr/bin/shlock
100TOOLS_PLATFORM.sleep?= /bin/sleep 104TOOLS_PLATFORM.sleep?= /bin/sleep
101TOOLS_PLATFORM.soelim?= /usr/bin/soelim 105TOOLS_PLATFORM.soelim?= /usr/bin/soelim
102TOOLS_PLATFORM.sort?= /usr/bin/sort 106TOOLS_PLATFORM.sort?= /usr/bin/sort
103.if empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 107.if empty(USE_CROSS_COMPILE:M[yY][eE][sS])
104TOOLS_PLATFORM.strip?= /usr/bin/strip 108TOOLS_PLATFORM.strip?= /usr/bin/strip
105.else 109.else
106TOOLS_PLATFORM.strip?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-strip 110TOOLS_PLATFORM.strip?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-strip
107.endif 111.endif
108 112
109TOOLS_PLATFORM.tail?= /usr/bin/tail 113TOOLS_PLATFORM.tail?= /usr/bin/tail
110.if exists(/bin/tar) 114.if exists(/bin/tar)
111TOOLS_PLATFORM.tar?= /bin/tar 115TOOLS_PLATFORM.tar?= /bin/tar
112.elif exists(/usr/bin/tar) 116.elif exists(/usr/bin/tar)
113TOOLS_PLATFORM.tar?= /usr/bin/tar 117TOOLS_PLATFORM.tar?= /usr/bin/tar
114.endif 118.endif
115TOOLS_PLATFORM.tbl?= /usr/bin/tbl 119TOOLS_PLATFORM.tbl?= /usr/bin/tbl
116TOOLS_PLATFORM.tee?= /usr/bin/tee 120TOOLS_PLATFORM.tee?= /usr/bin/tee
117TOOLS_PLATFORM.test?= test # shell builtin 121TOOLS_PLATFORM.test?= test # shell builtin
118TOOLS_PLATFORM.touch?= /usr/bin/touch 122TOOLS_PLATFORM.touch?= /usr/bin/touch
119TOOLS_PLATFORM.tr?= /usr/bin/tr 123TOOLS_PLATFORM.tr?= /usr/bin/tr
120TOOLS_PLATFORM.true?= true # shell builtin 124TOOLS_PLATFORM.true?= true # shell builtin
121TOOLS_PLATFORM.tsort?= /usr/bin/tsort 125TOOLS_PLATFORM.tsort?= /usr/bin/tsort
122TOOLS_PLATFORM.uniq?= /usr/bin/uniq 126TOOLS_PLATFORM.uniq?= /usr/bin/uniq
123.if exists(/usr/bin/unzip) 127.if exists(/usr/bin/unzip)
124TOOLS_PLATFORM.unzip?= /usr/bin/unzip 128TOOLS_PLATFORM.unzip?= /usr/bin/unzip
125.endif 129.endif
126TOOLS_PLATFORM.wc?= /usr/bin/wc 130TOOLS_PLATFORM.wc?= /usr/bin/wc
127TOOLS_PLATFORM.xargs?= /usr/bin/xargs 131TOOLS_PLATFORM.xargs?= /usr/bin/xargs
128.if exists(/usr/bin/xgettext) 132.if exists(/usr/bin/xgettext)
129TOOLS_PLATFORM.xgettext?= /usr/bin/xgettext 133TOOLS_PLATFORM.xgettext?= /usr/bin/xgettext
130.endif 134.endif
131.if exists(/usr/bin/xz) 135.if exists(/usr/bin/xz)
132TOOLS_PLATFORM.xz?= /usr/bin/xz 136TOOLS_PLATFORM.xz?= /usr/bin/xz
133.endif 137.endif
134.if exists(/usr/bin/xzcat) 138.if exists(/usr/bin/xzcat)
135TOOLS_PLATFORM.xzcat?= /usr/bin/xzcat 139TOOLS_PLATFORM.xzcat?= /usr/bin/xzcat
136.endif 140.endif
137TOOLS_PLATFORM.yacc?= /usr/bin/yacc 141TOOLS_PLATFORM.yacc?= /usr/bin/yacc
138 142
139.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 143.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
140. for _t_ in ar as ld nm objcopy objdump ranlib readelf strip 144. for _t_ in ar as ld nm objcopy objdump ranlib readelf strip
141TOOLS_PATH.${MACHINE_GNU_PLATFORM}-${_t_}?= \ 145TOOLS_PATH.${MACHINE_GNU_PLATFORM}-${_t_}?= \
142 ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-${_t_} 146 ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-${_t_}
143TOOLS_CREATE+= ${MACHINE_GNU_PLATFORM}-${_t_} 147TOOLS_CREATE+= ${MACHINE_GNU_PLATFORM}-${_t_}
144. endfor 148. endfor
145 149
146TOOLS_PATH.ar?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ar 150TOOLS_PATH.ar?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ar
147TOOLS_CREATE+= ar 151TOOLS_CREATE+= ar
148TOOLS_PATH.ranlib?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ranlib 152TOOLS_PATH.ranlib?= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ranlib
149TOOLS_CREATE+= ranlib 153TOOLS_CREATE+= ranlib
150 154
151NATIVE_CC:= /usr/bin/cc -B /usr/libexec -B /usr/bin 155NATIVE_CC:= /usr/bin/cc -B /usr/libexec -B /usr/bin
152CC= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-gcc 156CC= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-gcc
153 157
154NATIVE_CXX:= /usr/bin/c++ -B /usr/libexec -B /usr/bin 158NATIVE_CXX:= /usr/bin/c++ -B /usr/libexec -B /usr/bin
155CXX= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-g++ 159CXX= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-g++
156 160
157NATIVE_LD:= /usr/bin/ld 161NATIVE_LD:= /usr/bin/ld
158LD= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ld 162LD= ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-ld
159 163
160.endif 164.endif