pullup 3232
[pkgsrc.git] / mk / bsd.prefs.mk
1 # $NetBSD: bsd.prefs.mk,v 1.309 2010/04/30 03:29:55 sbd Exp $
2 #
3 # This file includes the mk.conf file, which contains the user settings.
4 #
5 # Packages should include this file before any of the .if directives, as
6 # well as before modifying variables like CFLAGS, LDFLAGS, and so on.
7 # Otherwise the behavior may be unexpected.
8 #
9 # When mk.conf is included by this file, the following variables are
10 # defined:
11 #
12 # ACCEPTABLE_LICENSES
13 #       This variable is set to the list of Open Source licenses. See
14 #       mk/license.mk for details.
15 #
16 # MACHINE_PLATFORM
17 #       The platform for which the packages are built. It has the form
18 #       ${OPSYS}-${OS_VERSION}-${MACHINE_ARCH}.
19 #
20 # NATIVE_MACHINE_PLATFORM
21 #       The platform on which the packages are built. This is usually
22 #       the same as ${MACHINE_PLATFORM}, but can be different when
23 #       cross-building packages.
24 #
25 # PKGPATH
26 #       The path of the package, relative to the pkgsrc top-level
27 #       directory. Typical values look like editors/emacs or
28 #       misc/openoffice-bin.
29 #
30 # Keywords: mk.conf user
31 #
32
33 .if !defined(BSD_PKG_MK)
34
35 # Let mk.conf know that this is pkgsrc.
36 BSD_PKG_MK=1
37 __PREFIX_SET__:=${PREFIX}
38
39 # Set PATH if not already set
40 .if !defined(PATH)
41 PATH=/bin:/usr/bin:/sbin:/usr/sbin
42 .endif
43
44 # Expand MAKE to a full path.
45 .if !defined(_MAKE)
46 _MAKE:= ${MAKE}
47 # allow for MAKE=./make and similar.
48 .  if empty(_MAKE:M/*) && !empty(_MAKE:M*/*) && defined(PWD) && exists(${PWD}/${MAKE})
49 _MAKE:= ${PWD}/${MAKE}
50 .  endif
51 .  for _dir_ in ${PATH:C/\:/ /g}
52 .    if empty(_MAKE:M/*)
53 .      if exists(${_dir_}/${MAKE})
54 _MAKE:= ${_dir_}/${MAKE}
55 .      endif
56 .    endif
57 .  endfor
58 .  if !empty(_MAKE:M/*)
59 MAKEFLAGS+=     _MAKE=${_MAKE:Q}
60 .  endif
61 .endif
62 MAKE:=  ${_MAKE}
63
64 .if exists(/usr/bin/uname)
65 UNAME=/usr/bin/uname
66 .elif exists(/bin/uname)
67 UNAME=/bin/uname
68 .else
69 UNAME=echo Unknown
70 .endif
71
72 .if !defined(OPSYS)
73 OPSYS:=                 ${:!${UNAME} -s!:S/-//g:S/\///g}
74 MAKEFLAGS+=             OPSYS=${OPSYS:Q}
75 .endif
76
77 # The _CMD indirection allows code below to modify these values
78 # without executing the commands at all.  Later, recursed make
79 # invocations will skip these blocks entirely thanks to MAKEFLAGS.
80 .if !defined(OS_VERSION)
81 _OS_VERSION_CMD=        ${UNAME} -r
82 OS_VERSION=             ${_OS_VERSION_CMD:sh}
83 MAKEFLAGS+=             OS_VERSION=${OS_VERSION:Q}
84 .endif
85
86 # Preload these for architectures not in all variations of bsd.own.mk,
87 # which do not match their GNU names exactly.
88 GNU_ARCH.arm26?=        arm
89 GNU_ARCH.arm32?=        arm
90 GNU_ARCH.i486?=         i386
91 GNU_ARCH.i586?=         i386
92 GNU_ARCH.i686?=         i386
93 GNU_ARCH.m68000?=       m68010
94 GNU_ARCH.mips?=         mipsel
95 GNU_ARCH.sh3eb?=        sh
96 GNU_ARCH.sh3el?=        shle
97 NATIVE_MACHINE_GNU_ARCH?=       ${GNU_ARCH.${NATIVE_MACHINE_ARCH}:U${NATIVE_MACHINE_ARCH}}
98 MACHINE_GNU_ARCH?=              ${GNU_ARCH.${MACHINE_ARCH}:U${MACHINE_ARCH}}
99
100 ## If changes are made to how OS_VERSION is set below please keep
101 ## "pkgsrc/pkgtools/osabi/INSTALL" in-sync.
102 .if ${OPSYS} == "NetBSD"
103 LOWER_OPSYS?=           netbsd
104
105 .elif ${OPSYS} == "AIX"
106 LOWER_ARCH!=            _cpuid=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $$1 }'`; \
107                         if /usr/sbin/lsattr -El $$_cpuid | grep ' POWER' >/dev/null 2>&1; then \
108                                 echo rs6000; \
109                         else \
110                                 echo powerpc; \
111                         fi
112 MACHINE_ARCH?=          ${LOWER_ARCH}
113 .  if exists(/usr/bin/oslevel)
114 _OS_VERSION!=           /usr/bin/oslevel
115 .  else
116 _OS_VERSION!=           echo `${UNAME} -v`.`${UNAME} -r`
117 .  endif
118 OS_VERSION=             ${_OS_VERSION:C/\([0-9]*\.[0-9]*\).*/\1/}
119 LOWER_OPSYS_VERSUFFIX=  ${_OS_VERSION}
120 LOWER_OPSYS?=           aix
121 LOWER_VENDOR?=          ibm
122
123 .elif ${OPSYS} == "BSDOS"
124 LOWER_OPSYS?=           bsdi
125
126 .elif ${OPSYS} == "Darwin"
127 LOWER_OPSYS?=           darwin
128 .if empty(OS_VERSION:M[1-9].*.*)
129 # Automatically select the ABI under Mac OS X Snow Leopard. We don't
130 # use this at the moment because too many third party programs don't
131 # work with it.
132 #
133 # _SYSCTL_HW_OPTIONAL_X86_64!=  /usr/sbin/sysctl -n hw.optional.x86_64
134 # .  if ${_SYSCTL_HW_OPTIONAL_X86_64} == "1"
135 # ABI=                  64
136 # .else
137 # ABI=                  32
138 #.  endif
139 ABI=                    32
140 LOWER_ARCH.32=          i386
141 LOWER_ARCH.64=          x86_64
142 LOWER_ARCH=             ${LOWER_ARCH.${ABI}}
143 .else
144 LOWER_ARCH!=            ${UNAME} -p
145 .endif
146 MACHINE_ARCH=           ${LOWER_ARCH}
147 MAKEFLAGS+=             LOWER_ARCH=${LOWER_ARCH:Q}
148 LOWER_OPSYS_VERSUFFIX=  ${LOWER_OS_VERSION:C/([0-9]*).*/\1/}
149 LOWER_VENDOR?=          apple
150
151 .elif ${OPSYS} == "DragonFly"
152 OS_VERSION:=            ${OS_VERSION:C/-.*$//}
153 LOWER_OPSYS?=           dragonfly
154 LOWER_ARCH!=            ${UNAME} -p
155 .  if ${LOWER_ARCH} == "amd64"
156 MACHINE_ARCH=           x86_64
157 .  else
158 MACHINE_ARCH=           ${LOWER_ARCH}
159 .  endif
160 MAKEFLAGS+=             LOWER_ARCH=${LOWER_ARCH:Q}
161 LOWER_VENDOR?=          pc
162
163 .elif ${OPSYS} == "FreeBSD"
164 OS_VERSION:=            ${OS_VERSION:C/-.*$//}
165 LOWER_OPSYS?=           freebsd
166 LOWER_ARCH!=            ${UNAME} -p
167 .  if ${LOWER_ARCH} == "amd64"
168 MACHINE_ARCH=           x86_64
169 .  else
170 MACHINE_ARCH=           ${LOWER_ARCH}
171 .  endif
172 MAKEFLAGS+=             LOWER_ARCH=${LOWER_ARCH:Q}
173 LOWER_OPSYS_VERSUFFIX=  ${LOWER_OS_VERSION:C/([0-9]*).*/\1/}
174 .  if ${LOWER_ARCH} == "i386"
175 LOWER_VENDOR?=          pc
176 .  endif
177 LOWER_VENDOR?=          unknown
178
179 .elif ${OPSYS} == "Haiku"
180 LOWER_OPSYS?=           haiku
181 .  if ${MACHINE_ARCH} == "i386"
182 LOWER_VENDOR?=          pc
183 .  endif
184
185 .elif ${OPSYS} == "Interix"
186 LOWER_OPSYS?=           interix
187 LOWER_VENDOR?=          pc
188 .  if exists(/usr/lib/libc.so.5.2) || exists(/usr/lib/x86/libc.so.5.2)
189 LOWER_OPSYS_VERSUFFIX=  ${LOWER_OS_VERSION:C/([0-9]*).*/\1/}
190 .  else
191 LOWER_OPSYS_VERSUFFIX?= 3
192 .    if exists(/usr/lib/libc.so.3.5)
193 OS_VERSION=             3.5
194 .    elif exists(/usr/lib/libc.so.3.1)
195 OS_VERSION=             3.1
196 .    else
197 OS_VERSION=             3.0
198 .    endif
199 .  endif
200
201 .elif !empty(OPSYS:MIRIX*)
202 LOWER_ARCH!=            ${UNAME} -p
203 LOWER_OPSYS?=           irix
204 LOWER_OPSYS_VERSUFFIX?= ${OS_VERSION}
205 LOWER_VENDOR?=          sgi
206
207 .elif ${OPSYS} == "Linux"
208 OS_VERSION:=            ${OS_VERSION:C/-.*$//}
209 LOWER_OPSYS?=           linux
210 MACHINE_ARCH:=          ${MACHINE_ARCH:C/i.86/i386/}
211 MACHINE_ARCH:=          ${MACHINE_ARCH:C/ppc/powerpc/}
212 .  if !defined(LOWER_ARCH)
213 LOWER_ARCH!=            ${UNAME} -m | sed -e 's/i.86/i386/' -e 's/ppc/powerpc/'
214 .  endif # !defined(LOWER_ARCH)
215 .  if ${LOWER_ARCH} == "x86_64"
216 MACHINE_ARCH=           x86_64
217 .  endif
218 .  if ${MACHINE_ARCH} == "unknown" || ${MACHINE_ARCH} == ""
219 MACHINE_ARCH=           ${LOWER_ARCH}
220 MAKEFLAGS+=             LOWER_ARCH=${LOWER_ARCH:Q}
221 .  endif
222 .  if exists(/etc/debian_version)
223 LOWER_VENDOR?=          debian
224 .  elif exists(/etc/mandrake-release)
225 LOWER_VENDOR?=          mandrake
226 .  elif exists(/etc/redhat-version)
227 LOWER_VENDOR?=          redhat
228 .  elif exists(/etc/slackware-version)
229 LOWER_VENDOR?=          slackware
230 .  elif exists(/etc/ssdlinux_version)
231 LOWER_VENDOR?=          ssd
232 .  elif ${LOWER_ARCH} == "i386"
233 LOWER_VENDOR?=          pc
234 .  endif
235 LOWER_VENDOR?=          unknown
236
237 .elif ${OPSYS} == "OSF1"
238 LOWER_ARCH!=            ${UNAME} -p
239 MAKEFLAGS+=             LOWER_ARCH=${LOWER_ARCH:Q}
240 MACHINE_ARCH?=          ${LOWER_ARCH}
241 OS_VERSION:=            ${OS_VERSION:C/^V//}
242 LOWER_OPSYS?=           osf1
243 LOWER_OPSYS_VERSUFFIX?= ${OS_VERSION}
244 LOWER_VENDOR?=          dec
245
246 .elif ${OPSYS} == "HPUX"
247 OS_VERSION:=            ${OS_VERSION:C/^B.//}
248 .if ${MACHINE_ARCH} == "9000"
249 MACHINE_ARCH=           hppa
250 .endif
251 LOWER_OPSYS?=           hpux
252 LOWER_OPSYS_VERSUFFIX?= ${OS_VERSION}
253 LOWER_VENDOR?=          hp
254
255 .elif ${OPSYS} == "SunOS"
256 .  if ${MACHINE_ARCH} == "sparc"
257 SPARC_TARGET_ARCH?=     sparcv7
258 .  elif ${MACHINE_ARCH} == "sun4"
259 MACHINE_ARCH=           sparc
260 SPARC_TARGET_ARCH?=     sparcv7
261 .  elif ${MACHINE_ARCH} == "i86pc" || ${MACHINE_ARCH} == "i86xpv"
262 MACHINE_ARCH=           i386
263 .  elif ${MACHINE_ARCH} == "unknown"
264 .    if !defined(LOWER_ARCH)
265 LOWER_ARCH!=            ${UNAME} -p
266 .    endif      # !defined(LOWER_ARCH)
267 MAKEFLAGS+=             LOWER_ARCH=${LOWER_ARCH:Q}
268 .  endif
269 LOWER_VENDOR?=          sun
270 LOWER_OPSYS?=           solaris
271 LOWER_OPSYS_VERSUFFIX=  2
272
273 .elif !defined(LOWER_OPSYS)
274 LOWER_OPSYS:=           ${OPSYS:tl}
275 .endif
276
277 # Now commit the [LOWER_]OS_VERSION values computed above, eliding the :sh
278 OS_VERSION:=            ${OS_VERSION}
279 LOWER_OS_VERSION:=      ${OS_VERSION:tl}
280
281 MAKEFLAGS+=             LOWER_OPSYS=${LOWER_OPSYS:Q}
282
283 LOWER_VENDOR?=                  # empty ("arch--opsys")
284 LOWER_ARCH?=                    ${MACHINE_GNU_ARCH}
285 # Expand now as MACHINE_ARCH can be overriden in mk.conf and
286 # LOWER_ARCH is typically derived from it.
287 NATIVE_LOWER_ARCH:=             ${LOWER_ARCH}
288 NATIVE_MACHINE_ARCH:=           ${MACHINE_ARCH}
289
290 NATIVE_MACHINE_PLATFORM?=       ${OPSYS}-${OS_VERSION}-${NATIVE_MACHINE_ARCH}
291 MACHINE_PLATFORM?=              ${OPSYS}-${OS_VERSION}-${MACHINE_ARCH}
292 NATIVE_MACHINE_GNU_PLATFORM?=   ${NATIVE_MACHINE_GNU_ARCH}-${LOWER_VENDOR}-${LOWER_OPSYS:C/[0-9]//g}${APPEND_ELF}${LOWER_OPSYS_VERSUFFIX}
293 MACHINE_GNU_PLATFORM?=          ${MACHINE_GNU_ARCH}-${LOWER_VENDOR}-${LOWER_OPSYS:C/[0-9]//g}${APPEND_ELF}${LOWER_OPSYS_VERSUFFIX}
294
295 # Needed to prevent an "install:" target from being created in bsd.own.mk.
296 NEED_OWN_INSTALL_TARGET=no
297
298 # This prevents default use of the cross-tool harness in the "src" tree,
299 # in the odd possible case of someone extracting "pkgsrc" underneath "src".
300 USETOOLS=               no
301 MAKE_ENV+=              USETOOLS=no
302
303 # Set this before <bsd.own.mk> does, since it doesn't know about Darwin
304 .if ${OPSYS} == "Darwin"
305 OBJECT_FMT?=            Mach-O
306 .endif
307
308 ACCEPTABLE_LICENSES?=   ${DEFAULT_ACCEPTABLE_LICENSES}
309
310 # Provide PKGPATH early on so that mk.conf can use it.
311 PKGPATH?=               ${.CURDIR:C|.*/([^/]*/[^/]*)$|\1|}
312
313 # Load the settings from MAKECONF, which is /etc/mk.conf by default.
314 .include <bsd.own.mk>
315
316 # /usr/share/mk/bsd.own.mk on NetBSD 1.3 does not define OBJECT_FMT
317 .if !empty(MACHINE_PLATFORM:MNetBSD-1.3*)
318 .  if ${MACHINE_ARCH} == "alpha" || \
319       ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
320       ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "sparc64"
321 OBJECT_FMT?=            ELF
322 .  else
323 OBJECT_FMT?=            a.out
324 .  endif
325 # override what bootstrap-pkgsrc sets, which isn't right for NetBSD
326 # 1.4.
327 # XXX other ELF platforms in 1.4 need to be added to here.
328 .elif !empty(MACHINE_PLATFORM:MNetBSD-1.4*)
329 .  if ${MACHINE_ARCH} == "alpha" || \
330       ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
331       ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "sparc64"
332 OBJECT_FMT=             ELF
333 .  else
334 OBJECT_FMT=             a.out
335 .  endif
336 .endif
337
338 .if ${OPSYS} == "OpenBSD"
339 .  if defined(ELF_TOOLCHAIN) && ${ELF_TOOLCHAIN} == "yes"
340 OBJECT_FMT?=    ELF
341 .  else
342 OBJECT_FMT?=    a.out
343 .  endif
344 .elif ${OPSYS} == "DragonFly"
345 OBJECT_FMT=     ELF
346 .elif ${OPSYS} == "AIX"
347 OBJECT_FMT=     XCOFF
348 .elif ${OPSYS} == "OSF1"
349 OBJECT_FMT=     ECOFF
350 .elif ${OPSYS} == "HPUX"
351 .  if ${MACHINE_ARCH} == "ia64" || (defined(ABI) && ${ABI} == "64")
352 OBJECT_FMT=     ELF
353 .  else
354 OBJECT_FMT=     SOM
355 .  endif
356 .endif
357
358 # Calculate depth
359 .if exists(${.CURDIR}/mk/bsd.pkg.mk)
360 _PKGSRC_TOPDIR= ${.CURDIR}
361 .elif exists(${.CURDIR}/../mk/bsd.pkg.mk)
362 _PKGSRC_TOPDIR= ${.CURDIR}/..
363 .elif exists(${.CURDIR}/../../mk/bsd.pkg.mk)
364 _PKGSRC_TOPDIR= ${.CURDIR}/../..
365 .endif
366
367 # include the defaults file
368 .include "${_PKGSRC_TOPDIR}/mk/defaults/mk.conf"
369
370 SHAREOWN?=              ${DOCOWN}
371 SHAREGRP?=              ${DOCGRP}
372 SHAREMODE?=             ${DOCMODE}
373
374 .if defined(PREFIX) && (${PREFIX} != ${__PREFIX_SET__})
375 .BEGIN:
376         @${ECHO_MSG} "You CANNOT set PREFIX manually or in mk.conf. Set LOCALBASE or X11BASE"
377         @${ECHO_MSG} "depending on your needs. See the pkg system documentation for more info."
378         @${FALSE}
379 .endif
380
381 # Load the OS-specific definitions for program variables.  Default to loading
382 # the NetBSD ones if an OS-specific file doesn't exist.
383 .if exists(${_PKGSRC_TOPDIR}/mk/platform/${OPSYS}.mk)
384 .  include "${_PKGSRC_TOPDIR}/mk/platform/${OPSYS}.mk"
385 .else
386 .  include "${_PKGSRC_TOPDIR}/mk/platform/NetBSD.mk"
387 PKG_FAIL_REASON+=       "missing mk/platform/${OPSYS}.mk"
388 .endif
389
390 PKGDIRMODE?=            755
391
392 # A meta-package is a package that does not have any files and whose
393 # only purpose is to depend on other packages, giving that collection
394 # a simple name.
395 #
396 # This variable must be set before including bsd.prefs.mk directly or
397 # indirectly.
398 #
399 # Keywords: meta meta-package META_PACKAGE
400 #
401 .if defined(META_PACKAGE)
402 PKG_DESTDIR_SUPPORT=    user-destdir
403 NO_CONFIGURE=           yes
404 NO_BUILD=               yes
405 DISTFILES=              # none
406 PLIST_SRC=              # none
407 CHECK_PERMS=            no
408 USE_LANGUAGES=          # empty
409 do-patch:
410         @${DO_NADA}
411 do-install:
412         @${DO_NADA}
413 .endif
414
415 # PKG_DESTDIR_SUPPORT can only be one of "destdir" or "user-destdir".
416 .if defined(PKG_DEVELOPER)
417 USE_DESTDIR?=           yes
418 .else
419 USE_DESTDIR?=           no
420 .endif
421 PKG_DESTDIR_SUPPORT?=   # empty
422
423 .if empty(PKG_DESTDIR_SUPPORT) || empty(USE_DESTDIR:M[Yy][Ee][Ss])
424 .  if empty(USE_DESTDIR:M[Yy][Ee][Ss]) && empty(USE_DESTDIR:M[Nn][Oo])
425 PKG_FAIL_REASON+=       "USE_DESTDIR must be either \`\`yes'' or \`\`no''"
426 .  endif
427 _USE_DESTDIR=           no
428 .elif ${PKG_DESTDIR_SUPPORT} == "user-destdir"
429 _USE_DESTDIR=           user-destdir
430 .elif ${PKG_DESTDIR_SUPPORT} == "destdir"
431 _USE_DESTDIR=           destdir
432 .else
433 PKG_FAIL_REASON+=       "PKG_DESTDIR_SUPPORT must be \`\`destdir'' or \`\`user-destdir''."
434 .endif
435
436 .if defined(PKG_DEVELOPER) && empty(PKG_DESTDIR_SUPPORT)
437 WARNINGS+=      "[bsd.prefs.mk] The package ${PKGNAME} is missing DESTDIR support."
438 .endif
439
440 # When using staged installation, everything gets installed into
441 # ${DESTDIR}${PREFIX} instead of ${PREFIX} directly.
442 #
443 .if ${_USE_DESTDIR} != "no"
444 DESTDIR=                ${WRKDIR}/.destdir
445 .  if ${_USE_DESTDIR} == "destdir"
446 _MAKE_PACKAGE_AS_ROOT=  yes
447 _MAKE_CLEAN_AS_ROOT=    yes
448 _MAKE_INSTALL_AS_ROOT=  yes
449 .  elif ${_USE_DESTDIR} == "user-destdir"
450 _MAKE_PACKAGE_AS_ROOT=  no
451 _MAKE_CLEAN_AS_ROOT=    no
452 _MAKE_INSTALL_AS_ROOT=  no
453 .  endif
454 .else
455 DESTDIR=
456 .endif
457
458 _MAKE_CLEAN_AS_ROOT?=   no
459 # Whether to run the clean target as root.
460 _MAKE_INSTALL_AS_ROOT?= yes
461 # Whether to run the install target as root.
462 _MAKE_PACKAGE_AS_ROOT?= yes
463 # Whether to run the package target as root.
464
465 # When cross-compilation support is requested, the following options
466 # must be specified as well or guessable:
467 # - MACHINE_ARCH is set to TARGET_ARCH if set.
468 # - CROSS_DESTDIR is guessed from MAKEOBJDIR and MACHINE_ARCH.
469 # - PKG_DBDIR is expanded and prefixed with CROSS_DESTDIR
470 # - DESTDIR support is required
471 #
472 # _CROSS_DESTDIR is set for internal use to avoid conditionalising
473 # the use.
474
475 .if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
476 .  if defined(TARGET_ARCH)
477 MACHINE_ARCH=   ${TARGET_ARCH}
478 .  endif
479 CROSS_DESTDIR?= ${MAKEOBJDIR}/destdir.${MACHINE_ARCH}
480 .  if !exists(${CROSS_DESTDIR}/usr/include/stddef.h)
481 PKG_FAIL_REASON+=       "The cross-compiling root ${CROSS_DESTDIR:Q} is incomplete"
482 .  else
483 _CROSS_DESTDIR= ${CROSS_DESTDIR}
484 .  endif
485 .endif
486
487 # Depends on MACHINE_ARCH override above
488 .if ${OPSYS} == "NetBSD"
489 .  if ${OBJECT_FMT} == "ELF" && \
490    (${MACHINE_GNU_ARCH} == "arm" || \
491     ${MACHINE_ARCH} == "i386" || \
492     ${MACHINE_ARCH} == "m68k" || \
493     ${MACHINE_ARCH} == "m68000" || \
494     ${MACHINE_GNU_ARCH} == "sh" || \
495     ${MACHINE_GNU_ARCH} == "shle" || \
496     ${MACHINE_ARCH} == "sparc" || \
497     ${MACHINE_ARCH} == "vax")
498 APPEND_ELF=             elf
499 .  endif
500 .endif
501
502 PKG_INSTALLATION_TYPES?= overwrite
503 # This is a whitespace-separated list of installation types supported
504 # by the package.
505 #
506 # *NOTE*: This variable *must* be set in the package Makefile *before*
507 #         the inclusion of bsd.prefs.mk.
508 #
509 # Possible: any of: overwrite, pkgviews
510 # Default: overwrite
511
512 # Set the style of installation to be performed for the package.  The
513 # funky make variable modifiers just select the first word of the value
514 # stored in the referenced variable.
515 #
516 .for _pref_ in ${PKG_INSTALLATION_PREFS}
517 .  if !empty(PKG_INSTALLATION_TYPES:M${_pref_})
518 PKG_INSTALLATION_TYPE?= ${PKG_INSTALLATION_TYPES:M${_pref_}:S/^/_pkginsttype_/1:M_pkginsttype_*:S/^_pkginsttype_//}
519 .  endif
520 .endfor
521 PKG_INSTALLATION_TYPE?= none
522
523 # if the system is IPv6-ready, compile with IPv6 support turned on.
524 .if empty(_OPSYS_HAS_INET6:M[nN][oO])
525 IPV6_READY=             YES
526 .else
527 IPV6_READY=             NO
528 .endif
529
530 LOCALBASE?=             /usr/pkg
531 X11_TYPE?=              native
532 .if !empty(X11_TYPE:Mnative)
533 .  if ${OPSYS} == "SunOS"
534 # On Solaris, we default to using OpenWindows for X11.
535 X11BASE?=       /usr/openwin
536 .  elif ${OPSYS} == "IRIX" || ${OPSYS} == "OSF1" || ${OPSYS} == "HPUX"
537 X11BASE?=       /usr
538 .  elif !empty(MACHINE_PLATFORM:MDarwin-9.*-*) || \
539         !empty(MACHINE_PLATFORM:MDarwin-??.*-*)
540 X11BASE?=       /usr/X11
541 .  elif exists(/usr/X11R7/lib/libX11.so)
542 X11BASE?=       /usr/X11R7
543 .  else
544 X11BASE?=       /usr/X11R6
545 .  endif
546 .endif
547 CROSSBASE?=     ${LOCALBASE}/cross
548
549 # If xpkgwedge.def is found, then clearly we're using xpkgwedge.
550 .if exists(${LOCALBASE}/lib/X11/config/xpkgwedge.def) || \
551     exists(${X11BASE}/lib/X11/config/xpkgwedge.def)
552 USE_XPKGWEDGE=  yes
553 .elif ${PKG_INSTALLATION_TYPE} == "pkgviews"
554 USE_XPKGWEDGE=          yes
555 .elif ${X11_TYPE} == "modular"
556 USE_XPKGWEDGE=  no
557 .else
558 USE_XPKGWEDGE?= yes
559 .endif
560
561 .if defined(FIX_SYSTEM_HEADERS) && ${FIX_SYSTEM_HEADERS} == "yes" && \
562     !defined(BOOTSTRAP_PKG) && \
563     exists(../../pkgtools/compat_headers/buildlink3.mk)
564 .  include "../../pkgtools/compat_headers/buildlink3.mk"
565 .endif
566
567 .if ${X11_TYPE} == "modular"
568 X11BASE=                ${LOCALBASE}
569 .endif
570
571 .if !empty(USE_XPKGWEDGE:M[Yy][Ee][Ss])
572 X11PREFIX=              ${LOCALBASE}
573 .else
574 X11PREFIX=              ${X11BASE}
575 .endif
576
577 # Default directory for font encodings
578 X11_ENCODINGSDIR?=      ${X11BASE}/lib/X11/fonts/encodings
579
580 DEPOT_SUBDIR?=          packages
581 DEPOTBASE=              ${LOCALBASE}/${DEPOT_SUBDIR}
582
583 # LINK_RPATH_FLAG publicly exports the linker flag used to set the
584 # run-time library search path.
585 #
586 .if defined(_OPSYS_LINKER_RPATH_FLAG)
587 LINKER_RPATH_FLAG=      ${_OPSYS_LINKER_RPATH_FLAG}
588 .else
589 LINKER_RPATH_FLAG?=     ${_LINKER_RPATH_FLAG}
590 .endif
591
592 # COMPILER_RPATH_FLAG publicly exports the compiler flag used to pass
593 # run-time library search path directives to the linker.
594 #
595 .if defined(_OPSYS_COMPILER_RPATH_FLAG)
596 COMPILER_RPATH_FLAG=    ${_OPSYS_COMPILER_RPATH_FLAG}
597 .else
598 COMPILER_RPATH_FLAG?=   ${_COMPILER_RPATH_FLAG}
599 .endif
600
601 # WHOLE_ARCHIVE_FLAG and NO_WHOLE_ARCHIVE_FLAG publically export the
602 # linker flags to extract all symbols from a static archive.
603 #
604 WHOLE_ARCHIVE_FLAG?=    ${_OPSYS_WHOLE_ARCHIVE_FLAG}
605 NO_WHOLE_ARCHIVE_FLAG?= ${_OPSYS_NO_WHOLE_ARCHIVE_FLAG}
606
607 USE_TOOLS?=     # empty
608
609 # Provide default values for TOOLs used by the top-level make.
610 USE_TOOLS+=     [ awk dirname echo grep pwd sed test true
611
612 # These tools are used by the top-level make only in certain packages and
613 # should eventually be moved into those particular package Makefiles.
614 #
615 USE_TOOLS+=     date tr
616
617 # These are tools used directly by bsd.prefs.mk and files included by
618 # bsd.prefs.mk.
619 #
620 USE_TOOLS+=     awk:pkgsrc cut:pkgsrc echo:pkgsrc pwd:pkgsrc            \
621                 sed:pkgsrc tr:pkgsrc uname:pkgsrc
622
623 .include "${_PKGSRC_TOPDIR}/mk/tools/defaults.mk"
624
625 .if !defined(_PKGSRCDIR)
626 _PKGSRCDIR!=            cd ${_PKGSRC_TOPDIR} && ${PWD_CMD}
627 MAKEFLAGS+=             _PKGSRCDIR=${_PKGSRCDIR:Q}
628 .endif
629 PKGSRCDIR=              ${_PKGSRCDIR}
630
631 DISTDIR?=               ${PKGSRCDIR}/distfiles
632 PACKAGES?=              ${PKGSRCDIR}/packages
633 TEMPLATES?=             ${PKGSRCDIR}/templates
634
635 PATCHDIR?=              ${.CURDIR}/patches
636 FILESDIR?=              ${.CURDIR}/files
637 PKGDIR?=                ${.CURDIR}
638
639 _PKGSRC_DEPS?=          # empty
640 _BUILTIN_PKGS?=         # empty
641
642 # If WRKOBJDIR is set, use that tree to build
643 .if defined(WRKOBJDIR)
644 BUILD_DIR?=             ${WRKOBJDIR}/${PKGPATH}
645 .else
646 BUILD_DIR!=             cd ${.CURDIR} && ${PWD_CMD}
647 .endif
648
649 # If OBJHOSTNAME is set, use first component of hostname in directory name.
650 # If OBJMACHINE is set, use ${MACHINE_ARCH} in the working directory name.
651 #
652 .if defined(OBJHOSTNAME)
653 .  if !defined(_HOSTNAME)
654 _HOSTNAME!=             ${UNAME} -n
655 MAKEFLAGS+=             _HOSTNAME=${_HOSTNAME:Q}
656 .  endif
657 WRKDIR_BASENAME?=       work.${_HOSTNAME:C|\..*||}
658 MAKEFLAGS+=             OBJHOSTNAME=${OBJHOSTNAME:Q}
659 .elif defined(OBJMACHINE)
660 WRKDIR_BASENAME?=       work.${MACHINE_ARCH}
661 MAKEFLAGS+=             OBJMACHINE=${OBJMACHINE:Q}
662 .else
663 WRKDIR_BASENAME?=       work
664 .endif
665
666 WRKDIR?=                ${BUILD_DIR}/${WRKDIR_BASENAME}
667
668 # There are many uses for a common log file, so define one that may be
669 # picked up and used by tools.mk, bsd.buildlink3.mk, etc.
670 #
671 WRKLOG?=                ${WRKDIR}/.work.log
672
673 PKG_DEFAULT_OPTIONS?=   # empty
674 PKG_OPTIONS?=           # empty
675
676 # we want this *before* compiler.mk, so that compiler.mk paths override them
677 .if ${X11_TYPE} != "modular" && defined(USE_X11)
678 PREPEND_PATH+=          ${X11BASE}/bin
679 .endif
680 PREPEND_PATH+=          ${LOCALBASE}/bin
681
682 # Wrapper framework definitions
683 .include "wrapper/wrapper-defs.mk"
684
685 # Binary emulator framework definitions
686 .if defined(EMUL_PLATFORMS) && !empty(EMUL_PLATFORMS)
687 .  include "emulator/emulator-vars.mk"
688 .endif
689
690 # System features framework
691 .include "features/features-vars.mk"
692
693 # Package system flavor definitions
694 .include "flavor/bsd.flavor-vars.mk"
695
696 # Make variable definitions cache
697 .include "bsd.makevars.mk"
698
699 # If MAKECONF is defined, then pass it down to all recursive make
700 # processes invoked by pkgsrc.
701 #
702 PKGSRC_MAKE_ENV+=       ${MAKECONF:DMAKECONF=${MAKECONF:Q}}
703 RECURSIVE_MAKE=         ${SETENV} ${PKGSRC_MAKE_ENV} ${MAKE}
704
705 _VARGROUPS+=            dirs
706 _USER_VARS.dirs=        DISTDIR LOCALBASE PACKAGES PKG_SYSCONFDIR WRKOBJDIR
707 _PKG_VARS.dirs=         WRKSRC PATCHDIR FILESDIR PKGDIR
708 _SYS_VARS.dirs=         WRKDIR DESTDIR PKG_SYSCONFBASEDIR
709
710 # List of 64bit operating systems with sizeof(int) != sizeof(void *).
711 # This can be used for software that is not 64bit clean.
712 #
713 # Keywords: ONLY_FOR_PLATFORM NOT_FOR_PLATFORM 64bit
714 #
715 LP64PLATFORMS=          *-*-alpha *-*-sparc64 *-*-x86_64
716
717 .endif  # BSD_PKG_MK