Deleted Added
full compact
src.opts.mk (261296) src.opts.mk (261297)
1# $FreeBSD: head/share/mk/bsd.own.mk 261296 2014-01-30 21:08:36Z brooks $
1# $FreeBSD: head/share/mk/bsd.own.mk 261297 2014-01-30 21:25:01Z brooks $
2#
3# The include file <bsd.own.mk> set common variables for owner,
4# group, mode, and directories. Defaults are in brackets.
5#
6#
7# +++ variables +++
8#
9# DESTDIR Change the tree where the file gets installed. [not set]
10#
11# DISTDIR Change the tree where the file for a distribution
12# gets installed (see /usr/src/release/Makefile). [not set]
13#
14# COMPRESS_CMD Program to compress documents.
15# Output is to stdout. [gzip -cn]
16#
17# COMPRESS_EXT File name extension of ${COMPRESS_CMD} command. [.gz]
18#
19# BINOWN Binary owner. [root]
20#
21# BINGRP Binary group. [wheel]
22#
23# BINMODE Binary mode. [555]
24#
25# NOBINMODE Mode for non-executable files. [444]
26#
27# LIBDIR Base path for libraries. [/usr/lib]
28#
29# LIBCOMPATDIR Base path for compat libraries. [/usr/lib/compat]
30#
31# LIBPRIVATEDIR Base path for private libraries. [/usr/lib/private]
32#
33# LIBDATADIR Base path for misc. utility data files. [/usr/libdata]
34#
35# LIBEXECDIR Base path for system daemons and utilities. [/usr/libexec]
36#
37# LINTLIBDIR Base path for lint libraries. [/usr/libdata/lint]
38#
39# SHLIBDIR Base path for shared libraries. [${LIBDIR}]
40#
41# LIBOWN Library owner. [${BINOWN}]
42#
43# LIBGRP Library group. [${BINGRP}]
44#
45# LIBMODE Library mode. [${NOBINMODE}]
46#
47#
48# DEBUGDIR Base path for standalone debug files. [/usr/lib/debug]
49#
50# DEBUGMODE Mode for debug files. [${NOBINMODE}]
51#
52#
53# KMODDIR Base path for loadable kernel modules
54# (see kld(4)). [/boot/kernel]
55#
56# KMODOWN Kernel and KLD owner. [${BINOWN}]
57#
58# KMODGRP Kernel and KLD group. [${BINGRP}]
59#
60# KMODMODE KLD mode. [${BINMODE}]
61#
62#
63# SHAREDIR Base path for architecture-independent ascii
64# text files. [/usr/share]
65#
66# SHAREOWN ASCII text file owner. [root]
67#
68# SHAREGRP ASCII text file group. [wheel]
69#
70# SHAREMODE ASCII text file mode. [${NOBINMODE}]
71#
72#
73# CONFDIR Base path for configuration files. [/etc]
74#
75# CONFOWN Configuration file owner. [root]
76#
77# CONFGRP Configuration file group. [wheel]
78#
79# CONFMODE Configuration file mode. [644]
80#
81#
82# DOCDIR Base path for system documentation (e.g. PSD, USD,
83# handbook, FAQ etc.). [${SHAREDIR}/doc]
84#
85# DOCOWN Documentation owner. [${SHAREOWN}]
86#
87# DOCGRP Documentation group. [${SHAREGRP}]
88#
89# DOCMODE Documentation mode. [${NOBINMODE}]
90#
91#
92# INFODIR Base path for GNU's hypertext system
93# called Info (see info(1)). [${SHAREDIR}/info]
94#
95# INFOOWN Info owner. [${SHAREOWN}]
96#
97# INFOGRP Info group. [${SHAREGRP}]
98#
99# INFOMODE Info mode. [${NOBINMODE}]
100#
101#
102# MANDIR Base path for manual installation. [${SHAREDIR}/man/man]
103#
104# MANOWN Manual owner. [${SHAREOWN}]
105#
106# MANGRP Manual group. [${SHAREGRP}]
107#
108# MANMODE Manual mode. [${NOBINMODE}]
109#
110#
111# NLSDIR Base path for National Language Support files
112# installation. [${SHAREDIR}/nls]
113#
114# NLSOWN National Language Support files owner. [${SHAREOWN}]
115#
116# NLSGRP National Language Support files group. [${SHAREGRP}]
117#
118# NLSMODE National Language Support files mode. [${NOBINMODE}]
119#
120# INCLUDEDIR Base path for standard C include files [/usr/include]
121
122.if !target(__<bsd.own.mk>__)
123__<bsd.own.mk>__:
124
125.if !defined(_WITHOUT_SRCCONF)
126SRCCONF?= /etc/src.conf
127.if exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf"
128.include "${SRCCONF}"
129.endif
130.endif
131
132# Binaries
133BINOWN?= root
134BINGRP?= wheel
135BINMODE?= 555
136NOBINMODE?= 444
137
138.if defined(MODULES_WITH_WORLD)
139KMODDIR?= /boot/modules
140.else
141KMODDIR?= /boot/kernel
142.endif
143KMODOWN?= ${BINOWN}
144KMODGRP?= ${BINGRP}
145KMODMODE?= ${BINMODE}
146
147LIBDIR?= /usr/lib
148LIBCOMPATDIR?= /usr/lib/compat
149LIBPRIVATEDIR?= /usr/lib/private
150LIBDATADIR?= /usr/libdata
151LIBEXECDIR?= /usr/libexec
152LINTLIBDIR?= /usr/libdata/lint
153SHLIBDIR?= ${LIBDIR}
154LIBOWN?= ${BINOWN}
155LIBGRP?= ${BINGRP}
156LIBMODE?= ${NOBINMODE}
157
158DEBUGDIR?= /usr/lib/debug
159DEBUGMODE?= ${NOBINMODE}
160
161
162# Share files
163SHAREDIR?= /usr/share
164SHAREOWN?= root
165SHAREGRP?= wheel
166SHAREMODE?= ${NOBINMODE}
167
168CONFDIR?= /etc
169CONFOWN?= root
170CONFGRP?= wheel
171CONFMODE?= 644
172
173MANDIR?= ${SHAREDIR}/man/man
174MANOWN?= ${SHAREOWN}
175MANGRP?= ${SHAREGRP}
176MANMODE?= ${NOBINMODE}
177
178DOCDIR?= ${SHAREDIR}/doc
179DOCOWN?= ${SHAREOWN}
180DOCGRP?= ${SHAREGRP}
181DOCMODE?= ${NOBINMODE}
182
183INFODIR?= ${SHAREDIR}/info
184INFOOWN?= ${SHAREOWN}
185INFOGRP?= ${SHAREGRP}
186INFOMODE?= ${NOBINMODE}
187
188NLSDIR?= ${SHAREDIR}/nls
189NLSOWN?= ${SHAREOWN}
190NLSGRP?= ${SHAREGRP}
191NLSMODE?= ${NOBINMODE}
192
193INCLUDEDIR?= /usr/include
194
195#
196# install(1) parameters.
197#
198HRDLINK?= -l h
199SYMLINK?= -l s
200
201INSTALL_LINK?= ${INSTALL} ${HRDLINK}
202INSTALL_SYMLINK?= ${INSTALL} ${SYMLINK}
203
204# Common variables
205.if !defined(DEBUG_FLAGS)
206STRIP?= -s
207.endif
208
209COMPRESS_CMD?= gzip -cn
210COMPRESS_EXT?= .gz
211
212.if !defined(_WITHOUT_SRCCONF)
213#
214# Define MK_* variables (which are either "yes" or "no") for users
215# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
216# make(1) environment.
217# These should be tested with `== "no"' or `!= "no"' in makefiles.
218# The NO_* variables should only be set by makefiles.
219#
220
221#
222# Supported NO_* options (if defined, MK_* will be forced to "no",
223# regardless of user's setting).
224#
225.for var in \
226 CTF \
227 DEBUG_FILES \
228 INSTALLLIB \
229 MAN \
230 PROFILE
231.if defined(NO_${var})
232.if defined(WITH_${var})
233.undef WITH_${var}
234.endif
235WITHOUT_${var}=
236.endif
237.endfor
238
239#
240# Older-style variables that enabled behaviour when set.
241#
242.if defined(YES_HESIOD)
243WITH_HESIOD=
244.endif
245
246__DEFAULT_YES_OPTIONS = \
247 ACCT \
248 ACPI \
249 AMD \
250 APM \
251 ARM_EABI \
252 ASSERT_DEBUG \
253 AT \
254 ATM \
255 AUDIT \
256 AUTHPF \
257 BINUTILS \
258 BLUETOOTH \
259 BMAKE \
260 BOOT \
261 BSD_CPIO \
262 BSNMP \
263 BZIP2 \
264 CALENDAR \
265 CAPSICUM \
266 CASPER \
267 CDDL \
268 CPP \
269 CROSS_COMPILER \
270 CRYPT \
271 CTM \
272 CXX \
273 DICT \
274 DYNAMICROOT \
275 ED_CRYPTO \
276 EXAMPLES \
277 FLOPPY \
278 FORMAT_EXTENSIONS \
279 FORTH \
280 FP_LIBC \
281 FREEBSD_UPDATE \
282 GAMES \
283 GCOV \
284 GDB \
285 GNU \
286 GPIB \
287 GPIO \
288 GROFF \
289 HTML \
290 ICONV \
291 INET \
292 INET6 \
293 INFO \
294 INSTALLLIB \
295 IPFILTER \
296 IPFW \
297 IPX \
298 JAIL \
299 KDUMP \
300 KERBEROS \
301 KERNEL_SYMBOLS \
302 KVM \
303 LDNS \
304 LDNS_UTILS \
305 LEGACY_CONSOLE \
306 LIB32 \
307 LIBPTHREAD \
308 LIBTHR \
309 LOCALES \
310 LOCATE \
311 LPR \
312 LS_COLORS \
313 MAIL \
314 MAILWRAPPER \
315 MAKE \
316 MAN \
317 NCURSESW \
318 NDIS \
319 NETCAT \
320 NETGRAPH \
321 NIS \
322 NLS \
323 NLS_CATALOGS \
2#
3# The include file <bsd.own.mk> set common variables for owner,
4# group, mode, and directories. Defaults are in brackets.
5#
6#
7# +++ variables +++
8#
9# DESTDIR Change the tree where the file gets installed. [not set]
10#
11# DISTDIR Change the tree where the file for a distribution
12# gets installed (see /usr/src/release/Makefile). [not set]
13#
14# COMPRESS_CMD Program to compress documents.
15# Output is to stdout. [gzip -cn]
16#
17# COMPRESS_EXT File name extension of ${COMPRESS_CMD} command. [.gz]
18#
19# BINOWN Binary owner. [root]
20#
21# BINGRP Binary group. [wheel]
22#
23# BINMODE Binary mode. [555]
24#
25# NOBINMODE Mode for non-executable files. [444]
26#
27# LIBDIR Base path for libraries. [/usr/lib]
28#
29# LIBCOMPATDIR Base path for compat libraries. [/usr/lib/compat]
30#
31# LIBPRIVATEDIR Base path for private libraries. [/usr/lib/private]
32#
33# LIBDATADIR Base path for misc. utility data files. [/usr/libdata]
34#
35# LIBEXECDIR Base path for system daemons and utilities. [/usr/libexec]
36#
37# LINTLIBDIR Base path for lint libraries. [/usr/libdata/lint]
38#
39# SHLIBDIR Base path for shared libraries. [${LIBDIR}]
40#
41# LIBOWN Library owner. [${BINOWN}]
42#
43# LIBGRP Library group. [${BINGRP}]
44#
45# LIBMODE Library mode. [${NOBINMODE}]
46#
47#
48# DEBUGDIR Base path for standalone debug files. [/usr/lib/debug]
49#
50# DEBUGMODE Mode for debug files. [${NOBINMODE}]
51#
52#
53# KMODDIR Base path for loadable kernel modules
54# (see kld(4)). [/boot/kernel]
55#
56# KMODOWN Kernel and KLD owner. [${BINOWN}]
57#
58# KMODGRP Kernel and KLD group. [${BINGRP}]
59#
60# KMODMODE KLD mode. [${BINMODE}]
61#
62#
63# SHAREDIR Base path for architecture-independent ascii
64# text files. [/usr/share]
65#
66# SHAREOWN ASCII text file owner. [root]
67#
68# SHAREGRP ASCII text file group. [wheel]
69#
70# SHAREMODE ASCII text file mode. [${NOBINMODE}]
71#
72#
73# CONFDIR Base path for configuration files. [/etc]
74#
75# CONFOWN Configuration file owner. [root]
76#
77# CONFGRP Configuration file group. [wheel]
78#
79# CONFMODE Configuration file mode. [644]
80#
81#
82# DOCDIR Base path for system documentation (e.g. PSD, USD,
83# handbook, FAQ etc.). [${SHAREDIR}/doc]
84#
85# DOCOWN Documentation owner. [${SHAREOWN}]
86#
87# DOCGRP Documentation group. [${SHAREGRP}]
88#
89# DOCMODE Documentation mode. [${NOBINMODE}]
90#
91#
92# INFODIR Base path for GNU's hypertext system
93# called Info (see info(1)). [${SHAREDIR}/info]
94#
95# INFOOWN Info owner. [${SHAREOWN}]
96#
97# INFOGRP Info group. [${SHAREGRP}]
98#
99# INFOMODE Info mode. [${NOBINMODE}]
100#
101#
102# MANDIR Base path for manual installation. [${SHAREDIR}/man/man]
103#
104# MANOWN Manual owner. [${SHAREOWN}]
105#
106# MANGRP Manual group. [${SHAREGRP}]
107#
108# MANMODE Manual mode. [${NOBINMODE}]
109#
110#
111# NLSDIR Base path for National Language Support files
112# installation. [${SHAREDIR}/nls]
113#
114# NLSOWN National Language Support files owner. [${SHAREOWN}]
115#
116# NLSGRP National Language Support files group. [${SHAREGRP}]
117#
118# NLSMODE National Language Support files mode. [${NOBINMODE}]
119#
120# INCLUDEDIR Base path for standard C include files [/usr/include]
121
122.if !target(__<bsd.own.mk>__)
123__<bsd.own.mk>__:
124
125.if !defined(_WITHOUT_SRCCONF)
126SRCCONF?= /etc/src.conf
127.if exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf"
128.include "${SRCCONF}"
129.endif
130.endif
131
132# Binaries
133BINOWN?= root
134BINGRP?= wheel
135BINMODE?= 555
136NOBINMODE?= 444
137
138.if defined(MODULES_WITH_WORLD)
139KMODDIR?= /boot/modules
140.else
141KMODDIR?= /boot/kernel
142.endif
143KMODOWN?= ${BINOWN}
144KMODGRP?= ${BINGRP}
145KMODMODE?= ${BINMODE}
146
147LIBDIR?= /usr/lib
148LIBCOMPATDIR?= /usr/lib/compat
149LIBPRIVATEDIR?= /usr/lib/private
150LIBDATADIR?= /usr/libdata
151LIBEXECDIR?= /usr/libexec
152LINTLIBDIR?= /usr/libdata/lint
153SHLIBDIR?= ${LIBDIR}
154LIBOWN?= ${BINOWN}
155LIBGRP?= ${BINGRP}
156LIBMODE?= ${NOBINMODE}
157
158DEBUGDIR?= /usr/lib/debug
159DEBUGMODE?= ${NOBINMODE}
160
161
162# Share files
163SHAREDIR?= /usr/share
164SHAREOWN?= root
165SHAREGRP?= wheel
166SHAREMODE?= ${NOBINMODE}
167
168CONFDIR?= /etc
169CONFOWN?= root
170CONFGRP?= wheel
171CONFMODE?= 644
172
173MANDIR?= ${SHAREDIR}/man/man
174MANOWN?= ${SHAREOWN}
175MANGRP?= ${SHAREGRP}
176MANMODE?= ${NOBINMODE}
177
178DOCDIR?= ${SHAREDIR}/doc
179DOCOWN?= ${SHAREOWN}
180DOCGRP?= ${SHAREGRP}
181DOCMODE?= ${NOBINMODE}
182
183INFODIR?= ${SHAREDIR}/info
184INFOOWN?= ${SHAREOWN}
185INFOGRP?= ${SHAREGRP}
186INFOMODE?= ${NOBINMODE}
187
188NLSDIR?= ${SHAREDIR}/nls
189NLSOWN?= ${SHAREOWN}
190NLSGRP?= ${SHAREGRP}
191NLSMODE?= ${NOBINMODE}
192
193INCLUDEDIR?= /usr/include
194
195#
196# install(1) parameters.
197#
198HRDLINK?= -l h
199SYMLINK?= -l s
200
201INSTALL_LINK?= ${INSTALL} ${HRDLINK}
202INSTALL_SYMLINK?= ${INSTALL} ${SYMLINK}
203
204# Common variables
205.if !defined(DEBUG_FLAGS)
206STRIP?= -s
207.endif
208
209COMPRESS_CMD?= gzip -cn
210COMPRESS_EXT?= .gz
211
212.if !defined(_WITHOUT_SRCCONF)
213#
214# Define MK_* variables (which are either "yes" or "no") for users
215# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
216# make(1) environment.
217# These should be tested with `== "no"' or `!= "no"' in makefiles.
218# The NO_* variables should only be set by makefiles.
219#
220
221#
222# Supported NO_* options (if defined, MK_* will be forced to "no",
223# regardless of user's setting).
224#
225.for var in \
226 CTF \
227 DEBUG_FILES \
228 INSTALLLIB \
229 MAN \
230 PROFILE
231.if defined(NO_${var})
232.if defined(WITH_${var})
233.undef WITH_${var}
234.endif
235WITHOUT_${var}=
236.endif
237.endfor
238
239#
240# Older-style variables that enabled behaviour when set.
241#
242.if defined(YES_HESIOD)
243WITH_HESIOD=
244.endif
245
246__DEFAULT_YES_OPTIONS = \
247 ACCT \
248 ACPI \
249 AMD \
250 APM \
251 ARM_EABI \
252 ASSERT_DEBUG \
253 AT \
254 ATM \
255 AUDIT \
256 AUTHPF \
257 BINUTILS \
258 BLUETOOTH \
259 BMAKE \
260 BOOT \
261 BSD_CPIO \
262 BSNMP \
263 BZIP2 \
264 CALENDAR \
265 CAPSICUM \
266 CASPER \
267 CDDL \
268 CPP \
269 CROSS_COMPILER \
270 CRYPT \
271 CTM \
272 CXX \
273 DICT \
274 DYNAMICROOT \
275 ED_CRYPTO \
276 EXAMPLES \
277 FLOPPY \
278 FORMAT_EXTENSIONS \
279 FORTH \
280 FP_LIBC \
281 FREEBSD_UPDATE \
282 GAMES \
283 GCOV \
284 GDB \
285 GNU \
286 GPIB \
287 GPIO \
288 GROFF \
289 HTML \
290 ICONV \
291 INET \
292 INET6 \
293 INFO \
294 INSTALLLIB \
295 IPFILTER \
296 IPFW \
297 IPX \
298 JAIL \
299 KDUMP \
300 KERBEROS \
301 KERNEL_SYMBOLS \
302 KVM \
303 LDNS \
304 LDNS_UTILS \
305 LEGACY_CONSOLE \
306 LIB32 \
307 LIBPTHREAD \
308 LIBTHR \
309 LOCALES \
310 LOCATE \
311 LPR \
312 LS_COLORS \
313 MAIL \
314 MAILWRAPPER \
315 MAKE \
316 MAN \
317 NCURSESW \
318 NDIS \
319 NETCAT \
320 NETGRAPH \
321 NIS \
322 NLS \
323 NLS_CATALOGS \
324 NMTREE \
325 NS_CACHING \
326 NTP \
327 OPENSSH \
328 OPENSSL \
329 PAM \
330 PC_SYSINSTALL \
331 PF \
332 PKGBOOTSTRAP \
333 PMC \
334 PORTSNAP \
335 PPP \
336 PROFILE \
337 QUOTAS \
338 RCMDS \
339 RCS \
340 RESCUE \
341 ROUTED \
342 SENDMAIL \
343 SETUID_LOGIN \
344 SHAREDOCS \
345 SOURCELESS \
346 SOURCELESS_HOST \
347 SOURCELESS_UCODE \
348 SSP \
349 SVNLITE \
350 SYMVER \
351 SYSCONS \
352 SYSINSTALL \
353 TCSH \
354 TELNET \
355 TEXTPROC \
356 TOOLCHAIN \
357 UNBOUND \
358 USB \
359 UTMPX \
360 WIRELESS \
361 WPA_SUPPLICANT_EAPOL \
362 ZFS \
363 ZONEINFO
364
365__DEFAULT_NO_OPTIONS = \
366 BSD_GREP \
367 CLANG_EXTRAS \
368 CTF \
369 DEBUG_FILES \
370 GPL_DTC \
371 HESIOD \
372 INSTALL_AS_USER \
373 LLDB \
374 NAND \
375 OFED \
376 OPENSSH_NONE_CIPHER \
377 SHARED_TOOLCHAIN \
378 SVN \
379 TESTS \
380 USB_GADGET_EXAMPLES
381
382#
383# Default behaviour of some options depends on the architecture. Unfortunately
384# this means that we have to test TARGET_ARCH (the buildworld case) as well
385# as MACHINE_ARCH (the non-buildworld case). Normally TARGET_ARCH is not
386# used at all in bsd.*.mk, but we have to make an exception here if we want
387# to allow defaults for some things like clang and fdt to vary by target
388# architecture.
389#
390.if defined(TARGET_ARCH)
391__T=${TARGET_ARCH}
392.else
393__T=${MACHINE_ARCH}
394.endif
395.if defined(TARGET)
396__TT=${TARGET}
397.else
398__TT=${MACHINE}
399.endif
400# Clang is only for x86, powerpc and little-endian arm right now, by default.
401.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
402__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL
403.elif ${__T} == "arm" || ${__T} == "armv6"
404__DEFAULT_YES_OPTIONS+=CLANG
405# GCC is unable to build the full clang on arm, disable it by default.
406__DEFAULT_NO_OPTIONS+=CLANG_FULL
407.else
408__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL
409.endif
410# Clang the default system compiler only on little-endian arm and x86.
411.if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \
412 ${__T} == "i386"
413__DEFAULT_YES_OPTIONS+=CLANG_IS_CC
414# The pc98 bootloader requires gcc to build and so we must leave gcc enabled
415# for pc98 for now.
416.if ${__TT} == "pc98"
417__DEFAULT_NO_OPTIONS+=GNUCXX
418__DEFAULT_YES_OPTIONS+=GCC
419.else
420__DEFAULT_NO_OPTIONS+=GCC GNUCXX
421.endif
422# The libc++ headers use c++11 extensions. These are normally silenced because
423# they are treated as system headers, but we explicitly disable that warning
424# suppression when building the base system to catch bugs in our headers.
425# Eventually we'll want to start building the base system C++ code as C++11,
426# but not yet.
427_COMPVERSION!= ${CC} --version
428.if ${_COMPVERSION:Mclang}
429CXXFLAGS+= -Wno-c++11-extensions
430.endif
431.else
432# If clang is not cc, then build gcc by default
433__DEFAULT_NO_OPTIONS+=CLANG_IS_CC
434__DEFAULT_YES_OPTIONS+=GCC
435# And if g++ is c++, build the rest of the GNU C++ stack
436.if defined(WITHOUT_CXX)
437__DEFAULT_NO_OPTIONS+=GNUCXX
438.else
439__DEFAULT_YES_OPTIONS+=GNUCXX
440.endif
441.endif
442# FDT is needed only for arm, mips and powerpc
443.if ${__T:Marm*} || ${__T:Mpowerpc*} || ${__T:Mmips*}
444__DEFAULT_YES_OPTIONS+=FDT
445.else
446__DEFAULT_NO_OPTIONS+=FDT
447.endif
448.undef __T
449
450#
451# MK_* options which default to "yes".
452#
453.for var in ${__DEFAULT_YES_OPTIONS}
454.if defined(WITH_${var}) && defined(WITHOUT_${var})
455.error WITH_${var} and WITHOUT_${var} can't both be set.
456.endif
457.if defined(MK_${var})
458.error MK_${var} can't be set by a user.
459.endif
460.if defined(WITHOUT_${var})
461MK_${var}:= no
462.else
463MK_${var}:= yes
464.endif
465.endfor
466.undef __DEFAULT_YES_OPTIONS
467
468#
469# MK_* options which default to "no".
470#
471.for var in ${__DEFAULT_NO_OPTIONS}
472.if defined(WITH_${var}) && defined(WITHOUT_${var})
473.error WITH_${var} and WITHOUT_${var} can't both be set.
474.endif
475.if defined(MK_${var})
476.error MK_${var} can't be set by a user.
477.endif
478.if defined(WITH_${var})
479MK_${var}:= yes
480.else
481MK_${var}:= no
482.endif
483.endfor
484.undef __DEFAULT_NO_OPTIONS
485
486#
487# Force some options off if their dependencies are off.
488# Order is somewhat important.
489#
490.if ${MK_LIBPTHREAD} == "no"
491MK_LIBTHR:= no
492.endif
493
494.if ${MK_LDNS} == "no"
495MK_LDNS_UTILS:= no
496MK_UNBOUND:= no
497.endif
498
499.if ${MK_SOURCELESS} == "no"
500MK_SOURCELESS_HOST:= no
501MK_SOURCELESS_UCODE:= no
502.endif
503
504.if ${MK_CDDL} == "no"
505MK_ZFS:= no
506MK_CTF:= no
507.endif
508
509.if ${MK_CRYPT} == "no"
510MK_OPENSSL:= no
511MK_OPENSSH:= no
512MK_KERBEROS:= no
513.endif
514
515.if ${MK_CXX} == "no"
516MK_CLANG:= no
517MK_GROFF:= no
518.endif
519
520.if ${MK_MAIL} == "no"
521MK_MAILWRAPPER:= no
522MK_SENDMAIL:= no
523.endif
524
525.if ${MK_NETGRAPH} == "no"
526MK_ATM:= no
527MK_BLUETOOTH:= no
528.endif
529
530.if ${MK_OPENSSL} == "no"
531MK_OPENSSH:= no
532MK_KERBEROS:= no
533.endif
534
535.if ${MK_PF} == "no"
536MK_AUTHPF:= no
537.endif
538
539.if ${MK_TEXTPROC} == "no"
540MK_GROFF:= no
541.endif
542
543.if ${MK_TOOLCHAIN} == "no"
544MK_BINUTILS:= no
545MK_CLANG:= no
546MK_GCC:= no
547MK_GDB:= no
548.endif
549
550.if ${MK_CLANG} == "no"
551MK_CLANG_EXTRAS:= no
552MK_CLANG_FULL:= no
553.endif
554
555.if defined(NO_TESTS)
556# This should be handled above along the handling of all other NO_* options.
557# However, the above is broken when WITH_*=yes are passed to make(1) as
558# command line arguments. See PR bin/183762.
559#
560# Because the TESTS option is new and it will default to yes, it's likely
561# that people will pass WITHOUT_TESTS=yes to make(1) directly and get a broken
562# build. So, just in case, it's better to explicitly handle this case here.
563#
564# TODO(jmmv): Either fix make to allow us putting this override where it
565# belongs above or fix this file to cope with the make bug.
566MK_TESTS:= no
567.endif
568
569#
570# Set defaults for the MK_*_SUPPORT variables.
571#
572
573#
574# MK_*_SUPPORT options which default to "yes" unless their corresponding
575# MK_* variable is set to "no".
576#
577.for var in \
578 BZIP2 \
579 GNU \
580 INET \
581 INET6 \
582 IPX \
583 KERBEROS \
584 KVM \
585 NETGRAPH \
586 PAM \
587 WIRELESS
588.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
589.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
590.endif
591.if defined(MK_${var}_SUPPORT)
592.error MK_${var}_SUPPORT can't be set by a user.
593.endif
594.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
595MK_${var}_SUPPORT:= no
596.else
597MK_${var}_SUPPORT:= yes
598.endif
599.endfor
600
601#
602# MK_* options whose default value depends on another option.
603#
604.for vv in \
605 GSSAPI/KERBEROS \
606 MAN_UTILS/MAN
607.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
608.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
609.endif
610.if defined(MK_${vv:H})
611.error MK_${vv:H} can't be set by a user.
612.endif
613.if defined(WITH_${vv:H})
614MK_${vv:H}:= yes
615.elif defined(WITHOUT_${vv:H})
616MK_${vv:H}:= no
617.else
618MK_${vv:H}:= ${MK_${vv:T}}
619.endif
620.endfor
621
622#
623# MK_* options that default to "yes" if the compiler is a C++11 compiler.
624#
625.include <bsd.compiler.mk>
626.for var in \
627 LIBCPLUSPLUS
628.if defined(WITH_${var}) && defined(WITHOUT_${var})
629.error WITH_${var} and WITHOUT_${var} can't both be set.
630.endif
631.if defined(MK_${var})
632.error MK_${var} can't be set by a user.
633.endif
634.if ${COMPILER_FEATURES:Mc++11}
635.if defined(WITHOUT_${var})
636MK_${var}:= no
637.else
638MK_${var}:= yes
639.endif
640.else
641.if defined(WITH_${var})
642MK_${var}:= yes
643.else
644MK_${var}:= no
645.endif
646.endif
647.endfor
648
649.if !${COMPILER_FEATURES:Mc++11}
650MK_LLDB:= no
651.endif
652
653.if ${MK_CTF} != "no"
654CTFCONVERT_CMD= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
655.elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)
656CTFCONVERT_CMD=
657.else
658CTFCONVERT_CMD= @:
659.endif
660
661.if ${MK_INSTALL_AS_USER} != "no"
662_uid!= id -u
663.if ${_uid} != 0
664.if !defined(USER)
665USER!= id -un
666.endif
667_gid!= id -gn
668.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
669$xOWN= ${USER}
670$xGRP= ${_gid}
671.endfor
672.endif
673.endif
674
675.endif # !_WITHOUT_SRCCONF
676
677# Pointer to the top directory into which tests are installed. Should not be
678# overriden by Makefiles, but the user may choose to set this in src.conf(5).
679TESTSBASE?= /usr/tests
680
681.endif # !target(__<bsd.own.mk>__)
324 NS_CACHING \
325 NTP \
326 OPENSSH \
327 OPENSSL \
328 PAM \
329 PC_SYSINSTALL \
330 PF \
331 PKGBOOTSTRAP \
332 PMC \
333 PORTSNAP \
334 PPP \
335 PROFILE \
336 QUOTAS \
337 RCMDS \
338 RCS \
339 RESCUE \
340 ROUTED \
341 SENDMAIL \
342 SETUID_LOGIN \
343 SHAREDOCS \
344 SOURCELESS \
345 SOURCELESS_HOST \
346 SOURCELESS_UCODE \
347 SSP \
348 SVNLITE \
349 SYMVER \
350 SYSCONS \
351 SYSINSTALL \
352 TCSH \
353 TELNET \
354 TEXTPROC \
355 TOOLCHAIN \
356 UNBOUND \
357 USB \
358 UTMPX \
359 WIRELESS \
360 WPA_SUPPLICANT_EAPOL \
361 ZFS \
362 ZONEINFO
363
364__DEFAULT_NO_OPTIONS = \
365 BSD_GREP \
366 CLANG_EXTRAS \
367 CTF \
368 DEBUG_FILES \
369 GPL_DTC \
370 HESIOD \
371 INSTALL_AS_USER \
372 LLDB \
373 NAND \
374 OFED \
375 OPENSSH_NONE_CIPHER \
376 SHARED_TOOLCHAIN \
377 SVN \
378 TESTS \
379 USB_GADGET_EXAMPLES
380
381#
382# Default behaviour of some options depends on the architecture. Unfortunately
383# this means that we have to test TARGET_ARCH (the buildworld case) as well
384# as MACHINE_ARCH (the non-buildworld case). Normally TARGET_ARCH is not
385# used at all in bsd.*.mk, but we have to make an exception here if we want
386# to allow defaults for some things like clang and fdt to vary by target
387# architecture.
388#
389.if defined(TARGET_ARCH)
390__T=${TARGET_ARCH}
391.else
392__T=${MACHINE_ARCH}
393.endif
394.if defined(TARGET)
395__TT=${TARGET}
396.else
397__TT=${MACHINE}
398.endif
399# Clang is only for x86, powerpc and little-endian arm right now, by default.
400.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
401__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL
402.elif ${__T} == "arm" || ${__T} == "armv6"
403__DEFAULT_YES_OPTIONS+=CLANG
404# GCC is unable to build the full clang on arm, disable it by default.
405__DEFAULT_NO_OPTIONS+=CLANG_FULL
406.else
407__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL
408.endif
409# Clang the default system compiler only on little-endian arm and x86.
410.if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \
411 ${__T} == "i386"
412__DEFAULT_YES_OPTIONS+=CLANG_IS_CC
413# The pc98 bootloader requires gcc to build and so we must leave gcc enabled
414# for pc98 for now.
415.if ${__TT} == "pc98"
416__DEFAULT_NO_OPTIONS+=GNUCXX
417__DEFAULT_YES_OPTIONS+=GCC
418.else
419__DEFAULT_NO_OPTIONS+=GCC GNUCXX
420.endif
421# The libc++ headers use c++11 extensions. These are normally silenced because
422# they are treated as system headers, but we explicitly disable that warning
423# suppression when building the base system to catch bugs in our headers.
424# Eventually we'll want to start building the base system C++ code as C++11,
425# but not yet.
426_COMPVERSION!= ${CC} --version
427.if ${_COMPVERSION:Mclang}
428CXXFLAGS+= -Wno-c++11-extensions
429.endif
430.else
431# If clang is not cc, then build gcc by default
432__DEFAULT_NO_OPTIONS+=CLANG_IS_CC
433__DEFAULT_YES_OPTIONS+=GCC
434# And if g++ is c++, build the rest of the GNU C++ stack
435.if defined(WITHOUT_CXX)
436__DEFAULT_NO_OPTIONS+=GNUCXX
437.else
438__DEFAULT_YES_OPTIONS+=GNUCXX
439.endif
440.endif
441# FDT is needed only for arm, mips and powerpc
442.if ${__T:Marm*} || ${__T:Mpowerpc*} || ${__T:Mmips*}
443__DEFAULT_YES_OPTIONS+=FDT
444.else
445__DEFAULT_NO_OPTIONS+=FDT
446.endif
447.undef __T
448
449#
450# MK_* options which default to "yes".
451#
452.for var in ${__DEFAULT_YES_OPTIONS}
453.if defined(WITH_${var}) && defined(WITHOUT_${var})
454.error WITH_${var} and WITHOUT_${var} can't both be set.
455.endif
456.if defined(MK_${var})
457.error MK_${var} can't be set by a user.
458.endif
459.if defined(WITHOUT_${var})
460MK_${var}:= no
461.else
462MK_${var}:= yes
463.endif
464.endfor
465.undef __DEFAULT_YES_OPTIONS
466
467#
468# MK_* options which default to "no".
469#
470.for var in ${__DEFAULT_NO_OPTIONS}
471.if defined(WITH_${var}) && defined(WITHOUT_${var})
472.error WITH_${var} and WITHOUT_${var} can't both be set.
473.endif
474.if defined(MK_${var})
475.error MK_${var} can't be set by a user.
476.endif
477.if defined(WITH_${var})
478MK_${var}:= yes
479.else
480MK_${var}:= no
481.endif
482.endfor
483.undef __DEFAULT_NO_OPTIONS
484
485#
486# Force some options off if their dependencies are off.
487# Order is somewhat important.
488#
489.if ${MK_LIBPTHREAD} == "no"
490MK_LIBTHR:= no
491.endif
492
493.if ${MK_LDNS} == "no"
494MK_LDNS_UTILS:= no
495MK_UNBOUND:= no
496.endif
497
498.if ${MK_SOURCELESS} == "no"
499MK_SOURCELESS_HOST:= no
500MK_SOURCELESS_UCODE:= no
501.endif
502
503.if ${MK_CDDL} == "no"
504MK_ZFS:= no
505MK_CTF:= no
506.endif
507
508.if ${MK_CRYPT} == "no"
509MK_OPENSSL:= no
510MK_OPENSSH:= no
511MK_KERBEROS:= no
512.endif
513
514.if ${MK_CXX} == "no"
515MK_CLANG:= no
516MK_GROFF:= no
517.endif
518
519.if ${MK_MAIL} == "no"
520MK_MAILWRAPPER:= no
521MK_SENDMAIL:= no
522.endif
523
524.if ${MK_NETGRAPH} == "no"
525MK_ATM:= no
526MK_BLUETOOTH:= no
527.endif
528
529.if ${MK_OPENSSL} == "no"
530MK_OPENSSH:= no
531MK_KERBEROS:= no
532.endif
533
534.if ${MK_PF} == "no"
535MK_AUTHPF:= no
536.endif
537
538.if ${MK_TEXTPROC} == "no"
539MK_GROFF:= no
540.endif
541
542.if ${MK_TOOLCHAIN} == "no"
543MK_BINUTILS:= no
544MK_CLANG:= no
545MK_GCC:= no
546MK_GDB:= no
547.endif
548
549.if ${MK_CLANG} == "no"
550MK_CLANG_EXTRAS:= no
551MK_CLANG_FULL:= no
552.endif
553
554.if defined(NO_TESTS)
555# This should be handled above along the handling of all other NO_* options.
556# However, the above is broken when WITH_*=yes are passed to make(1) as
557# command line arguments. See PR bin/183762.
558#
559# Because the TESTS option is new and it will default to yes, it's likely
560# that people will pass WITHOUT_TESTS=yes to make(1) directly and get a broken
561# build. So, just in case, it's better to explicitly handle this case here.
562#
563# TODO(jmmv): Either fix make to allow us putting this override where it
564# belongs above or fix this file to cope with the make bug.
565MK_TESTS:= no
566.endif
567
568#
569# Set defaults for the MK_*_SUPPORT variables.
570#
571
572#
573# MK_*_SUPPORT options which default to "yes" unless their corresponding
574# MK_* variable is set to "no".
575#
576.for var in \
577 BZIP2 \
578 GNU \
579 INET \
580 INET6 \
581 IPX \
582 KERBEROS \
583 KVM \
584 NETGRAPH \
585 PAM \
586 WIRELESS
587.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
588.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
589.endif
590.if defined(MK_${var}_SUPPORT)
591.error MK_${var}_SUPPORT can't be set by a user.
592.endif
593.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
594MK_${var}_SUPPORT:= no
595.else
596MK_${var}_SUPPORT:= yes
597.endif
598.endfor
599
600#
601# MK_* options whose default value depends on another option.
602#
603.for vv in \
604 GSSAPI/KERBEROS \
605 MAN_UTILS/MAN
606.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
607.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
608.endif
609.if defined(MK_${vv:H})
610.error MK_${vv:H} can't be set by a user.
611.endif
612.if defined(WITH_${vv:H})
613MK_${vv:H}:= yes
614.elif defined(WITHOUT_${vv:H})
615MK_${vv:H}:= no
616.else
617MK_${vv:H}:= ${MK_${vv:T}}
618.endif
619.endfor
620
621#
622# MK_* options that default to "yes" if the compiler is a C++11 compiler.
623#
624.include <bsd.compiler.mk>
625.for var in \
626 LIBCPLUSPLUS
627.if defined(WITH_${var}) && defined(WITHOUT_${var})
628.error WITH_${var} and WITHOUT_${var} can't both be set.
629.endif
630.if defined(MK_${var})
631.error MK_${var} can't be set by a user.
632.endif
633.if ${COMPILER_FEATURES:Mc++11}
634.if defined(WITHOUT_${var})
635MK_${var}:= no
636.else
637MK_${var}:= yes
638.endif
639.else
640.if defined(WITH_${var})
641MK_${var}:= yes
642.else
643MK_${var}:= no
644.endif
645.endif
646.endfor
647
648.if !${COMPILER_FEATURES:Mc++11}
649MK_LLDB:= no
650.endif
651
652.if ${MK_CTF} != "no"
653CTFCONVERT_CMD= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
654.elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)
655CTFCONVERT_CMD=
656.else
657CTFCONVERT_CMD= @:
658.endif
659
660.if ${MK_INSTALL_AS_USER} != "no"
661_uid!= id -u
662.if ${_uid} != 0
663.if !defined(USER)
664USER!= id -un
665.endif
666_gid!= id -gn
667.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
668$xOWN= ${USER}
669$xGRP= ${_gid}
670.endfor
671.endif
672.endif
673
674.endif # !_WITHOUT_SRCCONF
675
676# Pointer to the top directory into which tests are installed. Should not be
677# overriden by Makefiles, but the user may choose to set this in src.conf(5).
678TESTSBASE?= /usr/tests
679
680.endif # !target(__<bsd.own.mk>__)