]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/mk/bsd.own.mk
Import NetBSD libexecinfo 20130822 to contrib
[FreeBSD/FreeBSD.git] / share / mk / bsd.own.mk
1 # $FreeBSD$
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)
124 SRCCONF?=       /etc/src.conf
125 .if exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf"
126 .include "${SRCCONF}"
127 .endif
128 .endif
129
130 # Binaries
131 BINOWN?=        root
132 BINGRP?=        wheel
133 BINMODE?=       555
134 NOBINMODE?=     444
135
136 .if defined(MODULES_WITH_WORLD)
137 KMODDIR?=       /boot/modules
138 .else
139 KMODDIR?=       /boot/kernel
140 .endif
141 KMODOWN?=       ${BINOWN}
142 KMODGRP?=       ${BINGRP}
143 KMODMODE?=      ${BINMODE}
144
145 LIBDIR?=        /usr/lib
146 LIBCOMPATDIR?=  /usr/lib/compat
147 LIBDATADIR?=    /usr/libdata
148 LIBEXECDIR?=    /usr/libexec
149 LINTLIBDIR?=    /usr/libdata/lint
150 SHLIBDIR?=      ${LIBDIR}
151 LIBOWN?=        ${BINOWN}
152 LIBGRP?=        ${BINGRP}
153 LIBMODE?=       ${NOBINMODE}
154
155 DEBUGDIR?=      /usr/lib/debug
156 DEBUGMODE?=     ${NOBINMODE}
157
158
159 # Share files
160 SHAREDIR?=      /usr/share
161 SHAREOWN?=      root
162 SHAREGRP?=      wheel
163 SHAREMODE?=     ${NOBINMODE}
164
165 CONFDIR?=       /etc
166 CONFOWN?=       root
167 CONFGRP?=       wheel
168 CONFMODE?=      644
169
170 MANDIR?=        ${SHAREDIR}/man/man
171 MANOWN?=        ${SHAREOWN}
172 MANGRP?=        ${SHAREGRP}
173 MANMODE?=       ${NOBINMODE}
174
175 DOCDIR?=        ${SHAREDIR}/doc
176 DOCOWN?=        ${SHAREOWN}
177 DOCGRP?=        ${SHAREGRP}
178 DOCMODE?=       ${NOBINMODE}
179
180 INFODIR?=       ${SHAREDIR}/info
181 INFOOWN?=       ${SHAREOWN}
182 INFOGRP?=       ${SHAREGRP}
183 INFOMODE?=      ${NOBINMODE}
184
185 NLSDIR?=        ${SHAREDIR}/nls
186 NLSOWN?=        ${SHAREOWN}
187 NLSGRP?=        ${SHAREGRP}
188 NLSMODE?=       ${NOBINMODE}
189
190 INCLUDEDIR?=    /usr/include
191
192 #
193 # install(1) parameters.
194 #
195 HRDLINK?=       -l h
196 SYMLINK?=       -l s
197
198 INSTALL_LINK?=          ${INSTALL} ${HRDLINK}
199 INSTALL_SYMLINK?=       ${INSTALL} ${SYMLINK}
200
201 # Common variables
202 .if !defined(DEBUG_FLAGS)
203 STRIP?=         -s
204 .endif
205
206 COMPRESS_CMD?=  gzip -cn
207 COMPRESS_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
232 WITHOUT_${var}=
233 .endif
234 .endfor
235
236 #
237 # Older-style variables that enabled behaviour when set.
238 #
239 .if defined(YES_HESIOD)
240 WITH_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     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     LIBICONV_COMPAT \
381     INSTALL_AS_USER \
382     LDNS_UTILS \
383     NMTREE \
384     NAND \
385     OFED \
386     OPENSSH_NONE_CIPHER \
387     PKGTOOLS \
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})
441 MK_${var}:=     no
442 .else
443 MK_${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})
459 MK_${var}:=     yes
460 .else
461 MK_${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"
471 MK_LIBTHR:=     no
472 .endif
473
474 .if ${MK_LIBTHR} == "no"
475 MK_BIND:=       no
476 .endif
477
478 .if ${MK_BIND} == "no"
479 MK_BIND_DNSSEC:= no
480 MK_BIND_ETC:=   no
481 MK_BIND_LIBS:=  no
482 MK_BIND_LIBS_LWRES:= no
483 MK_BIND_MTREE:= no
484 MK_BIND_NAMED:= no
485 MK_BIND_UTILS:= no
486 .endif
487
488 .if ${MK_ICONV} == "no"
489 MK_LIBICONV_COMPAT:=    no
490 .endif
491
492 .if ${MK_LDNS} == "no"
493 MK_LDNS_UTILS:= no
494 .endif
495
496 .if ${MK_LDNS_UTILS} != "no"
497 MK_BIND_UTILS:= no
498 .endif
499
500 .if ${MK_BIND_MTREE} == "no"
501 MK_BIND_ETC:=   no
502 .endif
503
504 .if ${MK_SOURCELESS} == "no"
505 MK_SOURCELESS_HOST:=    no
506 MK_SOURCELESS_UCODE:= no
507 .endif
508
509 .if ${MK_CDDL} == "no"
510 MK_ZFS:=        no
511 MK_CTF:=        no
512 .endif
513
514 .if ${MK_CRYPT} == "no"
515 MK_OPENSSL:=    no
516 MK_OPENSSH:=    no
517 MK_KERBEROS:=   no
518 .endif
519
520 .if ${MK_CXX} == "no"
521 MK_CLANG:=      no
522 MK_GROFF:=      no
523 .endif
524
525 .if ${MK_MAIL} == "no"
526 MK_MAILWRAPPER:= no
527 MK_SENDMAIL:=   no
528 .endif
529
530 .if ${MK_NETGRAPH} == "no"
531 MK_ATM:=        no
532 MK_BLUETOOTH:=  no
533 .endif
534
535 .if ${MK_OPENSSL} == "no"
536 MK_OPENSSH:=    no
537 MK_KERBEROS:=   no
538 .endif
539
540 .if ${MK_PF} == "no"
541 MK_AUTHPF:=     no
542 .endif
543
544 .if ${MK_TEXTPROC} == "no"
545 MK_GROFF:=      no
546 .endif
547
548 .if ${MK_TOOLCHAIN} == "no"
549 MK_BINUTILS:=   no
550 MK_CLANG:=      no
551 MK_GCC:=        no
552 MK_GDB:=        no
553 .endif
554
555 .if ${MK_CLANG} == "no"
556 MK_CLANG_EXTRAS:= no
557 MK_CLANG_FULL:= no
558 MK_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"
587 MK_${var}_SUPPORT:= no
588 .else
589 MK_${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})
606 MK_${vv:H}:=    yes
607 .elif defined(WITHOUT_${vv:H})
608 MK_${vv:H}:=    no
609 .else
610 MK_${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})
628 MK_${var}:=     no
629 .else
630 MK_${var}:=     yes
631 .endif
632 .else
633 .if defined(WITH_${var})
634 MK_${var}:=     yes
635 .else
636 MK_${var}:=     no
637 .endif
638 .endif
639 .endfor
640
641 .if ${MK_CTF} != "no"
642 CTFCONVERT_CMD= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
643 .elif defined(.PARSEDIR) || (defined(MAKE_VERSION) && ${MAKE_VERSION} >= 5201111300)
644 CTFCONVERT_CMD=
645 .else
646 CTFCONVERT_CMD= @:
647 .endif 
648
649 .if ${MK_INSTALL_AS_USER} != "no"
650 _uid!=  id -u
651 .if ${_uid} != 0
652 .if !defined(USER)
653 USER!=  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>__)