Deleted Added
sdiff udiff text old ( 253689 ) new ( 254273 )
full compact
1# $FreeBSD: head/share/mk/bsd.own.mk 254273 2013-08-13 07:15:01Z peter $
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 ICONV \
296 INET \
297 INET6 \
298 INFO \
299 INSTALLLIB \
300 IPFILTER \
301 IPFW \
302 IPX \
303 JAIL \
304 KDUMP \
305 KERBEROS \
306 KERNEL_SYMBOLS \
307 KVM \
308 LDNS \
309 LEGACY_CONSOLE \
310 LIB32 \
311 LIBPTHREAD \
312 LIBTHR \
313 LOCALES \
314 LOCATE \
315 LPR \
316 LS_COLORS \
317 MAIL \
318 MAILWRAPPER \
319 MAKE \
320 MAN \
321 NDIS \
322 NETCAT \
323 NETGRAPH \
324 NIS \
325 NLS \
326 NLS_CATALOGS \
327 NS_CACHING \
328 NTP \
329 OPENSSH \
330 OPENSSL \
331 PAM \
332 PC_SYSINSTALL \
333 PF \
334 PKGBOOTSTRAP \
335 PKGTOOLS \
336 PMC \
337 PORTSNAP \
338 PPP \
339 PROFILE \
340 QUOTAS \
341 RCMDS \
342 RCS \
343 RESCUE \
344 ROUTED \
345 SENDMAIL \
346 SETUID_LOGIN \
347 SHAREDOCS \
348 SOURCELESS \
349 SOURCELESS_HOST \
350 SOURCELESS_UCODE \
351 SSP \
352 SVNLITE \
353 SYMVER \
354 SYSCONS \
355 SYSINSTALL \
356 TCSH \
357 TELNET \
358 TEXTPROC \
359 TOOLCHAIN \
360 USB \
361 UTMPX \
362 WIRELESS \
363 WPA_SUPPLICANT_EAPOL \
364 ZFS \
365 ZONEINFO
366
367__DEFAULT_NO_OPTIONS = \
368 BIND_IDN \
369 BIND_LARGE_FILE \
370 BIND_LIBS \
371 BIND_SIGCHASE \
372 BIND_XML \
373 BSDCONFIG \
374 BSD_GREP \
375 CLANG_EXTRAS \
376 CTF \
377 DEBUG_FILES \
378 GNU_PATCH \
379 GPL_DTC \
380 HESIOD \
381 LIBICONV_COMPAT \
382 INSTALL_AS_USER \
383 LDNS_UTILS \
384 NMTREE \
385 NAND \
386 OFED \
387 OPENSSH_NONE_CIPHER \
388 SHARED_TOOLCHAIN \
389 SVN \
390 USB_GADGET_EXAMPLES
391
392#
393# Default behaviour of some options depends on the architecture. Unfortunately
394# this means that we have to test TARGET_ARCH (the buildworld case) as well
395# as MACHINE_ARCH (the non-buildworld case). Normally TARGET_ARCH is not
396# used at all in bsd.*.mk, but we have to make an exception here if we want
397# to allow defaults for some things like clang and fdt to vary by target
398# architecture.
399#
400.if defined(TARGET_ARCH)
401__T=${TARGET_ARCH}
402.else
403__T=${MACHINE_ARCH}
404.endif
405# Clang is only for x86, powerpc and little-endian arm right now, by default.
406.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
407__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL
408.elif ${__T} == "arm" || ${__T} == "armv6"
409__DEFAULT_YES_OPTIONS+=CLANG
410# GCC is unable to build the full clang on arm, disable it by default.
411__DEFAULT_NO_OPTIONS+=CLANG_FULL
412.else
413__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL
414.endif
415# Clang the default system compiler only on little-endian arm and x86.
416.if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \
417 ${__T} == "i386"
418__DEFAULT_YES_OPTIONS+=CLANG_IS_CC
419.else
420__DEFAULT_NO_OPTIONS+=CLANG_IS_CC
421.endif
422# FDT is needed only for arm, mips and powerpc
423.if ${__T:Marm*} || ${__T:Mpowerpc*} || ${__T:Mmips*}
424__DEFAULT_YES_OPTIONS+=FDT
425.else
426__DEFAULT_NO_OPTIONS+=FDT
427.endif
428.undef __T
429
430#
431# MK_* options which default to "yes".
432#
433.for var in ${__DEFAULT_YES_OPTIONS}
434.if defined(WITH_${var}) && defined(WITHOUT_${var})
435.error WITH_${var} and WITHOUT_${var} can't both be set.
436.endif
437.if defined(MK_${var})
438.error MK_${var} can't be set by a user.
439.endif
440.if defined(WITHOUT_${var})
441MK_${var}:= no
442.else
443MK_${var}:= yes
444.endif
445.endfor
446.undef __DEFAULT_YES_OPTIONS
447
448#
449# MK_* options which default to "no".
450#
451.for var in ${__DEFAULT_NO_OPTIONS}
452.if defined(WITH_${var}) && defined(WITHOUT_${var})
453.error WITH_${var} and WITHOUT_${var} can't both be set.
454.endif
455.if defined(MK_${var})
456.error MK_${var} can't be set by a user.
457.endif
458.if defined(WITH_${var})
459MK_${var}:= yes
460.else
461MK_${var}:= no
462.endif
463.endfor
464.undef __DEFAULT_NO_OPTIONS
465
466#
467# Force some options off if their dependencies are off.
468# Order is somewhat important.
469#
470.if ${MK_LIBPTHREAD} == "no"
471MK_LIBTHR:= no
472.endif
473
474.if ${MK_LIBTHR} == "no"
475MK_BIND:= no
476.endif
477
478.if ${MK_BIND} == "no"
479MK_BIND_DNSSEC:= no
480MK_BIND_ETC:= no
481MK_BIND_LIBS:= no
482MK_BIND_LIBS_LWRES:= no
483MK_BIND_MTREE:= no
484MK_BIND_NAMED:= no
485MK_BIND_UTILS:= no
486.endif
487
488.if ${MK_ICONV} == "no"
489MK_LIBICONV_COMPAT:= no
490.endif
491
492.if ${MK_LDNS} == "no"
493MK_LDNS_UTILS:= no
494.endif
495
496.if ${MK_LDNS_UTILS} != "no"
497MK_BIND_UTILS:= no
498.endif
499
500.if ${MK_BIND_MTREE} == "no"
501MK_BIND_ETC:= no
502.endif
503
504.if ${MK_SOURCELESS} == "no"
505MK_SOURCELESS_HOST:= no
506MK_SOURCELESS_UCODE:= no
507.endif
508
509.if ${MK_CDDL} == "no"
510MK_ZFS:= no
511MK_CTF:= no
512.endif
513
514.if ${MK_CRYPT} == "no"
515MK_OPENSSL:= no
516MK_OPENSSH:= no
517MK_KERBEROS:= no
518.endif
519
520.if ${MK_CXX} == "no"
521MK_CLANG:= no
522MK_GROFF:= no
523.endif
524
525.if ${MK_MAIL} == "no"
526MK_MAILWRAPPER:= no
527MK_SENDMAIL:= no
528.endif
529
530.if ${MK_NETGRAPH} == "no"
531MK_ATM:= no
532MK_BLUETOOTH:= no
533.endif
534
535.if ${MK_OPENSSL} == "no"
536MK_OPENSSH:= no
537MK_KERBEROS:= no
538.endif
539
540.if ${MK_PF} == "no"
541MK_AUTHPF:= no
542.endif
543
544.if ${MK_TEXTPROC} == "no"
545MK_GROFF:= no
546.endif
547
548.if ${MK_TOOLCHAIN} == "no"
549MK_BINUTILS:= no
550MK_CLANG:= no
551MK_GCC:= no
552MK_GDB:= no
553.endif
554
555.if ${MK_CLANG} == "no"
556MK_CLANG_EXTRAS:= no
557MK_CLANG_FULL:= no
558MK_CLANG_IS_CC:= no
559.endif
560
561#
562# Set defaults for the MK_*_SUPPORT variables.
563#
564
565#
566# MK_*_SUPPORT options which default to "yes" unless their corresponding
567# MK_* variable is set to "no".
568#
569.for var in \
570 BZIP2 \
571 GNU \
572 INET \
573 INET6 \
574 IPX \
575 KERBEROS \
576 KVM \
577 NETGRAPH \
578 PAM \
579 WIRELESS
580.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
581.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
582.endif
583.if defined(MK_${var}_SUPPORT)
584.error MK_${var}_SUPPORT can't be set by a user.
585.endif
586.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
587MK_${var}_SUPPORT:= no
588.else
589MK_${var}_SUPPORT:= yes
590.endif
591.endfor
592
593#
594# MK_* options whose default value depends on another option.
595#
596.for vv in \
597 GSSAPI/KERBEROS \
598 MAN_UTILS/MAN
599.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
600.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
601.endif
602.if defined(MK_${vv:H})
603.error MK_${vv:H} can't be set by a user.
604.endif
605.if defined(WITH_${vv:H})
606MK_${vv:H}:= yes
607.elif defined(WITHOUT_${vv:H})
608MK_${vv:H}:= no
609.else
610MK_${vv:H}:= ${MK_${vv:T}}
611.endif
612.endfor
613
614#
615# MK_* options that default to "yes" if the compiler is a C++11 compiler.
616#
617.include <bsd.compiler.mk>
618.for var in \
619 LIBCPLUSPLUS
620.if defined(WITH_${var}) && defined(WITHOUT_${var})
621.error WITH_${var} and WITHOUT_${var} can't both be set.
622.endif
623.if defined(MK_${var})
624.error MK_${var} can't be set by a user.
625.endif
626.if ${COMPILER_FEATURES:Mc++11}
627.if defined(WITHOUT_${var})
628MK_${var}:= no
629.else
630MK_${var}:= yes
631.endif
632.else
633.if defined(WITH_${var})
634MK_${var}:= yes
635.else
636MK_${var}:= no
637.endif
638.endif
639.endfor
640
641.if ${MK_CTF} != "no"
642CTFCONVERT_CMD= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
643.elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)
644CTFCONVERT_CMD=
645.else
646CTFCONVERT_CMD= @:
647.endif
648
649.if ${MK_INSTALL_AS_USER} != "no"
650_uid!= id -u
651.if ${_uid} != 0
652.if !defined(USER)
653USER!= id -un
654.endif
655_gid!= id -gn
656.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
657$xOWN= ${USER}
658$xGRP= ${_gid}
659.endfor
660.endif
661.endif
662
663.endif # !_WITHOUT_SRCCONF
664
665.endif # !target(__<bsd.own.mk>__)