bsd.README revision 1.341
1#	$NetBSD: bsd.README,v 1.341 2015/04/26 21:37:22 mrg Exp $
2#	@(#)bsd.README	8.2 (Berkeley) 4/2/94
3
4This is the README file for the make "include" files for the NetBSD
5source tree.  The files are installed in /usr/share/mk, and are,
6by convention, named with the suffix ".mk".
7
8Note, this file is not intended to replace reading through the .mk
9files for anything tricky.
10
11=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
12
13RANDOM THINGS WORTH KNOWING:
14
15The files are simply C-style #include files, and pretty much behave like
16you'd expect.  The syntax is slightly different in that a single '.' is
17used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
18
19One difference that will save you lots of debugging time is that inclusion
20of the file is normally done at the *end* of the Makefile.  The reason for
21this is because .mk files often modify variables and behavior based on the
22values of variables set in the Makefile.  To make this work, remember that
23the FIRST target found is the target that is used, i.e. if the Makefile has:
24
25	a:
26		echo a
27	a:
28		echo a number two
29
30the command "make a" will echo "a".  To make things confusing, the SECOND
31variable assignment is the overriding one, i.e. if the Makefile has:
32
33	a=	foo
34	a=	bar
35
36	b:
37		echo ${a}
38
39the command "make b" will echo "bar".  This is for compatibility with the
40way the V7 make behaved.
41
42It's fairly difficult to make the BSD .mk files work when you're building
43multiple programs in a single directory.  It's a lot easier to split up the
44programs than to deal with the problem.  Most of the agony comes from making
45the "obj" directory stuff work right, not because we switched to a new version
46of make.  So, don't get mad at us, figure out a better way to handle multiple
47architectures so we can quit using the symbolic link stuff.  (Imake doesn't
48count.)
49
50The file .depend in the source directory is expected to contain dependencies
51for the source files.  This file is read automatically by make after reading
52the Makefile.
53
54The variable DESTDIR works as before.  It's not set anywhere but will change
55the tree where the file gets installed.
56
57The profiled libraries are no longer built in a different directory than
58the regular libraries.  A new suffix, ".po", is used to denote a profiled
59object, and ".pico" denotes a shared (position-independent) object.
60
61There are various make variables used during the build.
62
63Many variables support a (case sensitive) value of "no" or "yes",
64and are tested with  ${VAR} == "no"  and  ${VAR} != "no" .
65
66
67The basic rule for the variable naming scheme is as follows:
68
69HOST_xxx	A command that runs on the host machine regardless of
70		whether or not the system is being cross compiled, or
71		flags for such a command.
72
73MKxxx		Can be set to "no" to disable functionality, or
74		"yes" to enable it.
75		Usually defaults to "yes", although some variables
76		default to "no".
77		Due to make(1) implementation issues, if a temporary
78		command-line override of a mk.conf(5) or <bsd.own.mk>
79		setting is required whilst still honoring a particular
80		Makefile's setting of MKxxx, use
81			env MKxxx=value make
82		instead of
83			make MKxxx=value
84
85NOxxx		If defined, disables a feature.
86		Not intended for users.
87		This is to allow Makefiles to disable functionality
88		that they don't support (such as missing man pages).
89		NOxxx variables must be defined before <bsd.own.mk>
90		is included.
91
92TOOL_xxx	A tool that is provided as part of the USETOOLS
93		framework.  When not using the USETOOLS framework,
94		TOOL_xxx variables should refer to tools that are
95		already installed on the host system.
96
97The following variables that control how things are made/installed that
98are not set by default. These should not be set by Makefiles; they're for
99the user to define in MAKECONF (see <bsd.own.mk>, below, or mk.conf(5))
100or on the make(1) command line:
101
102BUILD 		If defined, 'make install' checks that the targets in the
103		source directories are up-to-date and remakes them if they
104                are out of date, instead of blindly trying to install
105                out of date or non-existent targets.
106
107MAKEVERBOSE	Control how "verbose" the standard make(1) rules are.
108		Default: 2
109		Supported values:
110		    0	Minimal output ("quiet")
111		    1	Describe what is occurring
112		    2	Describe what is occurring and echo the actual command
113		    3	Ignore the effect of the "@" prefix in make commands
114		    4	Trace shell commands using the shell's -x flag
115
116MKATF		If "no", don't build the Automated Testing Framework (ATF),
117		which includes the libatf-c, libatf-c++ and libatf-sh libraries
118		and the various command line tools.  Also, because the build of
119		the libraries is disabled, don't build the NetBSD test suite
120		either.
121		Default: yes
122
123MKBFD		Obsolete, use MKBINUTILS
124
125MKBINUTILS	If "no", don't build binutils (gas, ld, etc and libbfd,
126		libopcodes)
127		Default: yes
128
129MKBSDTAR	If "yes", use the libarchive based cpio and tar instead of
130		the pax frontends.
131		Default: no
132
133MKCATPAGES	If "no", don't build or install the catman pages.
134		Default: no
135
136MKCOMPAT  	If "no", don't build or install the src/compat.
137		Default: yes on amd64/mips64/sparc64, no elsewhere.
138
139MKCOMPLEX	If "no", don't build libm support for <complex.h>
140		Default: yes
141
142MKCRYPTO	If "no", no cryptography support will be built into the system,
143		and also acts as "MKKERBEROS=no".
144		Default: yes
145
146MKCRYPTO_RC5	If not "no", RC5 support will be built into libcrypto_rc5
147		Default: no
148
149MKCTF		If "no", do not build and install CTF tools, and also
150		don't generate and manipulate CTF data of ELF binaries
151		during build.
152		Default: no
153
154MKCVS		If "no", don't build or install cvs(1).
155		Default: yes
156
157MKDEBUG		If "no", don't build and install separate debugging symbols
158		into /usr/libdata/debug.
159		Default: no
160
161MKDEBUGLIB	Build *_g.a debugging libraries, which are compiled
162		with -DDEBUG.
163		Default: no
164
165MKDEPINCLUDES	If "yes" issue .include statements in the .depend file
166		instead of inlining the contents of the .d files. Useful
167		when stale dependencies are present, to list the exact
168		files that need refreshing. It is off by default because
169		it is possibly slower.
170		Default "no"
171
172MKDOC		If "no", don't build or install the documentation.
173		Default: yes
174
175MKDTRACE	If "no", do not build and install the kernel modules,
176		utilities and libraries used to implement the dtrace(1)
177		facility.
178		Default: no
179
180MKDYNAMICROOT	If "no", build programs in /bin and /sbin statically,
181		don't install certain libraries in /lib, and don't
182		install the shared linker into /libexec.
183		Default: yes
184
185MKEXTSRC        If not "no", 'make build' also descends into either src/extsrc
186		to cross-build programs and libraries externally added by
187		users, and automatically enables creation of those sets.
188		Default: no
189
190MKGCC		If "no", don't build gcc(1) or any of the GCC-related
191		libraries (libgcc, libobjc, libstdc++).
192		Default: yes
193
194MKGCCCMDS	If "no", don't build gcc(1), but do build the GCC-related
195		libraries (libgcc, libobjc, libstdc++).
196		Default: yes
197
198MKGDB		If "no", don't build gdb(1).
199		Default: yes
200
201MKGROFFHTMLDOC	If "no", avoid trying to use groff to generate html for
202		miscellaneous articles, as this seems to sometimes want
203		to run software not in base. Does not affect html man
204		pages.
205		Default: no
206
207MKHESIOD	If "no", disables building of Hesiod infrastructure
208		(libraries and support programs).
209		Default: yes
210
211MKHOSTOBJ	If not "no", for programs intended to be run on the compile
212		host, the name, release, and architecture of the host
213		operating system will be suffixed to the name of the object
214		directory created by "make obj".
215		Default: no
216
217MKHTML		If "no", don't build or install the HTML man pages.
218		Default: yes
219
220MKIEEEFP	If "no", don't add code for IEEE754/IEC60559 conformance.
221		Has no effect on most platforms.
222		Default: yes
223
224MKSTRIPIDENT	Strip the RCS IDs from program binaries and shared libraries.
225		Default: no
226
227MKINET6		If "no", disables building of INET6 (IPv6) infrastructure
228		(libraries and support programs).  This option must not be
229		set to "no" if MKX11 is not "no".
230		Default: yes
231
232MKINFO		If "no", don't build or install Info documentation from
233		Texinfo source files.
234		Default: yes
235
236MKIPFILTER	If "no", don't build or install the IP Filter programs and LKM.
237		Default: yes
238
239MKISCSI		If "no", don't build or install iSCSI library or applications
240		(depends on libpthread.)
241		Default: yes
242
243MKKDEBUG	If "yes", force building of kernel symbol info and creation
244		of netbsd.gdb in all kernel builds, independently of the
245		settings for "makeoptions DEBUG" in the kernel config file.
246
247MKKERBEROS	If "no", disables building of Kerberos v5
248		infrastructure (libraries and support programs).
249		Default: yes
250
251MKKMOD		If "no", disables building of kernel modules.
252		Default: yes
253
254MKKYUA		If "no", don't build Kyua nor its dependent library Lutok.
255		Note that setting this to "no" does not disable the build of
256		the NetBSD test suite itself; the build of the tests is
257		controlled by the MKATF knob.
258		Default: no (until the import is done and validated)
259
260MKLDAP		If "no", disables building of LDAP infrastructure
261		(libraries and support programs).
262		Default: yes
263
264MKLIBCXX	If not "no", build and install libc++.
265		Default: no
266
267MKLIBSTDCXX	If not "no", build and install libstdc++.
268		Default: yes
269
270MKLINKLIB	If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
271		Also:
272			- don't install the .a libraries
273			- don't install _pic.a libraries on PIC systems
274			- don't build .a libraries on PIC systems
275			- don't install the .so symlink on ELF systems
276		I.e, only install the shared library (and the .so.major
277		symlink on ELF).
278		Default: yes
279
280MKLINT		If "no", don't build or install the lint libraries.
281		Default: yes
282
283MKLVM		If "no", don't build or install the logical volume manager
284		and device mapper tools and libraries
285		Default: yes
286
287MKMAN		If "no", don't build or install the man or catman pages,
288		and also acts as "MKCATPAGES=no MKHTML=no".
289		Default: yes
290
291MKMANDOC	If "yes", mandoc is built as tool and used to compile
292		catman or html pages.  A directory can be exempted by
293		defining NOMANDOC.  Individual man pages are exempted
294		if NOMANDOC.${target} is set to "yes".
295		Default: yes
296
297MKMANZ		If not "no", compress manual pages at installation time.
298		Default: no
299
300MKMDNS		If "no", disables building of mDNS infrastructure
301		(libraries and support programs).
302		Default: yes
303
304MKNLS		If "no", don't build or install the NLS files and locale
305		definition files.
306		Default: yes
307
308MKNPF		If "no", don't build or install the NPF and its modules.
309		Default: yes
310
311MKOBJ		If "no", don't enable the rule which creates objdirs,
312		and also acts as "MKOBJDIRS=no".
313		Default: yes
314
315MKOBJDIRS	If "no", don't create objdirs during a "make build".
316		Default: no
317
318MKPAM		If "no", disables building of PAM authentication
319		infrastructure (libraries and support programs).
320		Default: yes
321
322MKPCC		If "no", don't build pcc(1) or any of the PCC-related
323		libraries (libpcc, libpccsoftfloat).
324		Default: no
325
326MKPF		If "no", don't build or install the pf programs and LKM.
327		Default: yes
328
329MKPIC		If "no", don't build or install shared libraries, and
330		also acts as "MKPICLIB=no"
331		Default: yes (for MACHINE_ARCHs that support it)
332
333MKPICINSTALL	If "no", don't install the *_pic.a libraries.
334		Default: yes
335
336MKPICLIB	If "no", don't build *_pic.a libraries, and build the
337		shared object libraries from the .a libraries.
338		A symlink is installed in ${DESTDIR}/usr/lib for the
339		_pic.a library pointing to the .a library.
340		Default: yes
341
342MKPIE		If "no", create regular executables. Otherwise create
343		PIE (Position Independent Executables).
344		Default: no
345
346MKPIGZGZIP	If "no", only install pigz as pigz, not gzip.
347		Default: no
348
349MKPOSTFIX	If "no", don't build or install postfix(1).
350		Default: yes
351
352MKPROFILE	If "no", don't build or install the profiling (*_p.a) libraries.
353		Default: yes
354
355MKREPRO         If "yes", create reproducable builds. This enables
356		different switches to make two builds from the same source tree
357		result in the same build results.
358		Default: no
359
360MKSHARE		If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
361		MKMAN=no MKNLS=no".
362		I.e, don't build catman pages, documentation, Info
363		documentation, man pages, NLS files, ...
364		Default: yes
365
366MKSKEY		If "no", disables building of S/key authentication
367		infrastructure (libraries and support programs).
368		Default: yes
369
370MKSLJIT		If "no", disables building of sljit (stack-less platform
371		independent JIT compiler) private library and tests.
372		Default: yes on amd64, i386 and sparc, no elsewhere.
373
374MKSOFTFLOAT	If not "no", build with options to enable the compiler to
375		generate output containing library calls for floating
376		point and possibly soft-float library support.
377		Default: no
378
379MKSTATICLIB	If "no", don't build or install the normal static (*.a)
380		libraries.
381		Default: yes
382
383MKTPM		If "no" then don't build the Trusted Platform Module
384		infrastructure.
385		Default: no
386
387MKUNPRIVED	If not "no", don't set the owner/group/mode when installing
388		files or directories, and keep a metadata log of what
389		the owner/group/mode should be.  This allows a
390		non-root "make install".
391		Default: no
392
393MKUPDATE 	If not "no", 'make install' only installs targets that are
394		more recently modified in the source directories that their
395		installed counterparts.
396		Default: no
397
398MKX11		If not "no", depending on the value of ${X11FLAVOUR},
399		'make build' also descends into either src/x11 (XFree86) or
400		src/external/mit/xorg (modular Xorg) to cross-build X11 and
401		automatically enables creation of X sets.
402		Default: no
403
404MKX11FONTS	If not "no", if ${X11FLAVOUR} is "Xorg", do not build or
405		install the X fonts.  The xfont set is still created but
406		will be empty.
407		Default: yes
408
409MKX11MOTIF:	If "yes" and ${X11FLAVOUR} is "Xorg", build the native X11
410		libGLw with Motif stubs.  If Motif is not installed in the
411		default location /usr/pkg, the location can be specified
412		using the X11MOTIFPATH variable.
413		Default: no
414
415MKX11RADEONKMS	If "no", build the xf86-video-ati 6.x driver (the last one
416		with user-mode switching support), otherwise build the
417		kernek-mode switching (KMS) requiring driver.
418		Default: yes on i386 and amd64, no elsewhere.
419
420MKRADEONFIRMWARE If "no", install the /libdata/firmware/radeon directory,
421		which is necessary for the radeon DRM driver.
422		Default: yes on i386 and amd64, no elsewhere.
423
424MKYP		If "no", disables building of YP (NIS)
425		infrastructure (libraries and support programs).
426		Default: yes
427
428MKZFS		If "no", do not build and install utilities and libraries
429		used to manage ZFS file system. Do not build zfs and solaris
430		compatibility kernel modules.  Note: ZFS requires 64bit
431		atomic operations.
432		Default: yes on amd64, no elsewhere.
433
434MKRUMP		If "no", do not build and install rump related headers,
435		libraries, and programs.
436		Default: yes
437
438USE_HESIOD	If "no", disables building Hesiod support into
439		various system utilities/libraries that support it.
440		If ${MKHESIOD} is "no", USE_HESIOD will also be
441		forced to "no".
442
443USE_INET6	If "no", disables building INET6 (IPv6) support into
444		various system utilities/libraries that support it.
445		If ${MKINET6} is "no", USE_INET6 will also be
446		forced to "no".
447
448USE_JEMALLOC	If "no", disables building the "jemalloc" allocator
449		designed for improved performance with threaded
450		applications.  The "phkmalloc" allocator as used up
451		before NetBSD-5.0 will be substituted.
452
453USE_KERBEROS	If "no", disables building Kerberos v5
454		support into various system utilities/libraries that
455		support it.  If ${MKKERBEROS} is "no", USE_KERBEROS
456		will also be forced to "no".
457
458USE_LDAP	If "no", disables building LDAP support into various
459		system utilities/libraries that support it.
460		If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
461
462USE_PAM		If "no", disables building PAM authentication support
463		into various system utilities/libraries that support it.
464		If ${MKPAM} is "no", USE_PAM will also be forced to "no".
465
466USE_SKEY	If "no", disables building S/key authentication
467		support into various system utilities/libraries that
468		support it.  If ${MKSKEY} is "no", USE_SKEY will
469		also be forced to "no".
470		Default: no
471
472USE_SSP		If "no", disables GCC stack protection code, which
473		detects stack overflows and aborts the program. The
474		stack protection code imposes a performance penalty
475		of about 5%.
476		Default: "no", unless "USE_FORT" is set to "yes"
477
478USE_FORT 	If "yes" turns on substitute wrappers for commonly used
479		functions that do not do bounds checking regularly, but
480		they could in some cases by using the gcc
481		__builtin_object_size() function to determine the buffer
482		size where it is known and detect buffer overflows.
483		These substitute functions are in /usr/include/ssp.
484		Default: depends on the part of the source tree
485
486USE_YP		If "no", disables building YP (NIS) support into
487		various system utilities/libraries that support it.
488		If ${MKYP} is "no", USE_YP will also be forced to "no".
489
490USE_PIGZGZIP	If "no", use the host "gzip" program to compress things.
491		Otherwise, build tools/pigz, set TOOL_GZIP=${TOOL_PIGZ},
492		and use nbpigz to compress things.
493		Default: "no".
494
495X11FLAVOUR	Set to "Xorg" or "XFree86", depending on whether to build
496		XFree86 or modular Xorg.  Only matters if MKX11!=no.
497		Default: "Xorg" on amd64, i386, macppc, shark and sparc64,
498		"XFree86" on everything else.
499
500COPTS.lib<lib>
501OBJCOPTS.lib<lib>
502LDADD.lib<lib>
503CPPFLAGS.lib<lib>
504CXXFLAGS.lib<lib>
505COPTS.<prog>
506OBJCCOPTS.<prog>
507LDADD.<prog>
508CPPFLAGS.<prog>
509CXXFLAGS.<prog>	These provide a way to specify additions to the associated
510		variables in a way that applies only to a particular library
511		or program.  <lib> corresponds to the LIB variable set in
512		the library's makefile.  <prog> corresponds to either PROG
513		or PROG_CXX (if set).  For example, if COPTS.libcrypto is
514		set to "-g", "-g" will be added to COPTS only when compiling
515		the crypto library.
516
517The active compiler is selected using the following variables:
518AVAILABLE_COMPILER
519		List of available compiler suites.  Processed in order
520		for selecting the active compiler for each frontend.
521HAVE_PCC	If defined, PCC is present and enabled.
522HAVE_LLVM	If defined, LLVM/Clang is present and enabled.
523UNSUPPORTED_COMPILER.xxx
524		If defined, the support for compiler "xxx" is disabled.
525
526For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist:
527ACTIVE_CC	Active compile suite for the CC frontend.
528SUPPORTED_CC	Compile suite with support for the CC frontend.
529TOOL_CC.xxx	Path to the CC frontend for compiler "xxx"
530
531=-=-=-=-=   sys.mk   =-=-=-=-=
532
533The include file <sys.mk> has the default rules for all makes, in the BSD
534environment or otherwise.  You probably don't want to touch this file.
535
536=-=-=-=-=   bsd.own.mk   =-=-=-=-=
537
538The include file <bsd.own.mk> contains source tree configuration parameters,
539such as the owners, groups, etc. for both manual pages and binaries, and
540a few global "feature configuration" parameters.
541
542It has no targets.
543
544To get system-specific configuration parameters, <bsd.own.mk> will try to
545include the file specified by the "MAKECONF" variable.  If MAKECONF is not
546set, or no such file exists, the system make configuration file, /etc/mk.conf
547is included.  These files may define any of the variables described below.
548
549<bsd.own.mk> sets the following variables, if they are not already defined
550(defaults are in brackets):
551
552NETBSDSRCDIR	Top of the NetBSD source tree.
553		If _SRC_TOP_ != "", that will be used as the default,
554		otherwise BSDSRCDIR will be used as the default.
555		Various makefiles within the NetBSD source tree will
556		use this to reference the top level of the source tree.
557
558_SRC_TOP_	Top of the system source tree, as determined by <bsd.own.mk>
559		based on the presence of tools/ and build.sh.  This variable
560		is "internal" to <bsd.own.mk>, although its value is only
561		determined once and then propagated to all sub-makes.
562
563_NETBSD_VERSION_DEPENDS
564		A list of files which contain information about
565		the version of the NetBSD being built.  This is
566		defined only if the current directory appears
567		to be inside a NetBSD source tree.  The list of
568		files includes ${NETBSDSRCDIR}/sys/sys/param.h
569		(which contains the kernel version number),
570		${NETBSDSRCDIR}/sys/conf/newvers.sh and
571		${NETBSDSRCDIR}/sys/conf/osrelease.sh (which
572		interpret the information in sys/sys/param.h), and
573		${_SRC_TOP_OBJ_}/params (which is an optional file,
574		created by "make build" in ${_SRC_TOP_}/Makefile,
575		containing all the variables that may influence the
576		build).
577
578		Targets that depend on the NetBSD version, or on
579		variables defined at build time, can declare a
580		dependency on ${_NETBSD_VERSION_DEPENDS}, like this:
581
582			version.c: ${_NETBSD_VERSION_DEPENDS}
583				commands to create version.c
584
585BSDSRCDIR	The real path to the system sources, so that 'make obj'
586		will work correctly.  [/usr/src]
587
588BSDOBJDIR	The real path to the system 'obj' tree, so that 'make obj'
589		will work correctly.  [/usr/obj]
590
591BINGRP		Binary group.  [wheel]
592
593BINOWN		Binary owner.  [root]
594
595BINMODE		Binary mode.  [555]
596
597NONBINMODE	Mode for non-executable files.  [444]
598
599MANDIR		Base path for manual installation.  [/usr/share/man/cat]
600
601MANGRP		Manual group.  [wheel]
602
603MANOWN		Manual owner.  [root]
604
605MANMODE		Manual mode.  [${NONBINMODE}]
606
607MANINSTALL	Manual installation type.  Space separated list:
608			catinstall, htmlinstall, maninstall
609		Default value derived from MKCATPAGES and MKHTML.
610
611LDSTATIC	Control program linking; if set blank, link everything
612		dynamically.  If set to "-static", link everything statically.
613		If not set, programs link according to their makefile.
614
615LIBDIR		Base path for library installation.  [/usr/lib]
616
617LINTLIBDIR	Base path for lint(1) library installation.  [/usr/libdata/lint]
618
619LIBGRP		Library group.  [${BINGRP}]
620
621LIBOWN		Library owner.  [${BINOWN}]
622
623LIBMODE		Library mode.  [${NONBINMODE}]
624
625DOCDIR		Base path for system documentation (e.g. PSD, USD, etc.)
626	        installation.  [/usr/share/doc]
627
628DOCGRP		Documentation group.  [wheel]
629
630DOCOWN		Documentation owner.  [root]
631
632DOCMODE		Documentation mode.  [${NONBINMODE}]
633
634GZIP_N_FLAG	Flags to pass to TOOL_GZIP to prevent it from inserting
635		file names or timestamps in the compressed output.
636		[-n, or -nT when TOOL_GZIP is really TOOL_PIGZ]
637
638NLSDIR		Base path for Native Language Support files installation.
639		[/usr/share/nls]
640
641NLSGRP		Native Language Support files group.  [wheel]
642
643NLSOWN		Native Language Support files owner.  [root]
644
645NLSMODE		Native Language Support files mode.  [${NONBINMODE}]
646
647X11SRCDIR	The path to the xsrc tree.  [${NETBSDSRCDIR}/../xsrc,
648		if that exists; otherwise /usr/xsrc]
649
650X11SRCDIR.xc	The path to the (old) X11 xc src tree.  [${X11SRCDIR}/xfree/xc]
651
652X11SRCDIR.local	The path to the local X11 src tree.  [${X11SRCDIR}/local]
653
654X11SRCDIR.lib<package>
655X11SRCDIR.<package>
656		The path to the xorg src tree for the specificed package>.
657		[${X11SRCDIR}/external/mit/xorg/<package>/dist]
658
659X11ROOTDIR	Root directory of the X11 installation.  [/usr/X11R6 or
660		[/usr/X11R7]
661
662X11BINDIR	X11 bin directory.  [${X11ROOTDIR}/bin]
663
664X11FONTDIR	X11 font directory.  [${X11ROOTDIR}/lib/X11/fonts]
665
666X11INCDIR	X11 include directory.  [${X11ROOTDIR}/include]
667
668X11LIBDIR	X11 lib/x11 (config) directory.  [${X11ROOTDIR}/lib/X11]
669
670X11MANDIR	X11 manual directory.  [${X11ROOTDIR}/man]
671
672X11USRLIBDIR	X11 library directory.  [${X11ROOTDIR}/lib]
673
674STRIPFLAG	The flag passed to the install program to cause the binary
675		to be stripped.  This is to be used when building your
676		own install script so that the entire system can be made
677		stripped/not-stripped using a single knob.  []
678
679COPY		The flag passed to the install program to cause the binary
680		to be copied rather than moved.  This is to be used when
681		building our own install script so that the entire system
682		can either be installed with copies, or with moves using
683		a single knob.  [-c]
684
685MAKEDIRTARGETENV
686		Environment variables passed to the child make process
687		invoked by MAKEDIRTARGET.
688
689MAKEDIRTARGET dir target [params]
690		Runs "cd $${dir} && ${MAKE} [params] $${target}",
691		displaying a "pretty" message whilst doing so.
692
693RELEASEMACHINEDIR
694		Subdirectory used below RELEASEDIR when building
695		a release.  [${MACHINE}]
696
697RELEASEMACHINE	Subdirectory or path component used for the following
698		paths:
699			distrib/${RELEASEMACHINE}
700			distrib/notes/${RELEASEMACHINE}
701			etc/etc.${RELEASEMACHINE}
702		Used when building a release.  [${MACHINE}]
703
704Additionally, the following variables may be set by <bsd.own.mk> or in a
705make configuration file to modify the behavior of the system build
706process (default values are in brackets along with comments, if set by
707<bsd.own.mk>):
708
709USETOOLS	Indicates whether the tools specified by ${TOOLDIR} should
710		be used as part of a build in progress.
711		Supported values:
712
713		yes	Use the tools from TOOLDIR.
714			Must be set to this if cross-compiling.
715
716		no	Do not use the tools from TOOLDIR, but refuse to
717			build native compilation tool components that are
718			version-specific for that tool.
719
720		never	Do not use the tools from TOOLDIR, even when
721			building native tool components.  This is similar to
722			the traditional NetBSD build method, but does not
723			verify that the compilation tools in use are
724			up-to-date enough in order to build the tree
725			successfully.  This may cause build or runtime
726			problems when building the whole NetBSD source tree.
727
728		Default: "yes" if building all or part of a whole NetBSD
729		source tree (detected automatically); "no" otherwise
730		(to preserve traditional semantics of the <bsd.*.mk>
731		make(1) include files).
732
733OBJECT_FMT	Object file format.  [set to "ELF" on architectures that
734		use ELF -- currently all architectures].
735
736TOOLCHAIN_MISSING
737		If not "no", this indicates that the platform being built
738		does not have a working in-tree toolchain.  If the
739		${MACHINE_ARCH} in question falls into this category,
740		TOOLCHAIN_MISSING is conditionally assigned the value "yes".
741		Otherwise, the variable is unconditionally assigned the
742		value "no".
743		If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are
744		unconditionally assigned the value "no".
745
746EXTERNAL_TOOLCHAIN
747		This variable is not directly set by <bsd.own.mk>, but
748		including <bsd.own.mk> is the canonical way to gain
749		access to this variable.  The variable should be defined
750		either in the user's environment or in the user's mk.conf
751		file.  If defined, this variable indicates the root of
752		an external toolchain which will be used to build the
753		tree.  For example, if a platform is a ${TOOLCHAIN_MISSING}
754		platform, EXTERNAL_TOOLCHAIN can be used to re-enable the
755		cross-compile framework.
756
757		If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally
758		assigned the value "no", since the external version of the
759		compiler may not be able to build the library components of
760		the in-tree compiler.
761
762		NOTE: This variable is not yet used in as many places as
763		it should be.  Expect the exact semantics of this variable
764		to change in the short term as parts of the cross-compile
765		framework continue to be cleaned up.
766
767The following variables are defined to commands to perform the
768appropriate operation, with the default in [brackets].  Note that
769the defaults change if USETOOLS == "yes":
770
771TOOL_AMIGAAOUT2BB	aout to Amiga bootblock converter.  [amiga-aout2bb]
772
773TOOL_AMIGAELF2BB	ELF to Amiga bootblock converter.  [amiga-elf2bb]
774
775TOOL_AMIGATXLT		Amige assembly language format translator.  [amiga-txlt]
776
777TOOL_ASN1_COMPILE	ASN1 compiler.  [asn1_compile]
778
779TOOL_AWK		Pattern-directed scanning/processing language.  [awk]
780
781TOOL_CAP_MKDB		Create capability database.  [cap_mkdb]
782
783TOOL_CAT		Concatenate and print files.  [cat]
784
785TOOL_CKSUM		Display file checksums.  [cksum]
786
787TOOL_COMPILE_ET		Error table compiler.  [compile_et]
788
789TOOL_CONFIG		Build kernel compilation directories.  [config]
790
791TOOL_CRUNCHGEN		Generate crunched binary build environment.  [crunchgen]
792
793TOOL_CTAGS		Create a tags file.  [ctags]
794
795TOOL_DB			Manipulate db(3) databases.  [db]
796
797TOOL_DISKLABEL		Read and write disk pack label.  [disklabel]
798
799TOOL_EQN		Format equations for groff.  [eqn]
800
801TOOL_FDISK		MS-DOS partition maintenance program.  [fdisk]
802
803TOOL_FGEN		IEEE 1275 Open Firmware FCode Tokenizer.  [fgen]
804
805TOOL_GENASSYM		Generate constants for assembly files.  [genassym]
806
807TOOL_GENCAT		Generate NLS message catalogs.  [gencat]
808
809TOOL_GMAKE		GNU make utility.  [gmake]
810
811TOOL_GREP		Print lines matching a pattern.  [grep]
812
813TOOL_GROFF		Front end for groff document formatting system.  [groff]
814
815TOOL_GZIP		Compression/decompression tool.  [gzip]
816
817TOOL_GZIP_N		Same as TOOL_GZIP, plus a command line option to
818			prevent it from inserting file names or timestamps
819			into the compressed output.
820			[${TOOL_GZIP} ${GZIP_N_FLAG}]
821
822TOOL_HEXDUMP		Ascii, decimal, hexadecimal, octal dump.  [hexdump]
823
824TOOL_HP300MKBOOT	Make bootable image for hp300.  [hp300-mkboot]
825
826TOOL_HPPAMKBOOT		Make bootable image for hppa.  [hppa-mkboot]
827
828TOOL_INDXBIB		Make bibliographic database's inverted index.  [indxbib]
829
830TOOL_INSTALLBOOT	Install disk bootstrap software.  [installboot]
831
832TOOL_INSTALL_INFO	Update info/dir entries.  [install-info]
833
834TOOL_JOIN		Relational database operator.  [join]
835
836TOOL_M4			M4 macro language processor.  [m4]
837
838TOOL_MACPPCFIXCOFF	Fix up xcoff headers for macppc.  [macppc-fixcoff]
839
840TOOL_MAKEFS		Create file system image from directory tree.  [makefs]
841
842TOOL_MAKEINFO		Translate Texinfo documents.  [makeinfo]
843
844TOOL_MAKEWHATIS		Create a whatis.db database.  [makewhatis]
845
846TOOL_MDSETIMAGE		Set kernel RAM disk image.  [mdsetimage]
847
848TOOL_MENUC		Menu compiler.  [menuc]
849
850TOOL_MIPSELF2ECOFF	Convert ELF-format executable to ECOFF for mips.
851			[mips-elf2ecoff]
852
853TOOL_MKCSMAPPER		Make charset mapping table.  [mkcsmapper]
854
855TOOL_MKESDB		Make encoding scheme database.  [mkesdb]
856
857TOOL_MKLOCALE		Make LC_CTYPE locale files.  [mklocale]
858
859TOOL_MKMAGIC		Create database for file(1).  [file]
860
861TOOL_MKNOD		Make device special file.  [mknod]
862
863TOOL_MKTEMP		Make (unique) temporary file name.  [mktemp]
864
865TOOL_MSGC		Simple message list compiler.  [msgc]
866
867TOOL_MTREE		Map a directory hierarchy.  [mtree]
868
869TOOL_NCDCS		Turn ELF kernel into a NCD firmware image. [ncdcs]
870
871TOOL_PAX		Manipulate file archives and copy directories.  [pax]
872
873TOOL_PIC		Compile pictures for groff.  [pic]
874
875TOOL_PIGZ		Parallel compressor.  [pigz]
876
877TOOL_POWERPCMKBOOTIMAGE	Make bootable image for powerpc.  [powerpc-mkbootimage]
878
879TOOL_PWD_MKDB		Generate the password databases.  [pwd_mkdb]
880
881TOOL_REFER		Preprocess bibliographic references for groff.  [refer]
882
883TOOL_ROFF_ASCII		Generate ASCII groff output.  [nroff]
884
885TOOL_ROFF_DVI		Generate DVI groff output.  [${TOOL_GROFF} -Tdvi]
886
887TOOL_ROFF_HTML		Generate HTML groff output.
888			[${TOOL_GROFF} -Tlatin1 -mdoc2html]
889
890TOOL_ROFF_PS		Generate PS groff output.  [${TOOL_GROFF} -Tps]
891
892TOOL_ROFF_RAW		Generate "raw" groff output.  [${TOOL_GROFF} -Z]
893
894TOOL_RPCGEN		Remote Procedure Call (RPC) protocol compiler.  [rpcgen]
895
896TOOL_SED		Stream editor.  [sed]
897
898TOOL_SOELIM		Eliminate .so's from groff input.  [soelim]
899
900TOOL_SPARKCRC		Generate a crc suitable for use in a sparkive file.
901			[sparkcrc]
902
903TOOL_STAT		Display file status.  [stat]
904
905TOOL_STRFILE		Create a random access file for storing strings.
906			[strfile]
907
908TOOL_SUNLABEL		Read or modify a SunOS disk label.  [sunlabel]
909
910TOOL_TBL		Format tables for groff.  [tbl]
911
912TOOL_UUDECODE		Uudecode a binary file.  [uudecode]
913
914TOOL_VGRIND		Grind nice listings of programs.  [vgrind -f]
915
916TOOL_ZIC		Time zone compiler.  [zic]
917
918For each possible value of MACHINE_CPU, MACHINES.${MACHINE_CPU} contain a
919list of what ports can be built for it.  This keeps those definitions in
920centralized place.
921
922<bsd.own.mk> is generally useful when building your own Makefiles so that
923they use the same default owners etc. as the rest of the tree.
924
925
926=-=-=-=-=   bsd.clean.mk   =-=-=-=-=
927
928The include file <bsd.clean.mk> defines the clean and cleandir
929targets.  It uses the following variables:
930
931CLEANFILES	Files to remove for both the clean and cleandir targets.
932
933CLEANDIRFILES	Files to remove for the cleandir target, but not for
934		the clean target.
935
936MKCLEANSRC	Controls whether or not the clean and cleandir targets
937		will delete files from both the object directory,
938		${.OBJDIR}, and the source directory, ${.CURDIR}.
939
940		If MKCLEANSRC is set to "no", then the file names in
941		CLEANFILES or CLEANDIRFILES are interpreted relative
942		to the object directory, ${.OBJDIR}.  This is the
943		traditional behaviour.
944
945		If MKCLEANSRC is set to "yes", then the file deletion
946		is performed relative to both the object directory,
947		${.OBJDIR}, and the source directory, ${.CURDIR}.  (This
948		has no effect if ${.OBJDIR} is the same as ${.CURDIR}.)
949		Deleting files from ${.CURDIR} is intended to remove
950		stray output files that had been left in the source
951		directory by an earlier build that did not use object
952		directories.
953
954		The default is MKCLEANSRC=yes.  If you always build with
955		separate object directories, and you are sure that there
956		are no stray files in the source directories, then you
957		may set MKCLEANSRC=no to save some time.
958
959MKCLEANVERIFY	Controls whether or not the clean and cleandir targets
960		will verify that files have been deleted.
961
962		If MKCLEANVERIFY is set to "no", then the files will
963		be deleted using a "rm -f" command, and its success or
964		failure will be ignored.
965
966		If MKCLEANVERIFY is set to "yes", then the success of
967		the "rm -f" command will be verified using an "ls"
968		command.
969
970		The default is MKCLEANVERIFY=yes.  If you are sure that
971		there will be no problems caused by file permissions,
972		read-only file systems, or the like, then you may set
973		MKCLEANVERIFY=no to save some time.
974
975To use the clean and cleandir targets defined in <bsd.clean.mk>, other
976Makefiles or bsd.*.mk files should append file names to the CLEANFILES
977or CLEANDIRFILES variables.  For example:
978
979	    CLEANFILES+= a.out
980	    CLEANDIRFILES+= .depend
981
982	    .include <bsd.clean.mk>
983
984The files listed in CLEANFILES and CLEANDIRFILES must not be
985directories, because the potential risk from running "rm -rf" commands
986in bsd.clean.mk is considered too great.  If you want to recursively
987delete a directory as part of "make clean" or "make cleandir" then you
988need to provide your own target.
989
990=-=-=-=-=   bsd.dep.mk   =-=-=-=-=
991
992The include file <bsd.dep.mk> contains the default targets for building
993.depend files.  It creates .d files from entries in SRCS and DPSRCS
994that are C, C++, or Objective C source files, and builds .depend from the
995.d files.  All other files in SRCS and all of DPSRCS will be used as
996dependencies for the .d files.  In order for this to function correctly,
997it should be .included after all other .mk files and directives that may
998modify SRCS or DPSRCS.  It uses the following variables:
999
1000SRCS		List of source files to build the program.
1001
1002DPSRCS		List of source files which are needed for generating
1003		dependencies, but are not needed in ${SRCS}.
1004
1005
1006=-=-=-=-=   bsd.files.mk   =-=-=-=-=
1007
1008The include file <bsd.files.mk> handles the FILES variables and is included
1009from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables:
1010
1011FILES		The list of files to install.
1012
1013CONFIGFILES	Similar semantics to FILES, except that the files
1014		are installed by the `configinstall' target,
1015		not the `install' target.
1016		The FILES* variables documented below also apply.
1017
1018FILESOWN	File owner.  [${BINOWN}]
1019
1020FILESGRP	File group.  [${BINGRP}]
1021
1022FILESMODE	File mode.  [${NONBINMODE}]
1023
1024FILESDIR	The location to install the files.
1025
1026FILESNAME	Optional name to install each file as.
1027
1028FILESOWN_<fn>	File owner of the specific file <fn>.
1029
1030FILESGRP_<fn>	File group of the specific file <fn>.
1031
1032FILESMODE_<fn>	File mode of the specific file <fn>.
1033
1034FILESDIR_<fn>	The location to install the specific file <fn>.
1035
1036FILESNAME_<fn>	Optional name to install <fn> as.
1037
1038FILESBUILD	If this variable is defined, then its value will be
1039		used as the default for all FILESBUILD_<fn> variables.
1040		Otherwise, the default will be "no".
1041
1042FILESBUILD_<fn>	A value different from "no" will add the file to the list of
1043		targets to be built by `realall'.  Users of that variable
1044		should provide a target to build the file.
1045
1046
1047BUILDSYMLINKS	List of two word items:
1048			lnsrc lntgt
1049		For each lnsrc item, create a symlink named lntgt.
1050		The lntgt symlinks are removed by the cleandir target.
1051
1052UUDECODE_FILES	List of files which are stored as <file>.uue in the source
1053		tree. Each one will be decoded with ${TOOL_UUDECODE}.
1054		The source files have a `.uue' suffix, the generated files do
1055		not.
1056
1057UUDECODE_FILES_RENAME_<fn>
1058		Rename the output from the decode to the provided name.
1059		
1060		*NOTE: These files are simply decoded, with no install or other
1061		       rule applying implicitly except being added to the clean
1062		       target.
1063
1064=-=-=-=-=   bsd.gcc.mk   =-=-=-=-=
1065
1066The include file <bsd.gcc.mk> computes various parameters related to GCC
1067support libraries.  It defines no targets.  <bsd.own.mk> MUST be included
1068before <bsd.gcc.mk>.
1069
1070The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each
1071of which need to know where to find certain GCC support libraries.
1072
1073The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable,
1074which is generally set by the user.  If EXTERNAL_TOOLCHAIN it set, then
1075the compiler is asked where to find the support libraries, otherwise the
1076support libraries are found in ${DESTDIR}/usr/lib.
1077
1078<bsd.gcc.mk> sets the following variables:
1079
1080_GCC_CRTBEGIN	The full path name to crtbegin.o.
1081
1082_GCC_CRTBEGINS	The full path name to crtbeginS.o.
1083
1084_GCC_CRTEND	The full path name to crtend.o.
1085
1086_GCC_CRTENDS	The full path name to crtendS.o.
1087
1088_GCC_LIBGCCDIR	The directory where libgcc.a is located.
1089
1090
1091=-=-=-=-=   bsd.inc.mk   =-=-=-=-=
1092
1093The include file <bsd.inc.mk> defines the includes target and uses the
1094variables:
1095
1096INCS		The list of include files.
1097
1098INCSDIR		The location to install the include files.
1099
1100INCSNAME	Target name of the include file, if only one; same as
1101		FILESNAME, but for include files.
1102
1103INCSYMLINKS	Similar to SYMLINKS in <bsd.links.mk>, except that these
1104		are installed in the 'includes' target and not the
1105		(much later) 'install' target.
1106
1107INCSNAME_<file>	The name file <file> should be installed as, if not <file>,
1108		same as FILESNAME_<file>, but for include files.
1109
1110
1111=-=-=-=-=   bsd.info.mk   =-=-=-=-=
1112
1113The include file <bsd.info.mk> is used to generate and install GNU Info
1114documentation from respective Texinfo source files.  It defines three
1115implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
1116following variables:
1117
1118TEXINFO		List of Texinfo source files.  Info documentation will
1119		consist of single files with the extension replaced by
1120		.info.
1121
1122INFOFLAGS	Flags to pass to makeinfo.  []
1123
1124
1125=-=-=-=-=   bsd.kernobj.mk   =-=-=-=-=
1126
1127The include file <bsd.kernobj.mk> defines variables related to the
1128location of kernel sources and object directories.
1129
1130KERNSRCDIR	Is the location of the top of the kernel src.
1131		[${_SRC_TOP_}/sys]
1132
1133KERNARCHDIR	Is the location of the machine dependent kernel sources.
1134		[arch/${MACHINE}]
1135
1136KERNCONFDIR	Is where the configuration files for kernels are found.
1137		[${KERNSRCDIR}/${KERNARCHDIR}/conf]
1138
1139KERNOBJDIR	Is the kernel build directory.  The kernel GENERIC for
1140		instance will be compiled in ${KERNOBJDIR}/GENERIC.
1141		The default value is
1142		${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile
1143		if it exists or the target 'obj' is being made.
1144		Otherwise the default is
1145		${KERNSRCDIR}/${KERNARCHDIR}/compile.
1146
1147It is important that Makefiles (such as those under src/distrib) that
1148wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR}
1149rather than make assumptions about the location of the compiled kernel.
1150
1151
1152=-=-=-=-=   bsd.kinc.mk   =-=-=-=-=
1153
1154The include file <bsd.kinc.mk> defines the many targets (includes,
1155subdirectories, etc.), and is used by kernel makefiles to handle
1156include file installation.  It is intended to be included alone, by
1157kernel Makefiles.  It uses similar variables to <bsd.inc.mk>.
1158Please see <bsd.kinc.mk> for more details, and keep the documentation
1159in that file up to date.
1160
1161=-=-=-=-=   bsd.syscall.mk =-=-=-=-=
1162
1163The include file <bsd.syscall.mk> contains the logic to create syscall
1164files for various emulations. It includes <bsd.kinc.mk> to handle the
1165rest of the targets.
1166
1167=-=-=-=-=   bsd.lib.mk   =-=-=-=-=
1168
1169The include file <bsd.lib.mk> has support for building libraries.  It has
1170the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
1171includes, install, lint, and tags.  Additionally, it has a checkver target
1172which checks for installed shared object libraries whose version is greater
1173that the version of the source. It has a limited number of suffixes,
1174consistent with the current needs of the BSD tree.  <bsd.lib.mk> includes
1175<bsd.shlib.mk> to get shared library parameters.
1176
1177It sets/uses the following variables:
1178
1179LIB		The name of the library to build.
1180
1181LIBDIR		Target directory for libraries.
1182
1183MKARZERO	Normally, ar(1) sets the timestamps, uid, gid and
1184		permissions in files inside its archives to those of
1185		the file it was fed. This leads to non-reproduceable
1186		builds. If MKARZERO is set to "yes" (default is the
1187		same as MKREPRO, or "no" if MKREPRO is not defined),
1188		then the "D" flag is passed to ar, causing the
1189		timestamp, uid and gid to be zeroed and the file
1190		permissions to be set to 644. This allows .a files
1191		from different builds to be bit identical.
1192
1193SHLIBINSTALLDIR	Target directory for shared libraries if ${USE_SHLIBDIR}
1194		is not "no".
1195
1196SHLIB_MAJOR
1197SHLIB_MINOR
1198SHLIB_TEENY	Major, minor, and teeny version numbers of shared library
1199
1200USE_SHLIBDIR	If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR}
1201		as the path to install shared libraries to.
1202		USE_SHLIBDIR must be defined before <bsd.own.mk> is included.
1203		Default: no
1204
1205LIBISMODULE	If not "no", install as ${LIB}.so (without the "lib" prefix),
1206		and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no
1207		MKPROFILE=no MKSTATICLIB=no".
1208		Default: no
1209
1210LIBISPRIVATE	If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no
1211		MKPROFILE=no", and don't install the (.a) library.
1212		This is useful for "build only" helper libraries.
1213		Default: no
1214
1215LIBISCXX	If not "no", Use ${CXX} instead of ${CC} to link
1216		shared libraries.
1217		This is useful for C++ libraries.
1218		Default: no
1219
1220LINTLIBDIR	Target directory for lint libraries.
1221
1222LIBGRP		Library group.
1223
1224LIBOWN		Library owner.
1225
1226LIBMODE		Library mode.
1227
1228LDADD		Additional loader objects.
1229
1230MAN		The manual pages to be installed (use a .1 - .9 suffix).
1231
1232NOCHECKVER_<library>
1233NOCHECKVER	If set, disables checking for installed shared object
1234		libraries with versions greater than the source.  A
1235		particular library name, without the "lib" prefix, may
1236		be appended to the variable name to disable the check for
1237		only that library.
1238
1239SRCS		List of source files to build the library.  Suffix types
1240		.s, .c, and .f are supported.  Note, .s files are preferred
1241		to .c files of the same name.  (This is not the default for
1242		versions of make.)
1243
1244LIBDPLIBS	A list of the tuples:
1245			libname  path-to-srcdir-of-libname
1246
1247		For each tuple;
1248		     *	LIBDO.libname contains the .OBJDIR of the library
1249			`libname', and if it is not set it is determined
1250			from the srcdir and added to MAKEOVERRIDES (the
1251			latter is to allow for build time optimization).
1252		     *	LDADD gets  -L${LIBDO.libname} -llibname    added.
1253		     *	DPADD gets  ${LIBDO.libname}/liblibname.so  or
1254				    ${LIBDO.libname}/liblibname.a   added.
1255
1256		The special value "_external" for LIBDO.lib makes the
1257		build system to assume the library comes from outside
1258		of the NetBSD source tree and only causes -llibname
1259		to be added to LDADD.
1260
1261		This variable may be used for individual libraries, as
1262		well as in parent directories to cache common libraries
1263		as a build-time optimization.
1264
1265The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
1266if it exists, as well as the include file <bsd.man.mk>.
1267
1268It has rules for building profiled objects; profiled libraries are
1269built by default.
1270
1271Libraries are ranlib'd when made.
1272
1273
1274=-=-=-=-=   bsd.links.mk   =-=-=-=-=
1275
1276The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
1277and is included from from <bsd.lib.mk> and <bsd.prog.mk>.
1278
1279LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log
1280is used. The defaults may be modified by other bsd.*.mk files which
1281include bsd.links.mk.  In the future, these variables may be replaced
1282by a method for explicitly recording hard links in a metadata log.
1283
1284LINKS		The list of hard links, consisting of pairs of paths:
1285			source-file target-file
1286		${DESTDIR} is prepended to both paths before linking.
1287		For example, to link /bin/test and /bin/[, use:
1288			LINKS=/bin/test /bin/[
1289
1290CONFIGLINKS	Similar semantics to LINKS, except that the links
1291		are installed by the `configinstall' target,
1292		not the `install' target.
1293
1294SYMLINKS	The list of symbolic links, consisting of pairs of paths:
1295			source-file target-file
1296		${DESTDIR} is only prepended to target-file before linking.
1297		For example, to symlink /usr/bin/tar to /bin/tar resulting
1298		in ${DESTDIR}/usr/bin/tar -> /bin/tar:
1299			SYMLINKS=/bin/tar /usr/bin/tar
1300
1301CONFIGSYMLINKS	Similar semantics to SYMLINKS, except that the symbolic links
1302		are installed by the `configinstall' target,
1303		not the `install' target.
1304
1305LINKSOWN	Link owner.  [${BINOWN}]
1306
1307LINKSGRP	Link group.  [${BINGRP}]
1308
1309LINKSMODE	Link mode.  [${NONBINMODE}]
1310
1311LINKSOWN_<fn>	Link owner of the specific file <fn>.
1312
1313LINKSGRP_<fn>	Link group of the specific file <fn>.
1314
1315LINKSMODE_<fn>	Link mode of the specific file <fn>.
1316
1317
1318=-=-=-=-=   bsd.man.mk   =-=-=-=-=
1319
1320The include file <bsd.man.mk> handles installing manual pages and their
1321links.
1322
1323It has a three targets:
1324
1325	catinstall:
1326		Install the preformatted manual pages and their links.
1327	htmlinstall:
1328		Install the HTML manual pages and their links.
1329	maninstall:
1330		Install the manual page sources and their links.
1331
1332It sets/uses the following variables:
1333
1334MANDIR		Base path for manual installation.
1335
1336MANGRP		Manual group.
1337
1338MANOWN		Manual owner.
1339
1340MANMODE		Manual mode.
1341
1342MANSUBDIR	Subdirectory under the manual page section, i.e. "/vax"
1343		or "/tahoe" for machine specific manual pages.
1344
1345MAN		The manual pages to be installed (use a .1 - .9 suffix).
1346
1347MLINKS		List of manual page links (using a .1 - .9 suffix).  The
1348		linked-to file must come first, the linked file second,
1349		and there may be multiple pairs.
1350
1351The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
1352it exists.
1353
1354
1355=-=-=-=-=   bsd.obj.mk   =-=-=-=-=
1356
1357The include file <bsd.obj.mk> defines targets related to the creation
1358and use of separated object and source directories.
1359
1360If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses
1361${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if
1362it exists.  Otherwise make(1) looks for the existence of a
1363subdirectory (or a symlink to a directory) of the source directory
1364into which built targets should be placed.  If an environment variable
1365named MAKEOBJDIR is set, make(1) uses its value as the name of the
1366object directory; failing that, make first looks for a subdirectory
1367named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj".
1368
1369Object directories are not created automatically by make(1) if they
1370don't exist; you need to run a separate "make obj".  (This will happen
1371during a top-level build if "MKOBJDIRS" is set to a value other than
1372"no").  When the source directory is a subdirectory of ${BSDSRCDIR} --
1373and this is determined by a simple string prefix comparison -- object
1374directories are created in a separate object directory tree, and a
1375symlink to the object directory in that tree is created in the source
1376directory; otherwise, "make obj" assumes that you're not in the main
1377source tree and that it's not safe to use a separate object tree.
1378
1379Several variables used by <bsd.obj.mk> control exactly what
1380directories and links get created during a "make obj":
1381
1382MAKEOBJDIR	If set, this is the component name of the object
1383		directory.
1384
1385OBJMACHINE	If this is set but MAKEOBJDIR is not set, creates
1386		object directories or links named "obj.${MACHINE}";
1387		otherwise, just creates ones named "obj".
1388
1389USR_OBJMACHINE  If set, and the current directory is a subdirectory of
1390		${BSDSRCDIR}, create object directory in the
1391		corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
1392		otherwise, create it in the corresponding subdirectory
1393		of ${BSDOBJDIR}
1394
1395BUILDID		If set, the contents of this variable are appended
1396		to the object directory name.  If OBJMACHINE is also
1397		set, ".${BUILDID}" is added after ".${MACHINE}".
1398
1399
1400=-=-=-=-=   bsd.prog.mk   =-=-=-=-=
1401
1402The include file <bsd.prog.mk> handles building programs from one or
1403more source files, along with their manual pages.  It has a limited number
1404of suffixes, consistent with the current needs of the BSD tree.
1405<bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters.
1406
1407It has eight targets:
1408
1409	all:
1410		build the program and its manual page.  This also
1411		creates a GDB initialization file (.gdbinit) in
1412		the objdir.  The .gdbinit file sets the shared library
1413		prefix to ${DESTDIR} to facilitate cross-debugging.
1414	clean:
1415		remove the program, any object files and the files a.out,
1416		Errs, errs, mklog, and ${PROG}.core.
1417	cleandir:
1418		remove all of the files removed by the target clean, as
1419		well as .depend, tags, and any manual pages.
1420		`distclean' is a synonym for `cleandir'.
1421	depend:
1422		make the dependencies for the source files, and store
1423		them in the file .depend.
1424	includes:
1425		install any header files.
1426	install:
1427		install the program and its manual pages; if the Makefile
1428		does not itself define the target install, the targets
1429		beforeinstall and afterinstall may also be used to cause
1430		actions immediately before and after the install target
1431		is executed.
1432	lint:
1433		run lint on the source files
1434	tags:
1435		create a tags file for the source files.
1436
1437It sets/uses the following variables:
1438
1439BINGRP		Binary group.
1440
1441BINOWN		Binary owner.
1442
1443BINMODE		Binary mode.
1444
1445CLEANDIRFILES	Additional files to remove for the cleandir target.
1446
1447CLEANFILES	Additional files to remove for the clean and cleandir targets.
1448
1449CONFIGOPTS	Additional flags to config(1) when building kernels.
1450
1451COPTS		Additional flags to the compiler when creating C objects.
1452
1453COPTS.<fn>	Additional flags to the compiler when creating the
1454		C objects for <fn>.
1455		For <fn>.[ly], "<fn>.c" must be used.
1456
1457CPUFLAGS	Additional flags to the compiler/assembler to select
1458		CPU instruction set options, CPU tuning options, etc.
1459
1460CPUFLAGS.<fn>	Additional flags to the compiler/assembler for <fn>.
1461		For <fn>.[ly], "<fn>.c" must be used.
1462
1463CPPFLAGS	Additional flags to the C pre-processor.
1464
1465CPPFLAGS.<fn>	Additional flags to the C pre-processor for <fn>.
1466		For <fn>.[ly], "<fn>.c" must be used.
1467
1468GDBINIT		List of GDB initialization files to add to "source"
1469		directives in the .gdbinit file that is created in the
1470		objdir.
1471
1472LDADD		Additional loader objects.  Usually used for libraries.
1473		For example, to load with the compatibility and utility
1474		libraries, use:
1475
1476			LDADD+=-lutil -lcompat
1477
1478LDFLAGS		Additional linker flags (passed to ${CC} during link).
1479
1480LINKS		See <bsd.links.mk>
1481
1482OBJCOPTS	Additional flags to the compiler when creating ObjC objects.
1483
1484OBJCOPTS.<fn>	Additional flags to the compiler when creating the
1485		ObjC objects for <fn>.
1486		For <fn>.[ly], "<fn>.c" must be used.
1487
1488SYMLINKS	See <bsd.links.mk>
1489
1490MAN		Manual pages (should end in .1 - .9).  If no MAN variable is
1491		defined, "MAN=${PROG}.1" is assumed.
1492
1493PAXCTL_FLAGS	If defined, run paxctl(1) on the program binary after link
1494		time, with the value of this variable as args to paxctl(1).
1495
1496PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS.
1497
1498PROG		The name of the program to build.  If not supplied, nothing
1499		is built.
1500
1501PROG_CXX	If defined, the name of the program to build.  Also
1502		causes <bsd.prog.mk> to link the program with the C++
1503		compiler rather than the C compiler.  PROG_CXX overrides
1504		the value of PROG if PROG is also set.
1505
1506PROGNAME	The name that the above program will be installed as, if
1507		different from ${PROG}.
1508
1509SRCS		List of source files to build the program.  If SRCS is not
1510		defined, it's assumed to be ${PROG}.c.
1511
1512DPSRCS		List of source files which are needed for generating
1513		dependencies, but are not needed in ${SRCS}.
1514
1515DPADD		Additional dependencies for the program.  Usually used for
1516		libraries.  For example, to depend on the compatibility and
1517		utility libraries use:
1518
1519			DPADD+=${LIBCOMPAT} ${LIBUTIL}
1520
1521		The following system libraries are predefined for DPADD:
1522
1523		LIBARCHIVE?=	${DESTDIR}/usr/lib/libarchive.a
1524		LIBASN1?=	${DESTDIR}/usr/lib/libasn1.a
1525		LIBATF_C?=	${DESTDIR}/usr/lib/libatf-c.a
1526		LIBATF_CXX?=	${DESTDIR}/usr/lib/libatf-c++.a
1527		LIBBIND9?=	${DESTDIR}/usr/lib/libbind9.a
1528		LIBBLUETOOTH?=	${DESTDIR}/usr/lib/libbluetooth.a
1529		LIBBSDMALLOC?=	${DESTDIR}/usr/lib/libbsdmalloc.a
1530		LIBBZ2?=	${DESTDIR}/usr/lib/libbz2.a
1531		LIBC?=		${DESTDIR}/usr/lib/libc.a
1532		LIBCOMPAT?=	${DESTDIR}/usr/lib/libcompat.a
1533		LIBCOM_ERR?=	${DESTDIR}/usr/lib/libcom_err.a
1534		LIBCRT0?=	${DESTDIR}/usr/lib/crt0.o
1535		LIBCRTI?=	${DESTDIR}/usr/lib/crti.o
1536		LIBCRYPT?=	${DESTDIR}/usr/lib/libcrypt.a
1537		LIBCRYPTO?=	${DESTDIR}/usr/lib/libcrypto.a
1538		LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a
1539		LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a
1540		LIBCRYPTO_RC5?=	${DESTDIR}/usr/lib/libcrypto_rc5.a
1541		LIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
1542		LIBC_PIC?=	${DESTDIR}/usr/lib/libc_pic.a
1543		LIBDBM?=	${DESTDIR}/usr/lib/libdbm.a
1544		LIBDES?=	${DESTDIR}/usr/lib/libdes.a
1545		LIBDNS?=	${DESTDIR}/usr/lib/libdns.a
1546		LIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
1547		LIBEVENT?=	${DESTDIR}/usr/lib/libevent.a
1548		LIBEVENT_OPENSSL?=	${DESTDIR}/usr/lib/libevent_openssl.a
1549		LIBEVENT_PTHREADS?=	${DESTDIR}/usr/lib/libevent_pthreads.a
1550		LIBEXPAT?=	${DESTDIR}/usr/lib/libexpat.a
1551		LIBFETCH?=	${DESTDIR}/usr/lib/libfetch.a
1552		LIBFORM?=	${DESTDIR}/usr/lib/libform.a
1553		LIBFL?=		${DESTDIR}/usr/lib/libfl.a
1554		LIBG2C?=	${DESTDIR}/usr/lib/libg2c.a
1555		LIBGCC?=	${DESTDIR}/usr/lib/libgcc.a
1556		LIBGNUMALLOC?=	${DESTDIR}/usr/lib/libgnumalloc.a
1557		LIBGSSAPI?=	${DESTDIR}/usr/lib/libgssapi.a
1558		LIBHDB?=	${DESTDIR}/usr/lib/libhdb.a
1559		LIBHEIMBASE?=	${DESTDIR}/usr/lib/libheimbase.a
1560		LIBHEIMNTLM?=	${DESTDIR}/usr/lib/libheimntlm.a
1561		LIBHX500?=	${DESTDIR}/usr/lib/libhx500.a
1562		LIBINTL?=	${DESTDIR}/usr/lib/libintl.a
1563		LIBIPSEC?=	${DESTDIR}/usr/lib/libipsec.a
1564		LIBISC?=	${DESTDIR}/usr/lib/libisc.a
1565		LIBISCCC?=	${DESTDIR}/usr/lib/libisccc.a
1566		LIBISCFG?=	${DESTDIR}/usr/lib/libiscfg.a
1567		LIBKADM5CLNT?=	${DESTDIR}/usr/lib/libkadm5clnt.a
1568		LIBKADM5SRV?=	${DESTDIR}/usr/lib/libkadm5srv.a
1569		LIBKAFS?=	${DESTDIR}/usr/lib/libkafs.a
1570		LIBKRB5?=	${DESTDIR}/usr/lib/libkrb5.a
1571		LIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
1572		LIBL?=		${DESTDIR}/usr/lib/libl.a
1573		LIBLBER?=	${DESTDIR}/usr/lib/liblber.a
1574		LIBLDAP?=	${DESTDIR}/usr/lib/libldap.a
1575		LIBLDAP_R?=	${DESTDIR}/usr/lib/libldap_r.a
1576		LIBLUA?=	${DESTDIR}/usr/lib/liblua.a
1577		LIBLUTOK?=	${DESTDIR}/usr/lib/liblutok.a
1578		LIBLWRES?=	${DESTDIR}/usr/lib/liblwres.a
1579		LIBM?=		${DESTDIR}/usr/lib/libm.a
1580		LIBMAGIC?=	${DESTDIR}/usr/lib/libmagic.a
1581		LIBMENU?=	${DESTDIR}/usr/lib/libmenu.a
1582		LIBOBJC?=	${DESTDIR}/usr/lib/libobjc.a
1583		LIBOSSAUDIO?=	${DESTDIR}/usr/lib/libossaudio.a
1584		LIBPAM?=	${DESTDIR}/usr/lib/libpam.a
1585		LIBPCAP?=	${DESTDIR}/usr/lib/libpcap.a
1586		LIBPCI?=	${DESTDIR}/usr/lib/libpci.a
1587		LIBPMC?=	${DESTDIR}/usr/lib/libpmc.a
1588		LIBPOSIX?=	${DESTDIR}/usr/lib/libposix.a
1589		LIBPTHREAD?=	${DESTDIR}/usr/lib/libpthread.a
1590		LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a
1591		LIBPUFFS?=	${DESTDIR}/usr/lib/libpuffs.a
1592		LIBQUOTA?=	${DESTDIR}/usr/lib/libquota.a
1593		LIBRADIUS?=	${DESTDIR}/usr/lib/libradius.a
1594		LIBRESOLV?=	${DESTDIR}/usr/lib/libresolv.a
1595		LIBRMT?=	${DESTDIR}/usr/lib/librmt.a
1596		LIBROKEN?=	${DESTDIR}/usr/lib/libroken.a
1597		LIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
1598		LIBRT?=		${DESTDIR}/usr/lib/librt.a
1599		LIBRUMP?=	${DESTDIR}/usr/lib/librump.a
1600		LIBRUMPFS_CD9660FS?=${DESTDIR}/usr/lib/librumpfs_cd9660fs.a
1601		LIBRUMPFS_EFS?=	${DESTDIR}/usr/lib/librumpfs_efs.a
1602		LIBRUMPFS_EXT2FS?=${DESTDIR}/usr/lib/librumpfs_ext2fs.a
1603		LIBRUMPFS_FFS?=	${DESTDIR}/usr/lib/librumpfs_ffs.a
1604		LIBRUMPFS_HFS?=	${DESTDIR}/usr/lib/librumpfs_hfs.a
1605		LIBRUMPFS_LFS?=	${DESTDIR}/usr/lib/librumpfs_lfs.a
1606		LIBRUMPFS_MSDOSFS?=${DESTDIR}/usr/lib/librumpfs_msdosfs.a
1607		LIBRUMPFS_NFS?=	${DESTDIR}/usr/lib/librumpfs_nfs.a
1608		LIBRUMPFS_NTFS?=${DESTDIR}/usr/lib/librumpfs_ntfs.a
1609		LIBRUMPFS_SYSPUFFS?=${DESTDIR}/usr/lib/librumpfs_syspuffs.a
1610		LIBRUMPFS_TMPFS?=${DESTDIR}/usr/lib/librumpfs_tmpfs.a
1611		LIBRUMPFS_UDF?=	${DESTDIR}/usr/lib/librumpfs_udf.a
1612		LIBRUMPFS_UFS?=	${DESTDIR}/usr/lib/librumpfs_ufs.a
1613		LIBRUMPUSER?=	${DESTDIR}/usr/lib/librumpuser.a
1614		LIBSASLC?=	${DESTDIR}/usr/lib/libsaslc.a
1615		LIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
1616		LIBSL?=		${DESTDIR}/usr/lib/libsl.a
1617		LIBSQLITE3?=	${DESTDIR}/usr/lib/libsqlite3.a
1618		LIBSS?=		${DESTDIR}/usr/lib/libss.a
1619		LIBSSH?=	${DESTDIR}/usr/lib/libssh.a
1620		LIBSSL?=	${DESTDIR}/usr/lib/libssl.a
1621		LIBSSP?=	${DESTDIR}/usr/lib/libssp.a
1622		LIBSTDCXX?=	${DESTDIR}/usr/lib/libstdc++.a
1623		LIBSUPCXX?=	${DESTDIR}/usr/lib/libsupc++.a
1624		LIBTERMINFO?=	${DESTDIR}/usr/lib/libterminfo.a
1625		LIBTRE?=	${DESTDIR}/usr/lib/libtre.a
1626		LIBUSBHID?=	${DESTDIR}/usr/lib/libusbhid.a
1627		LIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
1628		LIBWIND?=	${DESTDIR}/usr/lib/libwind.a
1629		LIBWRAP?=	${DESTDIR}/usr/lib/libwrap.a
1630		LIBY?=		${DESTDIR}/usr/lib/liby.a
1631		LIBZ?=		${DESTDIR}/usr/lib/libz.a
1632
1633		The following X-Windows libraries are predefined for DPADD:
1634
1635		LIBFS?=		${DESTDIR}/usr/X11R7/lib/libFS.a
1636		LIBGL?=		${DESTDIR}/usr/X11R7/lib/libGL.a
1637		LIBGLU?=	${DESTDIR}/usr/X11R7/lib/libGLU.a
1638		LIBICE?=	${DESTDIR}/usr/X11R7/lib/libICE.a
1639		LIBSM?=		${DESTDIR}/usr/X11R7/lib/libSM.a
1640		LIBX11?=	${DESTDIR}/usr/X11R7/lib/libX11.a
1641		LIBX11_XCB?=	${DESTDIR}/usr/X11R7/lib/libX11-xcb.a
1642		LIBXTRAP?=	${DESTDIR}/usr/X11R7/lib/libXTrap.a
1643		LIBXAU?=	${DESTDIR}/usr/X11R7/lib/libXau.a
1644		LIBXAW?=	${DESTDIR}/usr/X11R7/lib/libXaw.a
1645		LIBXCB?=	${DESTDIR}/usr/X11R7/lib/libxcb.a
1646		LIBXDMCP?=	${DESTDIR}/usr/X11R7/lib/libXdmcp.a
1647		LIBXEXT?=	${DESTDIR}/usr/X11R7/lib/libXext.a
1648		LIBXFONT?=	${DESTDIR}/usr/X11R7/lib/libXfont.a
1649		LIBXFT?=	${DESTDIR}/usr/X11R7/lib/libXft.a
1650		LIBXI?=		${DESTDIR}/usr/X11R7/lib/libXi.a
1651		LIBXINERAMA?=	${DESTDIR}/usr/X11R7/lib/libXinerama.a
1652		LIBXMU?=	${DESTDIR}/usr/X11R7/lib/libXmu.a
1653		LIBXMUU?=	${DESTDIR}/usr/X11R7/lib/libXmuu.a
1654		LIBXPM?=	${DESTDIR}/usr/X11R7/lib/libXpm.a
1655		LIBXRANDR?=	${DESTDIR}/usr/X11R7/lib/libXrandr.a
1656		LIBXRENDER?=	${DESTDIR}/usr/X11R7/lib/libXrender.a
1657		LIBXSS?=	${DESTDIR}/usr/X11R7/lib/libXss.a
1658		LIBXT?=		${DESTDIR}/usr/X11R7/lib/libXt.a
1659		LIBXTST?=	${DESTDIR}/usr/X11R7/lib/libXtst.a
1660		LIBXV?=		${DESTDIR}/usr/X11R7/lib/libXv.a
1661		LIBXXF86DGA?=	${DESTDIR}/usr/X11R7/lib/libXxf86dga.a
1662		LIBXXF86MISC?=	${DESTDIR}/usr/X11R7/lib/libXxf86misc.a
1663		LIBXXF86VM?=	${DESTDIR}/usr/X11R7/lib/libXxf86vm.a
1664		LIBDPS?=	${DESTDIR}/usr/X11R7/lib/libdps.a
1665		LIBFNTSTUBS?=	${DESTDIR}/usr/X11R7/lib/libfntstubs.a
1666		LIBFONTCACHE?=	${DESTDIR}/usr/X11R7/lib/libfontcache.a
1667		LIBFONTCONFIG?=	${DESTDIR}/usr/X11R7/lib/libfontconfig.a
1668		LIBFONTENC?=	${DESTDIR}/usr/X11R7/lib/libfontenc.a
1669		LIBFREETYPE?=	${DESTDIR}/usr/X11R7/lib/libfreetype.a
1670		LIBLBXUTIL?=	${DESTDIR}/usr/X11R7/lib/liblbxutil.a
1671		LIBXKBFILE?=	${DESTDIR}/usr/X11R7/lib/libxkbfile.a
1672
1673SHAREDSTRINGS	If defined, a new .c.o rule is used that results in shared
1674		strings, using xstr(1). Note that this will not work with
1675		parallel makes.
1676
1677STRIPFLAG	The flag passed to the install program to cause the binary
1678		to be stripped.
1679
1680SUBDIR		A list of subdirectories that should be built as well.
1681		Each of the targets will execute the same target in the
1682		subdirectories.
1683
1684SCRIPTS		A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
1685		These are installed exactly like programs.
1686
1687SCRIPTSDIR	The location to install the scripts.  Each script can be
1688		installed to a separate path by setting SCRIPTSDIR_<script>.
1689
1690SCRIPTSNAME	The name that the above program will be installed as, if
1691		different from ${SCRIPTS}. These can be further specialized
1692		by setting SCRIPTSNAME_<script>.
1693
1694FILES		See description of <bsd.files.mk>.
1695
1696SHLINKDIR	Target directory for shared linker.  See description of
1697		<bsd.own.mk> for additional information about this variable.
1698
1699The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
1700if it exists, as well as the include file <bsd.man.mk>.
1701
1702Some simple examples:
1703
1704To build foo from foo.c with a manual page foo.1, use:
1705
1706	PROG=	foo
1707
1708	.include <bsd.prog.mk>
1709
1710To build foo from foo.c with a manual page foo.2, add the line:
1711
1712	MAN=	foo.2
1713
1714If foo does not have a manual page at all, add the line:
1715
1716	MKMAN=	no
1717
1718If foo has multiple source files, add the line:
1719
1720	SRCS=	a.c b.c c.c d.c
1721
1722
1723=-=-=-=-=   bsd.rpc.mk   =-=-=-=-=
1724
1725The include file <bsd.rpc.mk> contains a makefile fragment used to
1726construct source files built by rpcgen.
1727
1728The following macros may be defined in makefiles which include
1729<bsd.rpc.mk> in order to control which files get built and how they
1730are to be built:
1731
1732RPC_INCS:	construct .h file from .x file
1733RPC_XDRFILES:	construct _xdr.c from .x file
1734		(for marshalling/unmarshalling data types)
1735RPC_SVCFILES:	construct _svc.c from .x file
1736		(server-side stubs)
1737RPC_SVCFLAGS:	Additional flags passed to builds of RPC_SVCFILES.
1738
1739RPC_XDIR:	Directory containing .x/.h files
1740
1741
1742=-=-=-=-=   bsd.shlib.mk   =-=-=-=-=
1743
1744The include file <bsd.shlib.mk> computes parameters for shared library
1745installation and use.  It defines no targets.  <bsd.own.mk> MUST be
1746included before <bsd.shlib.mk>.
1747
1748<bsd.own.mk> sets the following variables, if they are not already defined
1749(defaults are in brackets):
1750
1751SHLIBINSTALLDIR	If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
1752		instead of ${LIBDIR} as the base path for shared library
1753		installation.  [/lib]
1754
1755SHLIBDIR	The path to USE_SHLIBDIR shared libraries to use when building
1756		a program.  [/lib for programs in /bin and /sbin, /usr/lib
1757		for all others.]
1758
1759_LIBSODIR	Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no",
1760		otherwise set to ${LIBDIR}
1761
1762SHLINKINSTALLDIR Base path for shared linker.  [/libexec]
1763
1764SHLINKDIR	Path to use for shared linker when building a program.
1765		[/libexec for programs in /bin and /sbin, /usr/libexec for
1766		all others.]
1767
1768
1769=-=-=-=-=   bsd.subdir.mk   =-=-=-=-=
1770
1771The include file <bsd.subdir.mk> contains the default targets for building
1772subdirectories.  It has the same eight targets as <bsd.prog.mk>: all,
1773clean, cleandir, depend, includes, install, lint, and tags.  It uses the
1774following variables:
1775
1776NOSUBDIR	If this variable is defined, then the SUBDIR variable
1777		will be ignored and subdirectories will not be processed.
1778
1779SUBDIR		For all of the directories listed in ${SUBDIR}, the
1780		specified directory will be visited and the target made.
1781
1782		As a special case, the use of a token .WAIT as an
1783		entry in SUBDIR acts as a synchronization barrier
1784		when multiple make jobs are run; subdirs before the
1785		.WAIT must complete before any subdirs after .WAIT are
1786		started.  See make(1) for some caveats on use of .WAIT
1787		and other special sources.
1788
1789
1790=-=-=-=-=   bsd.x11.mk   =-=-=-=-=
1791
1792The include file <bsd.x11.mk> contains parameters and targets for
1793cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}.
1794It should be included after the general Makefile contents but before
1795the include files such as <bsd.prog.mk> and <bsd.lib.mk>.
1796
1797It provides the following targets:
1798	.man.1 .man.3 .man.4 .man.5 .man.7:
1799		If ${MAN} or ${PROG} is set and ${MKMAN} != "no",
1800		these rules convert from X11's manual page source
1801		into an mdoc.old source file.
1802
1803It sets the following variables:
1804
1805BINDIR			Set to ${X11BINDIR}.
1806			To override, define after including <bsd.x11.mk>
1807
1808LIBDIR			Set to ${X11USRLIBDIR}.
1809			To override, define after including <bsd.x11.mk>
1810
1811MANDIR			Set to ${X11MANDIR}.
1812			To override, define after including <bsd.x11.mk>
1813
1814CPPFLAGS		Appended with definitions to include from
1815			${DESTDIR}${X11INCDIR}
1816
1817LDFLAGS			Appended with definitions to link from
1818			${DESTDIR}${X11USRLIBDIR}
1819
1820X11FLAGS.CONNECTION	Equivalent to X11's CONNECTION_FLAGS.
1821
1822X11FLAGS.EXTENSION	Equivalent to X11's EXT_DEFINES.
1823
1824X11FLAGS.LOADABLE	Equivalent to X11's LOADABLE.
1825
1826X11FLAGS.OS_DEFINES	Equivalent to X11's OS_DEFINES.
1827
1828X11FLAGS.SERVER		Equivalent to X11's ServerDefines.
1829
1830X11FLAGS.THREADLIB	Equivalent to X11's THREADS_DEFINES for libraries.
1831
1832X11FLAGS.THREADS	Equivalent to X11's THREADS_DEFINES.
1833
1834X11FLAGS.VERSION	cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION.
1835
1836X11FLAGS.DIX		Equivalent to X11's DIX_DEFINES.
1837
1838X11TOOL_UNXCOMM		Commandline to convert `XCOMM' comments to `#'
1839
1840It uses the following variables:
1841
1842APPDEFS			List of app-default files to install.
1843
1844CPPSCRIPTS		List of files/scripts to run through cpp(1)
1845			and then ${X11TOOL_UNXCOMM}.  The source files
1846			have a `.cpp' suffix, the generated files do not.
1847
1848CPPSCRIPTFLAGS		Additional flags to cpp(1) when building CPPSCRIPTS.
1849
1850CPPSCRIPTFLAGS_<fn>	Additional flags to cpp(1) when building CPPSCRIPT <fn>.
1851
1852
1853=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1854
1855The following files are described here for completion, but they are not
1856supposed to be included directly from other Makefiles; they are used
1857internally by other system files.
1858
1859=-=-=-=-=   bsd.sys.mk   =-=-=-=-=
1860
1861The include file <bsd.sys.mk> is used by other system mk files and
1862it is not intended to be included standalone. It contains rules and
1863system build variables. It requires bsd.own.mk to be included first.
1864It contains overrides that are used when building the NetBSD source tree.
1865
1866The following variables control how various files are compiled/built.
1867(Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"):
1868
1869AR		Create, modify, and extract from archives.  [ar]
1870
1871ARFLAGS		Options to ${AR}.  [rl]
1872
1873AS		Assembler.  [as]
1874
1875AFLAGS		Options to ${CC} when compiling or linking .s or .S
1876		assembly source files.  []
1877
1878BUILDSEED	GCC uses random numbers when compiling C++ code.
1879		If this option is present, seed the random number
1880		generator based on the value, source file names and
1881		the output file name to make builds more deterministic.
1882		Additional information is available in the GCC
1883		documentation of -frandom-seed.
1884
1885CC		C compiler.  [cc]
1886
1887CFLAGS		Options to ${CC}.  [Usually -O or -O2]
1888
1889CPP		C Pre-Processor.  [cpp]
1890
1891CPPFLAGS	Options to ${CPP}.  []
1892
1893CPUFLAGS	Optimization flags for ${CC}.  []
1894
1895CXX		C++ compiler.  [c++]
1896
1897CXXFLAGS	Options to ${CXX}.  [${CFLAGS}]
1898
1899ELF2ECOFF	Convert ELF-format executable to ECOFF.  [elf2ecoff]
1900
1901FC		Fortran compiler.  [f77]
1902
1903FFLAGS		Options to {$FC}.  [-O]
1904
1905HOST_SH		Shell.	This must be an absolute path, because it may be
1906		substituted into "#!" lines in scripts.	 [/bin/sh]
1907
1908INSTALL		install(1) command.  [install]
1909
1910LEX		Lexical analyzer.  [lex]
1911
1912LFLAGS		Options to ${LEX}.  []
1913
1914LPREFIX		Symbol prefix for ${LEX} (see -P option in lex(1)) [yy]
1915
1916LD		Linker.  [ld]
1917
1918LDFLAGS		Options to ${CC} during the link process.  []
1919
1920LINT		C program verifier.  [lint]
1921
1922LINTFLAGS	Options to ${LINT}.  [-chapbxzgFS]
1923
1924LORDER		List dependencies for object files.  [lorder]
1925
1926MAKE		make(1).  [make]
1927
1928MKDEP		Construct Makefile dependency list.  [mkdep]
1929
1930MKDEPCXX	Construct Makefile dependency list for C++ files.  [mkdep]
1931
1932NM		List symbols from object files.  [nm]
1933
1934PC		Pascal compiler.  [pc]  (Not present)
1935
1936PFLAGS		Options to ${PC}.  []
1937
1938OBJC		Objective C compiler.  [${CC}]
1939
1940OBJCFLAGS	Options to ${OBJC}.  [${CFLAGS}]
1941
1942OBJCOPY		Copy and translate object files.  [objcopy]
1943
1944OBJCOPYLIBFLAGS	Flags to pass to objcopy when library objects are
1945		being built. [${.TARGET} =~ "*.po" ? -X : -x]
1946
1947OBJDUMP		Display information from object files.  [objdump]
1948
1949RANLIB		Generate index to archive.  [ranlib]
1950
1951SIZE		List section sizes and total size.  [size]
1952
1953STRIP		Discard symbols from object files.  [strip]
1954
1955TSORT		Topological sort of a directed graph.  [tsort -q]
1956
1957YACC		LALR(1) parser generator.  [yacc]
1958
1959YFLAGS		Options to ${YACC}.  []
1960
1961YHEADER		If defined, add "-d" to YFLAGS, and add dependencies
1962		from <file>.y to <file>.h and <file>.c, and add
1963		<foo>.h to CLEANFILES.
1964
1965YPREFIX		If defined, add "-p ${YPREFIX}" to YFLAGS.
1966
1967
1968Other variables of note (incomplete list):
1969
1970NOGCCERROR	If defined, prevents passing certain ${CFLAGS} to GCC
1971		that cause warnings to be fatal, such as:
1972			-Werror -Wa,--fatal-warnings
1973		(The latter being for as(1).)
1974
1975NOCLANGERROR	If defined and clang is used as C compiler, -Werror is not
1976		passed to it.
1977
1978WARNS		Crank up compiler warning options; the distinct levels are:
1979			WARNS=1
1980			WARNS=2
1981			WARNS=3
1982			WARNS=4
1983			WARNS=5
1984			WARNS=6
1985
1986=-=-=-=-=   bsd.host.mk  =-=-=-=-=
1987
1988This file is automatically included from bsd.own.mk. It contains settings
1989for all the HOST_* variables that are used in host programs and libraries.
1990
1991HOST_AR			The host archive processing command
1992
1993HOST_CC			The host c compiler
1994
1995HOST_CFLAGS		The host c compiler flags
1996
1997HOST_COMPILE.c		The host c compiler line with flags
1998
1999HOST_COMPILE.cc		The host c++ compiler line with flags
2000
2001HOST_CPP		The host c pre-processor
2002
2003HOST_CPPFLAGS		The cost c pre-processor flags
2004
2005HOST_CXX		The host c++ compiler
2006
2007HOST_CXXFLAGS		The host c++ compiler flags
2008
2009HOST_INSTALL_DIR	The host command to install a directory
2010
2011HOST_INSTALL_FILE	The host command to install a file
2012
2013HOST_INSTALL_SYMLINK	The host command to install a symlink
2014
2015HOST_LD			The host linker command
2016
2017HOST_LDFLAGS		The host linker flags
2018
2019HOST_LINK.c		The host c linker line with flags
2020
2021HOST_LINK.cc		The host c++ linker line with flags
2022
2023HOST_LN			The host command to link two files
2024
2025HOST_MKDEP		The host command to create dependencies for c programs
2026
2027HOST_MKDEPCXX		The host command to create dependencies for c++ programs
2028
2029HOST_OSTYPE		The host OSNAME-RELEASE-ARCH tupple
2030
2031HOST_RANLIB		The host command to create random access archives
2032
2033HOST_SH			The host Bourne shell interpreter name (absolute path)
2034
2035=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2036