Deleted Added
sdiff udiff text old ( 253689 ) new ( 254273 )
full compact
1# $FreeBSD: head/share/mk/bsd.own.mk 253689 2013-07-26 21:25:18Z pfg $
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# LIBDATADIR Base path for misc. utility data files. [/usr/libdata]
32#
33# LIBEXECDIR Base path for system daemons and utilities. [/usr/libexec]
34#
35# LINTLIBDIR Base path for lint libraries. [/usr/libdata/lint]
36#
37# SHLIBDIR Base path for shared libraries. [${LIBDIR}]
38#
39# LIBOWN Library owner. [${BINOWN}]
40#
41# LIBGRP Library group. [${BINGRP}]
42#
43# LIBMODE Library mode. [${NOBINMODE}]
44#
45#
46# DEBUGDIR Base path for standalone debug files. [/usr/lib/debug]
47#
48# DEBUGMODE Mode for debug files. [${NOBINMODE}]
49#
50#
51# KMODDIR Base path for loadable kernel modules
52# (see kld(4)). [/boot/kernel]
53#
54# KMODOWN Kernel and KLD owner. [${BINOWN}]
55#
56# KMODGRP Kernel and KLD group. [${BINGRP}]
57#
58# KMODMODE KLD mode. [${BINMODE}]
59#
60#
61# SHAREDIR Base path for architecture-independent ascii
62# text files. [/usr/share]
63#
64# SHAREOWN ASCII text file owner. [root]
65#
66# SHAREGRP ASCII text file group. [wheel]
67#
68# SHAREMODE ASCII text file mode. [${NOBINMODE}]
69#
70#
71# CONFDIR Base path for configuration files. [/etc]
72#
73# CONFOWN Configuration file owner. [root]
74#
75# CONFGRP Configuration file group. [wheel]
76#
77# CONFMODE Configuration file mode. [644]
78#
79#
80# DOCDIR Base path for system documentation (e.g. PSD, USD,
81# handbook, FAQ etc.). [${SHAREDIR}/doc]
82#
83# DOCOWN Documentation owner. [${SHAREOWN}]
84#
85# DOCGRP Documentation group. [${SHAREGRP}]
86#
87# DOCMODE Documentation mode. [${NOBINMODE}]
88#
89#
90# INFODIR Base path for GNU's hypertext system
91# called Info (see info(1)). [${SHAREDIR}/info]
92#
93# INFOOWN Info owner. [${SHAREOWN}]
94#
95# INFOGRP Info group. [${SHAREGRP}]
96#
97# INFOMODE Info mode. [${NOBINMODE}]
98#
99#
100# MANDIR Base path for manual installation. [${SHAREDIR}/man/man]
101#
102# MANOWN Manual owner. [${SHAREOWN}]
103#
104# MANGRP Manual group. [${SHAREGRP}]
105#
106# MANMODE Manual mode. [${NOBINMODE}]
107#
108#
109# NLSDIR Base path for National Language Support files
110# installation. [${SHAREDIR}/nls]
111#
112# NLSOWN National Language Support files owner. [${SHAREOWN}]
113#
114# NLSGRP National Language Support files group. [${SHAREGRP}]
115#
116# NLSMODE National Language Support files mode. [${NOBINMODE}]
117#
118# INCLUDEDIR Base path for standard C include files [/usr/include]
119
120.if !target(__<bsd.own.mk>__)
121__<bsd.own.mk>__:
122
123.if !defined(_WITHOUT_SRCCONF)
124SRCCONF?= /etc/src.conf
125.if exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf"
126.include "${SRCCONF}"
127.endif
128.endif
129
130# Binaries
131BINOWN?= root
132BINGRP?= wheel
133BINMODE?= 555
134NOBINMODE?= 444
135
136.if defined(MODULES_WITH_WORLD)
137KMODDIR?= /boot/modules
138.else
139KMODDIR?= /boot/kernel
140.endif
141KMODOWN?= ${BINOWN}
142KMODGRP?= ${BINGRP}
143KMODMODE?= ${BINMODE}
144
145LIBDIR?= /usr/lib
146LIBCOMPATDIR?= /usr/lib/compat
147LIBDATADIR?= /usr/libdata
148LIBEXECDIR?= /usr/libexec
149LINTLIBDIR?= /usr/libdata/lint
150SHLIBDIR?= ${LIBDIR}
151LIBOWN?= ${BINOWN}
152LIBGRP?= ${BINGRP}
153LIBMODE?= ${NOBINMODE}
154
155DEBUGDIR?= /usr/lib/debug
156DEBUGMODE?= ${NOBINMODE}
157
158
159# Share files
160SHAREDIR?= /usr/share
161SHAREOWN?= root
162SHAREGRP?= wheel
163SHAREMODE?= ${NOBINMODE}
164
165CONFDIR?= /etc
166CONFOWN?= root
167CONFGRP?= wheel
168CONFMODE?= 644
169
170MANDIR?= ${SHAREDIR}/man/man
171MANOWN?= ${SHAREOWN}
172MANGRP?= ${SHAREGRP}
173MANMODE?= ${NOBINMODE}
174
175DOCDIR?= ${SHAREDIR}/doc
176DOCOWN?= ${SHAREOWN}
177DOCGRP?= ${SHAREGRP}
178DOCMODE?= ${NOBINMODE}
179
180INFODIR?= ${SHAREDIR}/info
181INFOOWN?= ${SHAREOWN}
182INFOGRP?= ${SHAREGRP}
183INFOMODE?= ${NOBINMODE}
184
185NLSDIR?= ${SHAREDIR}/nls
186NLSOWN?= ${SHAREOWN}
187NLSGRP?= ${SHAREGRP}
188NLSMODE?= ${NOBINMODE}
189
190INCLUDEDIR?= /usr/include
191
192#
193# install(1) parameters.
194#
195HRDLINK?= -l h
196SYMLINK?= -l s
197
198INSTALL_LINK?= ${INSTALL} ${HRDLINK}
199INSTALL_SYMLINK?= ${INSTALL} ${SYMLINK}
200
201# Common variables
202.if !defined(DEBUG_FLAGS)
203STRIP?= -s
204.endif
205
206COMPRESS_CMD?= gzip -cn
207COMPRESS_EXT?= .gz
208
209.if !defined(_WITHOUT_SRCCONF)
210#
211# Define MK_* variables (which are either "yes" or "no") for users
212# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
213# make(1) environment.
214# These should be tested with `== "no"' or `!= "no"' in makefiles.
215# The NO_* variables should only be set by makefiles.
216#
217
218#
219# Supported NO_* options (if defined, MK_* will be forced to "no",
220# regardless of user's setting).
221#
222.for var in \
223 CTF \
224 DEBUG_FILES \
225 INSTALLLIB \
226 MAN \
227 PROFILE
228.if defined(NO_${var})
229.if defined(WITH_${var})
230.undef WITH_${var}
231.endif
232WITHOUT_${var}=
233.endif
234.endfor
235
236#
237# Older-style variables that enabled behaviour when set.
238#
239.if defined(YES_HESIOD)
240WITH_HESIOD=
241.endif
242
243__DEFAULT_YES_OPTIONS = \
244 ACCT \
245 ACPI \
246 AMD \
247 APM \
248 ARM_EABI \
249 ASSERT_DEBUG \
250 AT \
251 ATF \
252 ATM \
253 AUDIT \
254 AUTHPF \
255 BIND \
256 BIND_DNSSEC \
257 BIND_ETC \
258 BIND_LIBS_LWRES \
259 BIND_MTREE \
260 BIND_NAMED \
261 BIND_UTILS \
262 BINUTILS \
263 BLUETOOTH \
264 BMAKE \
265 BOOT \
266 BSD_CPIO \
267 BSNMP \
268 BZIP2 \
269 CALENDAR \
270 CAPSICUM \
271 CDDL \
272 CPP \
273 CROSS_COMPILER \
274 CRYPT \
275 CTM \
276 CXX \
277 DICT \
278 DYNAMICROOT \
279 ED_CRYPTO \
280 EXAMPLES \
281 FLOPPY \
282 FORMAT_EXTENSIONS \
283 FORTH \
284 FP_LIBC \
285 FREEBSD_UPDATE \
286 GAMES \
287 GCC \
288 GCOV \
289 GDB \
290 GNU \
291 GPIB \
292 GPIO \
293 GROFF \
294 HTML \
295 INET \
296 INET6 \
297 INFO \
298 INSTALLLIB \
299 IPFILTER \
300 IPFW \
301 IPX \
302 JAIL \
303 KDUMP \
304 KERBEROS \
305 KERNEL_SYMBOLS \
306 KVM \
307 LDNS \
308 LEGACY_CONSOLE \
309 LIB32 \
310 LIBPTHREAD \
311 LIBTHR \
312 LOCALES \
313 LOCATE \
314 LPR \
315 LS_COLORS \
316 MAIL \
317 MAILWRAPPER \
318 MAKE \
319 MAN \
320 NDIS \
321 NETCAT \
322 NETGRAPH \
323 NIS \
324 NLS \
325 NLS_CATALOGS \
326 NS_CACHING \
327 NTP \
328 OPENSSH \
329 OPENSSL \
330 PAM \
331 PC_SYSINSTALL \
332 PF \
333 PKGBOOTSTRAP \
334 PKGTOOLS \
335 PMC \
336 PORTSNAP \
337 PPP \
338 PROFILE \
339 QUOTAS \
340 RCMDS \
341 RCS \
342 RESCUE \
343 ROUTED \
344 SENDMAIL \
345 SETUID_LOGIN \
346 SHAREDOCS \
347 SOURCELESS \
348 SOURCELESS_HOST \
349 SOURCELESS_UCODE \
350 SSP \
351 SVNLITE \
352 SYMVER \
353 SYSCONS \
354 SYSINSTALL \
355 TCSH \
356 TELNET \
357 TEXTPROC \
358 TOOLCHAIN \
359 USB \
360 UTMPX \
361 WIRELESS \
362 WPA_SUPPLICANT_EAPOL \
363 ZFS \
364 ZONEINFO
365
366__DEFAULT_NO_OPTIONS = \
367 BIND_IDN \
368 BIND_LARGE_FILE \
369 BIND_LIBS \
370 BIND_SIGCHASE \
371 BIND_XML \
372 BSDCONFIG \
373 BSD_GREP \
374 CLANG_EXTRAS \
375 CTF \
376 DEBUG_FILES \
377 GNU_PATCH \
378 GPL_DTC \
379 HESIOD \
380 ICONV \
381 INSTALL_AS_USER \
382 LDNS_UTILS \
383 NMTREE \
384 NAND \
385 OFED \
386 OPENSSH_NONE_CIPHER \
387 SHARED_TOOLCHAIN \
388 SVN \
389 USB_GADGET_EXAMPLES
390
391#
392# Default behaviour of some options depends on the architecture. Unfortunately
393# this means that we have to test TARGET_ARCH (the buildworld case) as well
394# as MACHINE_ARCH (the non-buildworld case). Normally TARGET_ARCH is not
395# used at all in bsd.*.mk, but we have to make an exception here if we want
396# to allow defaults for some things like clang and fdt to vary by target
397# architecture.
398#
399.if defined(TARGET_ARCH)
400__T=${TARGET_ARCH}
401.else
402__T=${MACHINE_ARCH}
403.endif
404# Clang is only for x86, powerpc and little-endian arm right now, by default.
405.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
406__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL
407.elif ${__T} == "arm" || ${__T} == "armv6"
408__DEFAULT_YES_OPTIONS+=CLANG
409# GCC is unable to build the full clang on arm, disable it by default.
410__DEFAULT_NO_OPTIONS+=CLANG_FULL
411.else
412__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL
413.endif
414# Clang the default system compiler only on little-endian arm and x86.
415.if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \
416 ${__T} == "i386"
417__DEFAULT_YES_OPTIONS+=CLANG_IS_CC
418.else
419__DEFAULT_NO_OPTIONS+=CLANG_IS_CC
420.endif
421# FDT is needed only for arm, mips and powerpc
422.if ${__T:Marm*} || ${__T:Mpowerpc*} || ${__T:Mmips*}
423__DEFAULT_YES_OPTIONS+=FDT
424.else
425__DEFAULT_NO_OPTIONS+=FDT
426.endif
427.undef __T
428
429#
430# MK_* options which default to "yes".
431#
432.for var in ${__DEFAULT_YES_OPTIONS}
433.if defined(WITH_${var}) && defined(WITHOUT_${var})
434.error WITH_${var} and WITHOUT_${var} can't both be set.
435.endif
436.if defined(MK_${var})
437.error MK_${var} can't be set by a user.
438.endif
439.if defined(WITHOUT_${var})
440MK_${var}:= no
441.else
442MK_${var}:= yes
443.endif
444.endfor
445.undef __DEFAULT_YES_OPTIONS
446
447#
448# MK_* options which default to "no".
449#
450.for var in ${__DEFAULT_NO_OPTIONS}
451.if defined(WITH_${var}) && defined(WITHOUT_${var})
452.error WITH_${var} and WITHOUT_${var} can't both be set.
453.endif
454.if defined(MK_${var})
455.error MK_${var} can't be set by a user.
456.endif
457.if defined(WITH_${var})
458MK_${var}:= yes
459.else
460MK_${var}:= no
461.endif
462.endfor
463.undef __DEFAULT_NO_OPTIONS
464
465#
466# Force some options off if their dependencies are off.
467# Order is somewhat important.
468#
469.if ${MK_LIBPTHREAD} == "no"
470MK_LIBTHR:= no
471.endif
472
473.if ${MK_LIBTHR} == "no"
474MK_BIND:= no
475.endif
476
477.if ${MK_BIND} == "no"
478MK_BIND_DNSSEC:= no
479MK_BIND_ETC:= no
480MK_BIND_LIBS:= no
481MK_BIND_LIBS_LWRES:= no
482MK_BIND_MTREE:= no
483MK_BIND_NAMED:= no
484MK_BIND_UTILS:= no
485.endif
486
487.if ${MK_LDNS} == "no"
488MK_LDNS_UTILS:= no
489.endif
490
491.if ${MK_LDNS_UTILS} != "no"
492MK_BIND_UTILS:= no
493.endif
494
495.if ${MK_BIND_MTREE} == "no"
496MK_BIND_ETC:= 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
553MK_CLANG_IS_CC:= no
554.endif
555
556#
557# Set defaults for the MK_*_SUPPORT variables.
558#
559
560#
561# MK_*_SUPPORT options which default to "yes" unless their corresponding
562# MK_* variable is set to "no".
563#
564.for var in \
565 BZIP2 \
566 GNU \
567 INET \
568 INET6 \
569 IPX \
570 KERBEROS \
571 KVM \
572 NETGRAPH \
573 PAM \
574 WIRELESS
575.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
576.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
577.endif
578.if defined(MK_${var}_SUPPORT)
579.error MK_${var}_SUPPORT can't be set by a user.
580.endif
581.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
582MK_${var}_SUPPORT:= no
583.else
584MK_${var}_SUPPORT:= yes
585.endif
586.endfor
587
588#
589# MK_* options whose default value depends on another option.
590#
591.for vv in \
592 GSSAPI/KERBEROS \
593 MAN_UTILS/MAN
594.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
595.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
596.endif
597.if defined(MK_${vv:H})
598.error MK_${vv:H} can't be set by a user.
599.endif
600.if defined(WITH_${vv:H})
601MK_${vv:H}:= yes
602.elif defined(WITHOUT_${vv:H})
603MK_${vv:H}:= no
604.else
605MK_${vv:H}:= ${MK_${vv:T}}
606.endif
607.endfor
608
609#
610# MK_* options that default to "yes" if the compiler is a C++11 compiler.
611#
612.include <bsd.compiler.mk>
613.for var in \
614 LIBCPLUSPLUS
615.if defined(WITH_${var}) && defined(WITHOUT_${var})
616.error WITH_${var} and WITHOUT_${var} can't both be set.
617.endif
618.if defined(MK_${var})
619.error MK_${var} can't be set by a user.
620.endif
621.if ${COMPILER_FEATURES:Mc++11}
622.if defined(WITHOUT_${var})
623MK_${var}:= no
624.else
625MK_${var}:= yes
626.endif
627.else
628.if defined(WITH_${var})
629MK_${var}:= yes
630.else
631MK_${var}:= no
632.endif
633.endif
634.endfor
635
636.if ${MK_CTF} != "no"
637CTFCONVERT_CMD= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
638.elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)
639CTFCONVERT_CMD=
640.else
641CTFCONVERT_CMD= @:
642.endif
643
644.if ${MK_INSTALL_AS_USER} != "no"
645_uid!= id -u
646.if ${_uid} != 0
647.if !defined(USER)
648USER!= id -un
649.endif
650_gid!= id -gn
651.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
652$xOWN= ${USER}
653$xGRP= ${_gid}
654.endfor
655.endif
656.endif
657
658.endif # !_WITHOUT_SRCCONF
659
660.endif # !target(__<bsd.own.mk>__)