bsd.own.mk revision 208537
1# $FreeBSD: head/share/mk/bsd.own.mk 208537 2010-05-25 15:12:21Z raj $
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# LINTLIBDIR	Base path for lint libraries. [/usr/libdata/lint]
34#
35# SHLIBDIR	Base path for shared libraries. [${LIBDIR}]
36#
37# LIBOWN	Library owner. [${BINOWN}]
38#
39# LIBGRP	Library group. [${BINGRP}]
40#
41# LIBMODE	Library mode. [${NOBINMODE}]
42#
43#
44# KMODDIR	Base path for loadable kernel modules
45#		(see kld(4)). [/boot/kernel]
46#
47# KMODOWN	Kernel and KLD owner. [${BINOWN}]
48#
49# KMODGRP	Kernel and KLD group. [${BINGRP}]
50#
51# KMODMODE	KLD mode. [${BINMODE}]
52#
53#
54# SHAREDIR	Base path for architecture-independent ascii
55#		text files. [/usr/share]
56#
57# SHAREOWN	ASCII text file owner. [root]
58#
59# SHAREGRP	ASCII text file group. [wheel]
60#
61# SHAREMODE	ASCII text file mode. [${NOBINMODE}]
62#
63#
64# DOCDIR	Base path for system documentation (e.g. PSD, USD,
65#		handbook, FAQ etc.). [${SHAREDIR}/doc]
66#
67# DOCOWN	Documentation owner. [${SHAREOWN}]
68#
69# DOCGRP	Documentation group. [${SHAREGRP}]
70#
71# DOCMODE	Documentation mode. [${NOBINMODE}]
72#
73#
74# INFODIR	Base path for GNU's hypertext system
75#		called Info (see info(1)). [${SHAREDIR}/info]
76#
77# INFOOWN	Info owner. [${SHAREOWN}]
78#
79# INFOGRP	Info group. [${SHAREGRP}]
80#
81# INFOMODE	Info mode. [${NOBINMODE}]
82#
83#
84# MANDIR	Base path for manual installation. [${SHAREDIR}/man/man]
85#
86# MANOWN	Manual owner. [${SHAREOWN}]
87#
88# MANGRP	Manual group. [${SHAREGRP}]
89#
90# MANMODE	Manual mode. [${NOBINMODE}]
91#
92#
93# NLSDIR	Base path for National Language Support files
94#		installation. [${SHAREDIR}/nls]
95#
96# NLSOWN	National Language Support files owner. [${SHAREOWN}]
97#
98# NLSGRP	National Language Support files group. [${SHAREGRP}]
99#
100# NLSMODE	National Language Support files mode. [${NOBINMODE}]
101#
102# INCLUDEDIR	Base path for standard C include files [/usr/include]
103
104.if !target(__<bsd.own.mk>__)
105__<bsd.own.mk>__:
106
107.if !defined(_WITHOUT_SRCCONF)
108SRCCONF?=	/etc/src.conf
109.if exists(${SRCCONF})
110.include "${SRCCONF}"
111.endif
112.endif
113
114# Binaries
115BINOWN?=	root
116BINGRP?=	wheel
117BINMODE?=	555
118NOBINMODE?=	444
119
120.if defined(MODULES_WITH_WORLD)
121KMODDIR?=	/boot/modules
122.else
123KMODDIR?=	/boot/kernel
124.endif
125KMODOWN?=	${BINOWN}
126KMODGRP?=	${BINGRP}
127KMODMODE?=	${BINMODE}
128
129LIBDIR?=	/usr/lib
130LIBCOMPATDIR?=	/usr/lib/compat
131LIBDATADIR?=	/usr/libdata
132LINTLIBDIR?=	/usr/libdata/lint
133SHLIBDIR?=	${LIBDIR}
134LIBOWN?=	${BINOWN}
135LIBGRP?=	${BINGRP}
136LIBMODE?=	${NOBINMODE}
137
138
139# Share files
140SHAREDIR?=	/usr/share
141SHAREOWN?=	root
142SHAREGRP?=	wheel
143SHAREMODE?=	${NOBINMODE}
144
145MANDIR?=	${SHAREDIR}/man/man
146MANOWN?=	${SHAREOWN}
147MANGRP?=	${SHAREGRP}
148MANMODE?=	${NOBINMODE}
149
150DOCDIR?=	${SHAREDIR}/doc
151DOCOWN?=	${SHAREOWN}
152DOCGRP?=	${SHAREGRP}
153DOCMODE?=	${NOBINMODE}
154
155INFODIR?=	${SHAREDIR}/info
156INFOOWN?=	${SHAREOWN}
157INFOGRP?=	${SHAREGRP}
158INFOMODE?=	${NOBINMODE}
159
160NLSDIR?=	${SHAREDIR}/nls
161NLSOWN?=	${SHAREOWN}
162NLSGRP?=	${SHAREGRP}
163NLSMODE?=	${NOBINMODE}
164
165INCLUDEDIR?=	/usr/include
166
167# Common variables
168.if !defined(DEBUG_FLAGS)
169STRIP?=		-s
170.endif
171
172COMPRESS_CMD?=	gzip -cn
173COMPRESS_EXT?=	.gz
174
175.if !defined(_WITHOUT_SRCCONF)
176#
177# Define MK_* variables (which are either "yes" or "no") for users
178# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
179# make(1) environment.
180# These should be tested with `== "no"' or `!= "no"' in makefiles.
181# The NO_* variables should only be set by makefiles.
182#
183
184#
185# Supported NO_* options (if defined, MK_* will be forced to "no",
186# regardless of user's setting).
187#
188.for var in \
189    INSTALLLIB \
190    MAN \
191    PROFILE
192.if defined(NO_${var})
193WITHOUT_${var}=
194.endif
195.endfor
196
197#
198# Compat NO_* options (same as above, except their use is deprecated).
199#
200.if !defined(BURN_BRIDGES)
201.for var in \
202    ACPI \
203    ATM \
204    AUDIT \
205    AUTHPF \
206    BIND \
207    BIND_DNSSEC \
208    BIND_ETC \
209    BIND_LIBS_LWRES \
210    BIND_MTREE \
211    BIND_NAMED \
212    BIND_UTILS \
213    BLUETOOTH \
214    BOOT \
215    CALENDAR \
216    CPP \
217    CRYPT \
218    CVS \
219    CXX \
220    DICT \
221    DYNAMICROOT \
222    EXAMPLES \
223    FORTH \
224    FP_LIBC \
225    GAMES \
226    GCOV \
227    GDB \
228    GNU \
229    GPIB \
230    GROFF \
231    HTML \
232    INET6 \
233    INFO \
234    IPFILTER \
235    IPX \
236    KERBEROS \
237    LIB32 \
238    LIBPTHREAD \
239    LIBTHR \
240    LOCALES \
241    LPR \
242    MAILWRAPPER \
243    NETCAT \
244    NIS \
245    NLS \
246    NLS_CATALOGS \
247    NS_CACHING \
248    OBJC \
249    OPENSSH \
250    OPENSSL \
251    PAM \
252    PF \
253    RCMDS \
254    RCS \
255    RESCUE \
256    SENDMAIL \
257    SETUID_LOGIN \
258    SHAREDOCS \
259    SYSCONS \
260    TCSH \
261    TOOLCHAIN \
262    USB \
263    WPA_SUPPLICANT_EAPOL
264.if defined(NO_${var})
265#.warning NO_${var} is deprecated in favour of WITHOUT_${var}=
266WITHOUT_${var}=
267.endif
268.endfor
269.endif # !defined(BURN_BRIDGES)
270
271#
272# Older-style variables that enabled behaviour when set.
273#
274.if defined(YES_HESIOD)
275WITH_HESIOD=
276.endif
277.if defined(MAKE_IDEA)
278WITH_IDEA=
279.endif
280
281# Enable FDT by default for selected platforms.
282.if defined(TARGET_ARCH) && \
283	(${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "powerpc")
284# XXX this is temporarily disabled until all FDT support code is in place.
285#_fdt=	FDT
286_no_fdt= FDT
287.else
288_no_fdt= FDT
289.endif
290
291#
292# MK_* options which default to "yes".
293#
294.for var in \
295    ACCT \
296    ACPI \
297    AMD \
298    APM \
299    ASSERT_DEBUG \
300    AT \
301    ATM \
302    AUDIT \
303    AUTHPF \
304    BIND \
305    BIND_DNSSEC \
306    BIND_ETC \
307    BIND_LIBS_LWRES \
308    BIND_MTREE \
309    BIND_NAMED \
310    BIND_UTILS \
311    BLUETOOTH \
312    BOOT \
313    BSD_CPIO \
314    BSNMP \
315    BZIP2 \
316    CALENDAR \
317    CDDL \
318    CPP \
319    CRYPT \
320    CTM \
321    CVS \
322    CXX \
323    DICT \
324    DYNAMICROOT \
325    EXAMPLES \
326    ${_fdt} \
327    FLOPPY \
328    FORTH \
329    FP_LIBC \
330    FREEBSD_UPDATE \
331    GAMES \
332    GCOV \
333    GDB \
334    GNU \
335    GNU_GREP \
336    GPIB \
337    GROFF \
338    HTML \
339    INET6 \
340    INFO \
341    INSTALLLIB \
342    IPFILTER \
343    IPFW \
344    IPX \
345    JAIL \
346    KERBEROS \
347    KVM \
348    LEGACY_CONSOLE \
349    LIB32 \
350    LIBPTHREAD \
351    LIBTHR \
352    LOCALES \
353    LOCATE \
354    LPR \
355    MAIL \
356    MAILWRAPPER \
357    MAKE \
358    MAN \
359    NCP \
360    NDIS \
361    NETCAT \
362    NETGRAPH \
363    NIS \
364    NLS \
365    NLS_CATALOGS \
366    NS_CACHING \
367    NTP \
368    OBJC \
369    OPENSSH \
370    OPENSSL \
371    PAM \
372    PF \
373    PKGTOOLS \
374    PMC \
375    PORTSNAP \
376    PPP \
377    PROFILE \
378    QUOTAS \
379    RCMDS \
380    RCS \
381    RESCUE \
382    ROUTED \
383    SENDMAIL \
384    SETUID_LOGIN \
385    SHAREDOCS \
386    SSP \
387    SYSINSTALL \
388    SYMVER \
389    SYSCONS \
390    TCSH \
391    TELNET \
392    TEXTPROC \
393    TOOLCHAIN \
394    USB \
395    WIRELESS \
396    WPA_SUPPLICANT_EAPOL \
397    ZFS \
398    ZONEINFO
399.if defined(WITH_${var}) && defined(WITHOUT_${var})
400.error WITH_${var} and WITHOUT_${var} can't both be set.
401.endif
402.if defined(MK_${var})
403.error MK_${var} can't be set by a user.
404.endif
405.if defined(WITHOUT_${var})
406MK_${var}:=	no
407.else
408MK_${var}:=	yes
409.endif
410.endfor
411
412#
413# MK_* options which default to "no".
414#
415.for var in \
416    BIND_IDN \
417    BIND_LARGE_FILE \
418    BIND_LIBS \
419    BIND_SIGCHASE \
420    BIND_XML \
421    ${_no_fdt} \
422    HESIOD \
423    IDEA
424.if defined(WITH_${var}) && defined(WITHOUT_${var})
425.error WITH_${var} and WITHOUT_${var} can't both be set.
426.endif
427.if defined(MK_${var})
428.error MK_${var} can't be set by a user.
429.endif
430.if defined(WITH_${var})
431MK_${var}:=	yes
432.else
433MK_${var}:=	no
434.endif
435.endfor
436
437#
438# Force some options off if their dependencies are off.
439# Order is somewhat important.
440#
441.if ${MK_LIBPTHREAD} == "no"
442MK_LIBTHR:=	no
443.endif
444
445.if ${MK_LIBTHR} == "no"
446MK_BIND:=	no
447.endif
448
449.if ${MK_BIND} == "no"
450MK_BIND_DNSSEC:= no
451MK_BIND_ETC:=	no
452MK_BIND_LIBS:=	no
453MK_BIND_LIBS_LWRES:= no
454MK_BIND_MTREE:=	no
455MK_BIND_NAMED:=	no
456MK_BIND_UTILS:=	no
457.endif
458
459.if ${MK_BIND_MTREE} == "no"
460MK_BIND_ETC:=	no
461.endif
462
463.if ${MK_CDDL} == "no"
464MK_ZFS:=	no
465.endif
466
467.if ${MK_CRYPT} == "no"
468MK_OPENSSL:=	no
469MK_OPENSSH:=	no
470MK_KERBEROS:=	no
471.endif
472
473.if ${MK_IPX} == "no"
474MK_NCP:=	no
475.endif
476
477.if ${MK_MAIL} == "no"
478MK_MAILWRAPPER:= no
479MK_SENDMAIL:=	no
480.endif
481
482.if ${MK_NETGRAPH} == "no"
483MK_ATM:=	no
484MK_BLUETOOTH:=	no
485.endif
486
487.if ${MK_OPENSSL} == "no"
488MK_OPENSSH:=	no
489MK_KERBEROS:=	no
490.endif
491
492.if ${MK_PF} == "no"
493MK_AUTHPF:=	no
494.endif
495
496.if ${MK_TEXTPROC} == "no"
497MK_GROFF:=	no
498.endif
499
500.if ${MK_TOOLCHAIN} == "no"
501MK_GDB:=	no
502.endif
503
504#
505# Set defaults for the MK_*_SUPPORT variables.
506#
507
508#
509# MK_*_SUPPORT options which default to "yes" unless their corresponding
510# MK_* variable is set to "no".
511#
512.for var in \
513    BZIP2 \
514    GNU \
515    INET6 \
516    IPX \
517    KERBEROS \
518    KVM \
519    NETGRAPH \
520    PAM \
521    WIRELESS
522.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
523.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
524.endif
525.if defined(MK_${var}_SUPPORT)
526.error MK_${var}_SUPPORT can't be set by a user.
527.endif
528.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
529MK_${var}_SUPPORT:= no
530.else
531MK_${var}_SUPPORT:= yes
532.endif
533.endfor
534
535#
536# MK_* options whose default value depends on another option.
537#
538.for vv in \
539    GSSAPI/KERBEROS \
540    MAN_UTILS/MAN
541.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
542.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
543.endif
544.if defined(MK_${vv:H})
545.error MK_${vv:H} can't be set by a user.
546.endif
547.if defined(WITH_${vv:H})
548MK_${vv:H}:=	yes
549.elif defined(WITHOUT_${vv:H})
550MK_${vv:H}:=	no
551.else
552MK_${vv:H}:=	${MK_${vv:T}}
553.endif
554.endfor
555
556.endif # !_WITHOUT_SRCCONF
557
558.endif	# !target(__<bsd.own.mk>__)
559