Deleted Added
full compact
bsd.own.mk (258230) bsd.own.mk (259962)
1# $FreeBSD: stable/10/share/mk/bsd.own.mk 258230 2013-11-16 18:40:44Z gjb $
1# $FreeBSD: stable/10/share/mk/bsd.own.mk 259962 2013-12-27 22:00:22Z jmmv $
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 ATF \
255 ATM \
256 AUDIT \
257 AUTHPF \
258 BINUTILS \
259 BLUETOOTH \
260 BMAKE \
261 BOOT \
262 BSD_CPIO \
263 BSNMP \
264 BZIP2 \
265 CALENDAR \
266 CAPSICUM \
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 NDIS \
318 NETCAT \
319 NETGRAPH \
320 NIS \
321 NLS \
322 NLS_CATALOGS \
323 NMTREE \
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 PKGTOOLS \
377 SHARED_TOOLCHAIN \
378 SVN \
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 ${MK_CLANG_IS_CC} == "no"
555MK_LLDB:= no
556.endif
557
558#
559# Set defaults for the MK_*_SUPPORT variables.
560#
561
562#
563# MK_*_SUPPORT options which default to "yes" unless their corresponding
564# MK_* variable is set to "no".
565#
566.for var in \
567 BZIP2 \
568 GNU \
569 INET \
570 INET6 \
571 IPX \
572 KERBEROS \
573 KVM \
574 NETGRAPH \
575 PAM \
576 WIRELESS
577.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
578.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
579.endif
580.if defined(MK_${var}_SUPPORT)
581.error MK_${var}_SUPPORT can't be set by a user.
582.endif
583.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
584MK_${var}_SUPPORT:= no
585.else
586MK_${var}_SUPPORT:= yes
587.endif
588.endfor
589
590#
591# MK_* options whose default value depends on another option.
592#
593.for vv in \
594 GSSAPI/KERBEROS \
595 MAN_UTILS/MAN
596.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
597.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
598.endif
599.if defined(MK_${vv:H})
600.error MK_${vv:H} can't be set by a user.
601.endif
602.if defined(WITH_${vv:H})
603MK_${vv:H}:= yes
604.elif defined(WITHOUT_${vv:H})
605MK_${vv:H}:= no
606.else
607MK_${vv:H}:= ${MK_${vv:T}}
608.endif
609.endfor
610
611#
612# MK_* options that default to "yes" if the compiler is a C++11 compiler.
613#
614.include <bsd.compiler.mk>
615.for var in \
616 LIBCPLUSPLUS
617.if defined(WITH_${var}) && defined(WITHOUT_${var})
618.error WITH_${var} and WITHOUT_${var} can't both be set.
619.endif
620.if defined(MK_${var})
621.error MK_${var} can't be set by a user.
622.endif
623.if ${COMPILER_FEATURES:Mc++11}
624.if defined(WITHOUT_${var})
625MK_${var}:= no
626.else
627MK_${var}:= yes
628.endif
629.else
630.if defined(WITH_${var})
631MK_${var}:= yes
632.else
633MK_${var}:= no
634.endif
635.endif
636.endfor
637
638.if ${MK_CTF} != "no"
639CTFCONVERT_CMD= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
640.elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)
641CTFCONVERT_CMD=
642.else
643CTFCONVERT_CMD= @:
644.endif
645
646.if ${MK_INSTALL_AS_USER} != "no"
647_uid!= id -u
648.if ${_uid} != 0
649.if !defined(USER)
650USER!= id -un
651.endif
652_gid!= id -gn
653.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
654$xOWN= ${USER}
655$xGRP= ${_gid}
656.endfor
657.endif
658.endif
659
660.endif # !_WITHOUT_SRCCONF
661
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 ATF \
255 ATM \
256 AUDIT \
257 AUTHPF \
258 BINUTILS \
259 BLUETOOTH \
260 BMAKE \
261 BOOT \
262 BSD_CPIO \
263 BSNMP \
264 BZIP2 \
265 CALENDAR \
266 CAPSICUM \
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 NDIS \
318 NETCAT \
319 NETGRAPH \
320 NIS \
321 NLS \
322 NLS_CATALOGS \
323 NMTREE \
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 PKGTOOLS \
377 SHARED_TOOLCHAIN \
378 SVN \
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 ${MK_CLANG_IS_CC} == "no"
555MK_LLDB:= no
556.endif
557
558#
559# Set defaults for the MK_*_SUPPORT variables.
560#
561
562#
563# MK_*_SUPPORT options which default to "yes" unless their corresponding
564# MK_* variable is set to "no".
565#
566.for var in \
567 BZIP2 \
568 GNU \
569 INET \
570 INET6 \
571 IPX \
572 KERBEROS \
573 KVM \
574 NETGRAPH \
575 PAM \
576 WIRELESS
577.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
578.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
579.endif
580.if defined(MK_${var}_SUPPORT)
581.error MK_${var}_SUPPORT can't be set by a user.
582.endif
583.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
584MK_${var}_SUPPORT:= no
585.else
586MK_${var}_SUPPORT:= yes
587.endif
588.endfor
589
590#
591# MK_* options whose default value depends on another option.
592#
593.for vv in \
594 GSSAPI/KERBEROS \
595 MAN_UTILS/MAN
596.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
597.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
598.endif
599.if defined(MK_${vv:H})
600.error MK_${vv:H} can't be set by a user.
601.endif
602.if defined(WITH_${vv:H})
603MK_${vv:H}:= yes
604.elif defined(WITHOUT_${vv:H})
605MK_${vv:H}:= no
606.else
607MK_${vv:H}:= ${MK_${vv:T}}
608.endif
609.endfor
610
611#
612# MK_* options that default to "yes" if the compiler is a C++11 compiler.
613#
614.include <bsd.compiler.mk>
615.for var in \
616 LIBCPLUSPLUS
617.if defined(WITH_${var}) && defined(WITHOUT_${var})
618.error WITH_${var} and WITHOUT_${var} can't both be set.
619.endif
620.if defined(MK_${var})
621.error MK_${var} can't be set by a user.
622.endif
623.if ${COMPILER_FEATURES:Mc++11}
624.if defined(WITHOUT_${var})
625MK_${var}:= no
626.else
627MK_${var}:= yes
628.endif
629.else
630.if defined(WITH_${var})
631MK_${var}:= yes
632.else
633MK_${var}:= no
634.endif
635.endif
636.endfor
637
638.if ${MK_CTF} != "no"
639CTFCONVERT_CMD= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
640.elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)
641CTFCONVERT_CMD=
642.else
643CTFCONVERT_CMD= @:
644.endif
645
646.if ${MK_INSTALL_AS_USER} != "no"
647_uid!= id -u
648.if ${_uid} != 0
649.if !defined(USER)
650USER!= id -un
651.endif
652_gid!= id -gn
653.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
654$xOWN= ${USER}
655$xGRP= ${_gid}
656.endfor
657.endif
658.endif
659
660.endif # !_WITHOUT_SRCCONF
661
662# Pointer to the top directory into which tests are installed. Should not be
663# overriden by Makefiles, but the user may choose to set this in src.conf(5).
664TESTSBASE?= /usr/tests
665
662.endif # !target(__<bsd.own.mk>__)
666.endif # !target(__<bsd.own.mk>__)