bsd.README revision 1.270
1#	$NetBSD: bsd.README,v 1.270 2010/06/08 22:22:25 riz 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 libatf-c, libatf-c++ libraries associated
117		with the Automated Testing Framework (ATF).
118		Default: yes
119
120MKBFD		Obsolete, use MKBINUTILS
121
122MKBINUTILS	If "no", don't build binutils (gas, ld, etc and libbfd,
123		libopcodes)
124		Default: yes
125
126MKBSDTAR	If "yes", use the libarchive based cpio and tar instead of
127		the pax frontends.
128		Default: no
129
130MKCATPAGES	If "no", don't build or install the catman pages.
131		Default: yes
132
133MKCOMPAT  	If "no", don't build or install the src/compat.
134		Default: yes on amd64/sparc64, no elsewhere.
135
136MKCOMPLEX	If "no", don't build libm support for <complex.h>
137		Default: yes
138
139MKCRYPTO	If "no", no cryptography support will be built into the system,
140		and also acts as "MKKERBEROS=no".
141		Default: yes
142
143MKCRYPTO_IDEA	If not "no", IDEA support will be built into libcrypto_idea.a.
144		Default: no
145
146MKCRYPTO_MDC2	If not "no", MDC2 support will be built into libcrypto_mdc2.a
147		Default: no
148
149MKCRYPTO_RC5	If not "no", RC5 support will be built into libcrypto_rc5.a.
150		Default: no
151
152MKCVS		If "no", don't build or install cvs(1).
153		Default: yes
154
155MKDEBUG		If "no", don't build and install separate debugging symbols
156		into /usr/libdata/debug.
157		Default: no
158
159MKDEBUGLIB	Build *_g.a debugging libraries, which are compiled
160		with -DDEBUG.
161		Default: no
162
163MKDOC		If "no", don't build or install the documentation.
164		Default: yes
165
166MKDYNAMICROOT	If "no", build programs in /bin and /sbin statically,
167		don't install certain libraries in /lib, and don't
168		install the shared linker into /libexec.
169		Default: yes
170
171MKEXTSRC        If not "no", 'make build' also descends into either src/extsrc
172		to cross-build programs and libraries externally added by
173		users, and automatically enables creation of those sets.
174		Default: no
175
176MKGCC		If "no", don't build gcc(1) or any of the GCC-related
177		libraries (libgcc, libobjc, libstdc++).
178		Default: yes
179
180MKGCCCMDS	If "no", don't build gcc(1), but do build the GCC-related
181		libraries (libgcc, libobjc, libstdc++).
182		Default: yes
183
184MKGDB		If "no", don't build gdb(1).
185		Default: yes
186
187MKHESIOD	If "no", disables building of Hesiod infrastructure
188		(libraries and support programs).
189		Default: yes
190
191MKHOSTOBJ	If not "no", for programs intended to be run on the compile
192		host, the name, release, and architecture of the host
193		operating system will be suffixed to the name of the object
194		directory created by "make obj".
195		Default: no
196
197MKHTML		If "no", don't build or install the HTML man pages.
198		Default: yes
199
200MKIEEEFP	If "no", don't add code for IEEE754/IEC60559 conformance.
201		Has no effect on most platforms.
202		Default: yes
203
204MKSTRIPIDENT	Strip the RCS IDs from program binaries and shared libraries.
205		Default: no
206
207MKINET6		If "no", disables building of INET6 (IPv6) infrastructure
208		(libraries and support programs).
209		Default: yes
210
211MKINFO		If "no", don't build or install Info documentation from
212		Texinfo source files.
213		Default: yes
214
215MKIPFILTER	If "no", don't build or install the IP Filter programs and LKM.
216		Default: yes
217
218MKISCSI		If "no", don't build or install iSCSI library or applications
219		(depends on libpthread.)
220		Default: yes
221
222MKKERBEROS	If "no", disables building of Kerberos v5
223		infrastructure (libraries and support programs).
224		Default: yes
225
226MKLDAP		If "no", disables building of LDAP infrastructure
227		(libraries and support programs).
228		Default: yes
229
230MKLINKLIB	If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
231		Also:
232			- don't install the .a libraries
233			- don't install _pic.a libraries on PIC systems
234			- don't build .a libraries on PIC systems
235			- don't install the .so symlink on ELF systems
236		I.e, only install the shared library (and the .so.major
237		symlink on ELF).
238		Default: yes
239
240MKLINT		If "no", don't build or install the lint libraries.
241		Default: yes
242
243MKLVM		If "no", don't build or install the logical volume manager
244		and device mapper tools and libraries
245		Default: yes
246
247MKMAN		If "no", don't build or install the man or catman pages,
248		and also acts as "MKCATPAGES=no MKHTML=no".
249		Default: yes
250
251MKMANDOC	If "yes", mandoc is built as tool and used to compile
252		catman or html pages.  A directory can be exempted by
253		defining NOMANDOC.  Individual man pages are exempted
254		if USETBL is set or NOMANDOC.${target} is set to "yes".
255		Default: no
256
257MKMANZ		If not "no", compress manual pages at installation time.
258		Default: no
259
260MKMDNS		If "no", disables building of mDNS infrastructure
261		(libraries and support programs).
262		Default: yes
263
264MKNLS		If "no", don't build or install the NLS files and locale
265		definition files.
266		Default: yes
267
268MKOBJ		If "no", don't enable the rule which creates objdirs,
269		and also acts as "MKOBJDIRS=no".
270		Default: yes
271
272MKOBJDIRS	If "no", don't create objdirs during a "make build".
273		Default: no
274
275MKPAM		If "no", disables building of PAM authentication
276		infrastructure (libraries and support programs).
277		Default: yes
278
279MKPCC		If "no", don't build pcc(1) or any of the PCC-related
280		libraries (libpcc, libpccsoftfloat).
281		Default: no
282
283MKPCCCMDS	If "no", don't build pcc(1), but do build the PCC-related
284		libraries (libpcc, libpccsoftfloat).
285		Default: no
286
287MKPF		If "no", don't build or install the pf programs and LKM.
288		Default: yes
289
290MKPIC		If "no", don't build or install shared libraries, and
291		also acts as "MKPICLIB=no"
292		Default: yes (for MACHINE_ARCHs that support it) 
293
294MKPICINSTALL	If "no", don't install the *_pic.a libraries.
295		Default: yes
296
297MKPICLIB	If "no", don't build *_pic.a libraries, and build the
298		shared object libraries from the .a libraries.
299		A symlink is installed in ${DESTDIR}/usr/lib for the
300		_pic.a library pointing to the .a library.
301		Default: yes
302
303MKPIE		If "no", create regular executables. Otherwise create
304		PIE (Position Independent Executables).
305		Default: no
306
307MKPOSTFIX	If "no", don't build or install postfix(1).
308		Default: yes
309
310MKPROFILE	If "no", don't build or install the profiling (*_p.a) libraries.
311		Default: yes
312
313MKSHARE		If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
314		MKMAN=no MKNLS=no".
315		I.e, don't build catman pages, documentation, Info
316		documentation, man pages, NLS files, ...
317		Default: yes
318
319MKSKEY		If "no", disables building of S/key authentication
320		infrastructure (libraries and support programs).
321		Default: yes
322
323MKSOFTFLOAT	If not "no", build with options to enable the compiler to
324		generate output containing library calls for floating
325		point and possibly soft-float library support.
326		Default: no
327
328MKSTATICLIB	If "no", don't build or install the normal static (*.a)
329		libraries.
330		Default: yes
331
332MKUNPRIVED	If not "no", don't set the owner/group/mode when installing
333		files or directories, and keep a metadata log of what
334		the owner/group/mode should be.  This allows a
335		non-root "make install".
336		Default: no
337
338MKUPDATE 	If not "no", 'make install' only installs targets that are
339		more recently modified in the source directories that their
340		installed counterparts.
341		Default: no
342
343MKX11		If not "no", depending on the value of ${X11FLAVOUR},
344		'make build' also descends into either src/x11 (XFree86) or
345		src/external/mit/xorg (modular Xorg) to cross-build X11 and
346		automatically enables creation of X sets.
347		Default: no
348
349MKX11FONTS	If not "no", if ${X11FLAVOUR} is "Xorg", do not build or
350		install the X fonts.  The xfont set is still created but
351		will be empty.
352		Default: yes
353
354MKYP		If "no", disables building of YP (NIS)
355		infrastructure (libraries and support programs).
356		Default: yes
357
358MKZFS		If "no", do not build and install utilities and libraries 
359		used to manage ZFS file system. Do not build zfs and solaris 
360		compatibility kernel modules.
361		Default: yes on i386/amd64, no elsewhere.
362
363USE_HESIOD	If "no", disables building Hesiod support into
364		various system utilities/libraries that support it.
365		If ${MKHESIOD} is "no", USE_HESIOD will also be
366		forced to "no".
367
368USE_INET6	If "no", disables building INET6 (IPv6) support into
369		various system utilities/libraries that support it.
370		If ${MKINET6} is "no", USE_INET6 will also be
371		forced to "no".
372
373USE_JEMALLOC	If "no", disables building the "jemalloc" allocator
374		designed for improved performance with threaded
375		applications.  The "phkmalloc" allocator as used up
376		before NetBSD-5.0 will be substituted.
377
378USE_KERBEROS	If "no", disables building Kerberos v5
379		support into various system utilities/libraries that
380		support it.  If ${MKKERBEROS} is "no", USE_KERBEROS
381		will also be forced to "no".
382
383USE_LDAP	If "no", disables building LDAP support into various
384		system utilities/libraries that support it.
385		If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
386
387USE_PAM		If "no", disables building PAM authentication support
388		into various system utilities/libraries that support it.
389		If ${MKPAM} is "no", USE_PAM will also be forced to "no".
390
391USE_SKEY	If "no", disables building S/key authentication
392		support into various system utilities/libraries that
393		support it.  If ${MKSKEY} is "no", USE_SKEY will
394		also be forced to "no".
395		Default: no
396
397USE_SSP		If "no", disables GCC stack protection code, which
398		detects stack overflows and aborts the program. The
399		stack protection code imposes a performance penalty
400		of about 5%.
401		Default: "no", unless "USE_FORT" is set to "yes"
402
403USE_FORT 	If "yes" turns on substitute wrappers for commonly used
404		functions that do not do bounds checking regularly, but
405		they could in some cases by using the gcc
406		__builtin_object_size() function to determine the buffer 
407		size where it is known and detect buffer overflows.
408		These substitute functions are in /usr/include/ssp.
409		Default: depends on the part of the source tree
410
411USE_YP		If "no", disables building YP (NIS) support into
412		various system utilities/libraries that support it.
413		If ${MKYP} is "no", USE_YP will also be forced to "no".
414
415X11FLAVOUR	Set to "Xorg" or "XFree86", depending on whether to build
416		XFree86 or modular Xorg.  Only matters if MKX11!=no.
417		Default: "Xorg" on amd64, i386, macppc, shark and sparc64,
418		"XFree86" on everything else.
419
420COPTS.lib<lib>
421OBJCOPTS.lib<lib>
422LDADD.lib<lib>
423CPPFLAGS.lib<lib>
424CXXFLAGS.lib<lib>
425COPTS.<prog>
426OBJCCOPTS.<prog>
427LDADD.<prog>
428CPPFLAGS.<prog>
429CXXFLAGS.<prog>	These provide a way to specify additions to the associated
430		variables in a way that applies only to a particular library
431		or program.  <lib> corresponds to the LIB variable set in
432		the library's makefile.  <prog> corresponds to either PROG
433		or PROG_CXX (if set).  For example, if COPTS.libcrypto is
434		set to "-g", "-g" will be added to COPTS only when compiling
435		the crypto library.
436
437=-=-=-=-=   sys.mk   =-=-=-=-=
438
439The include file <sys.mk> has the default rules for all makes, in the BSD
440environment or otherwise.  You probably don't want to touch this file.
441
442=-=-=-=-=   bsd.own.mk   =-=-=-=-=
443
444The include file <bsd.own.mk> contains source tree configuration parameters,
445such as the owners, groups, etc. for both manual pages and binaries, and
446a few global "feature configuration" parameters.
447
448It has no targets.
449
450To get system-specific configuration parameters, <bsd.own.mk> will try to
451include the file specified by the "MAKECONF" variable.  If MAKECONF is not
452set, or no such file exists, the system make configuration file, /etc/mk.conf
453is included.  These files may define any of the variables described below.
454
455<bsd.own.mk> sets the following variables, if they are not already defined
456(defaults are in brackets):
457
458NETBSDSRCDIR	Top of the NetBSD source tree.
459		If _SRC_TOP_ != "", that will be used as the default,
460		otherwise BSDSRCDIR will be used as the default.
461		Various makefiles within the NetBSD source tree will
462		use this to reference the top level of the source tree.
463
464_SRC_TOP_	Top of the system source tree, as determined by <bsd.own.mk>
465		based on the presence of tools/ and build.sh.  This variable
466		is "internal" to <bsd.own.mk>, although its value is only
467		determined once and then propagated to all sub-makes.
468
469BSDSRCDIR	The real path to the system sources, so that 'make obj'
470		will work correctly.  [/usr/src]
471
472BSDOBJDIR	The real path to the system 'obj' tree, so that 'make obj'
473		will work correctly.  [/usr/obj]
474
475BINGRP		Binary group.  [wheel]
476
477BINOWN		Binary owner.  [root]
478
479BINMODE		Binary mode.  [555]
480
481NONBINMODE	Mode for non-executable files.  [444]
482
483MANDIR		Base path for manual installation.  [/usr/share/man/cat]
484
485MANGRP		Manual group.  [wheel]
486
487MANOWN		Manual owner.  [root]
488
489MANMODE		Manual mode.  [${NONBINMODE}]
490
491MANINSTALL	Manual installation type.  Space separated list:
492			catinstall, htmlinstall, maninstall
493		[catinstall maninstall htmlinstall]
494
495LDSTATIC	Control program linking; if set blank, link everything
496		dynamically.  If set to "-static", link everything statically.
497		If not set, programs link according to their makefile.
498
499LIBDIR		Base path for library installation.  [/usr/lib]
500
501LINTLIBDIR	Base path for lint(1) library installation.  [/usr/libdata/lint]
502
503LIBGRP		Library group.  [${BINGRP}]
504
505LIBOWN		Library owner.  [${BINOWN}]
506
507LIBMODE		Library mode.  [${NONBINMODE}]
508
509DOCDIR		Base path for system documentation (e.g. PSD, USD, etc.)
510	        installation.  [/usr/share/doc]
511
512HTMLDOCDIR	Base path for html system documentation installation.
513		[/usr/share/doc/html]
514
515DOCGRP		Documentation group.  [wheel]
516
517DOCOWN		Documentation owner.  [root]
518
519DOCMODE		Documentation mode.  [${NONBINMODE}]
520
521NLSDIR		Base path for Native Language Support files installation.
522		[/usr/share/nls]
523
524NLSGRP		Native Language Support files group.  [wheel]
525
526NLSOWN		Native Language Support files owner.  [root]
527
528NLSMODE		Native Language Support files mode.  [${NONBINMODE}]
529
530X11SRCDIR	The path to the xsrc tree.  [${NETBSDSRCDIR}/../xsrc,
531		if that exists; otherwise /usr/xsrc]
532
533X11SRCDIR.xc	The path to the (old) X11 xc src tree.  [${X11SRCDIR}/xfree/xc]
534
535X11SRCDIR.local	The path to the local X11 src tree.  [${X11SRCDIR}/local]
536
537X11SRCDIR.lib<package>
538X11SRCDIR.<package>
539		The path to the xorg src tree for the specificed package>.
540		[${X11SRCDIR}/external/mit/xorg/<package>/dist]
541
542X11ROOTDIR	Root directory of the X11 installation.  [/usr/X11R6 or
543		[/usr/X11R7]
544
545X11BINDIR	X11 bin directory.  [${X11ROOTDIR}/bin]
546
547X11FONTDIR	X11 font directory.  [${X11ROOTDIR}/lib/X11/fonts]
548
549X11INCDIR	X11 include directory.  [${X11ROOTDIR}/include]
550
551X11LIBDIR	X11 lib/x11 (config) directory.  [${X11ROOTDIR}/lib/X11]
552
553X11MANDIR	X11 manual directory.  [${X11ROOTDIR}/man]
554
555X11USRLIBDIR	X11 library directory.  [${X11ROOTDIR}/lib]
556
557STRIPFLAG	The flag passed to the install program to cause the binary
558		to be stripped.  This is to be used when building your
559		own install script so that the entire system can be made
560		stripped/not-stripped using a single knob.  []
561
562COPY		The flag passed to the install program to cause the binary
563		to be copied rather than moved.  This is to be used when
564		building our own install script so that the entire system
565		can either be installed with copies, or with moves using
566		a single knob.  [-c]
567
568MAKEDIRTARGET dir target [params]
569		Runs "cd $${dir} && ${MAKE} [params] $${target}",
570		displaying a "pretty" message whilst doing so.
571
572RELEASEMACHINEDIR
573		Subdirectory used below RELEASEDIR when building
574		a release.  [${MACHINE}]
575
576RELEASEMACHINE	Subdirectory or path component used for the following
577		paths:
578			distrib/${RELEASEMACHINE}
579			distrib/notes/${RELEASEMACHINE}
580			etc/etc.${RELEASEMACHINE}
581		Used when building a release.  [${MACHINE}]
582
583Additionally, the following variables may be set by <bsd.own.mk> or in a
584make configuration file to modify the behavior of the system build
585process (default values are in brackets along with comments, if set by
586<bsd.own.mk>):
587
588USETOOLS	Indicates whether the tools specified by ${TOOLDIR} should
589		be used as part of a build in progress.
590		Supported values:
591
592		yes	Use the tools from TOOLDIR.
593			Must be set to this if cross-compiling.
594
595		no	Do not use the tools from TOOLDIR, but refuse to
596			build native compilation tool components that are
597			version-specific for that tool.
598
599		never	Do not use the tools from TOOLDIR, even when
600			building native tool components.  This is similar to
601			the traditional NetBSD build method, but does not
602			verify that the compilation tools in use are
603			up-to-date enough in order to build the tree
604			successfully.  This may cause build or runtime
605			problems when building the whole NetBSD source tree.
606
607		Default: "yes" if building all or part of a whole NetBSD
608		source tree (detected automatically); "no" otherwise
609		(to preserve traditional semantics of the <bsd.*.mk>
610		make(1) include files).
611
612OBJECT_FMT	Object file format.  [set to "ELF" on architectures that
613		use ELF -- currently all architectures].
614
615TOOLCHAIN_MISSING
616		If not "no", this indicates that the platform being built
617		does not have a working in-tree toolchain.  If the
618		${MACHINE_ARCH} in question falls into this category,
619		TOOLCHAIN_MISSING is conditionally assigned the value "yes". 
620		Otherwise, the variable is unconditionally assigned the
621		value "no".
622		If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are
623		unconditionally assigned the value "no".
624
625EXTERNAL_TOOLCHAIN
626		This variable is not directly set by <bsd.own.mk>, but
627		including <bsd.own.mk> is the canonical way to gain
628		access to this variable.  The variable should be defined
629		either in the user's environment or in the user's mk.conf
630		file.  If defined, this variable indicates the root of
631		an external toolchain which will be used to build the
632		tree.  For example, if a platform is a ${TOOLCHAIN_MISSING}
633		platform, EXTERNAL_TOOLCHAIN can be used to re-enable the
634		cross-compile framework.
635
636		If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally
637		assigned the value "no", since the external version of the
638		compiler may not be able to build the library components of
639		the in-tree compiler.
640
641		NOTE: This variable is not yet used in as many places as
642		it should be.  Expect the exact semantics of this variable
643		to change in the short term as parts of the cross-compile
644		framework continue to be cleaned up.
645
646The following variables are defined to commands to perform the
647appropriate operation, with the default in [brackets].  Note that
648the defaults change if USETOOLS == "yes":
649
650TOOL_AMIGAAOUT2BB	aout to Amiga bootblock converter.  [amiga-aout2bb]
651
652TOOL_AMIGAELF2BB	ELF to Amiga bootblock converter.  [amiga-elf2bb]
653
654TOOL_AMIGATXLT		Amige assembly language format translator.  [amiga-txlt]
655
656TOOL_ASN1_COMPILE	ASN1 compiler.  [asn1_compile]
657
658TOOL_AWK		Pattern-directed scanning/processing language.  [awk]
659
660TOOL_CAP_MKDB		Create capability database.  [cap_mkdb]
661
662TOOL_CAT		Concatenate and print files.  [cat]
663
664TOOL_CKSUM		Display file checksums.  [cksum]
665
666TOOL_COMPILE_ET		Error table compiler.  [compile_et]
667
668TOOL_CONFIG		Build kernel compilation directories.  [config]
669
670TOOL_CRUNCHGEN		Generate crunched binary build environment.  [crunchgen]
671
672TOOL_CTAGS		Create a tags file.  [ctags]
673
674TOOL_DB			Manipulate db(3) databases.  [db]
675
676TOOL_DISKLABEL		Read and write disk pack label.  [disklabel]
677
678TOOL_EQN		Format equations for groff.  [eqn]
679
680TOOL_FDISK		MS-DOS partition maintenance program.  [fdisk]
681
682TOOL_FGEN		IEEE 1275 Open Firmware FCode Tokenizer.  [fgen]
683
684TOOL_GENASSYM		Generate constants for assembly files.  [genassym]
685
686TOOL_GENCAT		Generate NLS message catalogs.  [gencat]
687
688TOOL_GMAKE		GNU make utility.  [gmake]
689
690TOOL_GREP		Print lines matching a pattern.  [grep]
691
692TOOL_GROFF		Front end for groff document formatting system.  [groff]
693
694TOOL_HEXDUMP		Ascii, decimal, hexadecimal, octal dump.  [hexdump]
695
696TOOL_HP300MKBOOT	Make bootable image for hp300.  [hp300-mkboot]
697
698TOOL_HP700MKBOOT	Make bootable image for hp700.  [hp700-mkboot]
699
700TOOL_INDXBIB		Make bibliographic database's inverted index.  [indxbib]
701
702TOOL_INSTALLBOOT	Install disk bootstrap software.  [installboot]
703
704TOOL_INSTALL_INFO	Update info/dir entries.  [install-info]
705
706TOOL_JOIN		Relational database operator.  [join]
707
708TOOL_M4			M4 macro language processor.  [m4]
709
710TOOL_MACPPCFIXCOFF	Fix up xcoff headers for macppc.  [macppc-fixcoff]
711
712TOOL_MAKEFS		Create file system image from directory tree.  [makefs]
713
714TOOL_MAKEINFO		Translate Texinfo documents.  [makeinfo]
715
716TOOL_MAKEWHATIS		Create a whatis.db database.  [makewhatis]
717
718TOOL_MDSETIMAGE		Set kernel RAM disk image.  [mdsetimage]
719
720TOOL_MENUC		Menu compiler.  [menuc]
721
722TOOL_MIPSELF2ECOFF	Convert ELF-format executable to ECOFF for mips.
723			[mips-elf2ecoff]
724
725TOOL_MKCSMAPPER		Make charset mapping table.  [mkcsmapper]
726
727TOOL_MKESDB		Make encoding scheme database.  [mkesdb]
728
729TOOL_MKLOCALE		Make LC_CTYPE locale files.  [mklocale]
730
731TOOL_MKMAGIC		Create database for file(1).  [file]
732
733TOOL_MKTEMP		Make (unique) temporary file name.  [mktemp]
734
735TOOL_MSGC		Simple message list compiler.  [msgc]
736
737TOOL_MTREE		Map a directory hierarchy.  [mtree]
738
739TOOL_PAX		Manipulate file archives and copy directories.  [pax]
740
741TOOL_PIC		Compile pictures for groff.  [pic]
742
743TOOL_POWERPCMKBOOTIMAGE	Make bootable image for powerpc.  [powerpc-mkbootimage]
744
745TOOL_PWD_MKDB		Generate the password databases.  [pwd_mkdb]
746
747TOOL_REFER		Preprocess bibliographic references for groff.  [refer]
748
749TOOL_ROFF_ASCII		Generate ASCII groff output.  [nroff]
750
751TOOL_ROFF_DVI		Generate DVI groff output.  [${TOOL_GROFF} -Tdvi]
752
753TOOL_ROFF_HTML		Generate HTML groff output.
754			[${TOOL_GROFF} -Tlatin1 -mdoc2html]
755
756TOOL_ROFF_PS		Generate PS groff output.  [${TOOL_GROFF} -Tps]
757
758TOOL_ROFF_RAW		Generate "raw" groff output.  [${TOOL_GROFF} -Z]
759
760TOOL_RPCGEN		Remote Procedure Call (RPC) protocol compiler.  [rpcgen]
761
762TOOL_SED		Stream editor.  [sed]
763
764TOOL_SOELIM		Eliminate .so's from groff input.  [soelim]
765
766TOOL_SPARKCRC		Generate a crc suitable for use in a sparkive file.
767			[sparkcrc]
768
769TOOL_STAT		Display file status.  [stat]
770
771TOOL_STRFILE		Create a random access file for storing strings.
772			[strfile]
773
774TOOL_SUNLABEL		Read or modify a SunOS disk label.  [sunlabel]
775
776TOOL_TBL		Format tables for groff.  [tbl]
777
778TOOL_UUDECODE		Uudecode a binary file.  [uudecode]
779
780TOOL_VGRIND		Grind nice listings of programs.  [vgrind -f]
781
782TOOL_ZIC		Time zone compiler.  [zic]
783
784<bsd.own.mk> is generally useful when building your own Makefiles so that
785they use the same default owners etc. as the rest of the tree.
786
787
788=-=-=-=-=   bsd.dep.mk   =-=-=-=-=
789
790The include file <bsd.dep.mk> contains the default targets for building
791.depend files.  It creates .d files from entries in SRCS and DPSRCS
792that are C, C++, or Objective C source files, and builds .depend from the
793.d files.  All other files in SRCS and all of DPSRCS will be used as
794dependencies for the .d files.  In order for this to function correctly,
795it should be .included after all other .mk files and directives that may
796modify SRCS or DPSRCS.  It uses the following variables:
797
798SRCS		List of source files to build the program.
799
800DPSRCS		List of source files which are needed for generating
801		dependencies, but are not needed in ${SRCS}.
802
803
804=-=-=-=-=   bsd.files.mk   =-=-=-=-=
805
806The include file <bsd.files.mk> handles the FILES variables and is included
807from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables:
808
809FILES		The list of files to install.
810
811CONFIGFILES	Similar semantics to FILES, except that the files
812		are installed by the `configinstall' target,
813		not the `install' target.
814		The FILES* variables documented below also apply.
815
816FILESOWN	File owner.  [${BINOWN}]
817
818FILESGRP	File group.  [${BINGRP}]
819
820FILESMODE	File mode.  [${NONBINMODE}]
821
822FILESDIR	The location to install the files.
823
824FILESNAME	Optional name to install each file as.
825
826FILESOWN_<fn>	File owner of the specific file <fn>.
827
828FILESGRP_<fn>	File group of the specific file <fn>.
829
830FILESMODE_<fn>	File mode of the specific file <fn>.
831
832FILESDIR_<fn>	The location to install the specific file <fn>.
833
834FILESNAME_<fn>	Optional name to install <fn> as.
835
836FILESBUILD_<fn>	A value different from "no" will add the file to the list of
837		targets to be built by `realall'.  Users of that variable
838		should provide a target to build the file.
839
840
841BUILDSYMLINKS	List of two word items:
842			lnsrc lntgt
843		For each lnsrc item, create a symlink named lntgt.
844		The lntgt symlinks are removed by the cleandir target.
845
846UUDECODE_FILES	List of files which are stored as <file>.uue in the source
847		tree. Each one will be decoded with ${TOOL_UUDECODE}.
848		The source files have a `.uue' suffix, the generated files do 
849		not.
850
851UUDECODE_FILES_RENAME_<fn>
852		Rename the output from the decode to the provided name.
853		
854		*NOTE: These files are simply decoded, with no install or other
855		       rule applying implicitly except being added to the clean
856		       target.
857
858=-=-=-=-=   bsd.gcc.mk   =-=-=-=-=
859
860The include file <bsd.gcc.mk> computes various parameters related to GCC
861support libraries.  It defines no targets.  <bsd.own.mk> MUST be included
862before <bsd.gcc.mk>.
863
864The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each
865of which need to know where to find certain GCC support libraries.
866
867The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable,
868which is generally set by the user.  If EXTERNAL_TOOLCHAIN it set, then
869the compiler is asked where to find the support libraries, otherwise the
870support libraries are found in ${DESTDIR}/usr/lib.
871
872<bsd.gcc.mk> sets the following variables:
873
874_GCC_CRTBEGIN	The full path name to crtbegin.o.
875
876_GCC_CRTBEGINS	The full path name to crtbeginS.o.
877
878_GCC_CRTEND	The full path name to crtend.o.
879
880_GCC_CRTENDS	The full path name to crtendS.o.
881
882_GCC_LIBGCCDIR	The directory where libgcc.a is located.
883
884
885=-=-=-=-=   bsd.inc.mk   =-=-=-=-=
886
887The include file <bsd.inc.mk> defines the includes target and uses the
888variables:
889
890INCS		The list of include files.
891
892INCSDIR		The location to install the include files.
893
894INCSNAME	Target name of the include file, if only one; same as
895		FILESNAME, but for include files.
896
897INCSYMLINKS	Similar to SYMLINKS in <bsd.links.mk>, except that these
898		are installed in the 'includes' target and not the
899		(much later) 'install' target.
900
901INCSNAME_<file>	The name file <file> should be installed as, if not <file>,
902		same as FILESNAME_<file>, but for include files.
903
904
905=-=-=-=-=   bsd.info.mk   =-=-=-=-=
906
907The include file <bsd.info.mk> is used to generate and install GNU Info
908documentation from respective Texinfo source files.  It defines three
909implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
910following variables:
911
912TEXINFO		List of Texinfo source files.  Info documentation will
913		consist of single files with the extension replaced by
914		.info.
915
916INFOFLAGS	Flags to pass to makeinfo.  []
917
918
919=-=-=-=-=   bsd.kernobj.mk   =-=-=-=-=
920
921The include file <bsd.kernobj.mk> defines variables related to the
922location of kernel sources and object directories.
923
924KERNSRCDIR	Is the location of the top of the kernel src.
925		[${_SRC_TOP_}/sys]
926
927KERNARCHDIR	Is the location of the machine dependent kernel sources.
928		[arch/${MACHINE}]
929
930KERNCONFDIR	Is where the configuration files for kernels are found.
931		[${KERNSRCDIR}/${KERNARCHDIR}/conf]
932
933KERNOBJDIR	Is the kernel build directory.  The kernel GENERIC for
934		instance will be compiled in ${KERNOBJDIR}/GENERIC.
935		The default value is
936		${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile
937		if it exists or the target 'obj' is being made.
938		Otherwise the default is
939		${KERNSRCDIR}/${KERNARCHDIR}/compile.
940
941It is important that Makefiles (such as those under src/distrib) that
942wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR}
943rather than make assumptions about the location of the compiled kernel.
944
945
946=-=-=-=-=   bsd.kinc.mk   =-=-=-=-=
947
948The include file <bsd.kinc.mk> defines the many targets (includes,
949subdirectories, etc.), and is used by kernel makefiles to handle
950include file installation.  It is intended to be included alone, by
951kernel Makefiles.  It uses similar variables to <bsd.inc.mk>.
952Please see <bsd.kinc.mk> for more details, and keep the documentation
953in that file up to date.
954
955
956=-=-=-=-=   bsd.lib.mk   =-=-=-=-=
957
958The include file <bsd.lib.mk> has support for building libraries.  It has
959the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
960includes, install, lint, and tags.  Additionally, it has a checkver target
961which checks for installed shared object libraries whose version is greater
962that the version of the source. It has a limited number of suffixes,
963consistent with the current needs of the BSD tree.  <bsd.lib.mk> includes
964<bsd.shlib.mk> to get shared library parameters.
965
966It sets/uses the following variables:
967
968LIB		The name of the library to build.
969
970LIBDIR		Target directory for libraries.
971
972MKARZERO	Normally, ar(1) sets the timestamps, uid, gid and
973		permissions in files inside its archives to those of
974		the file it was fed. This leads to non-reproduceable
975		builds. If MKARZERO is set to "yes" (default is "no")
976		then the "D" flag is passed to ar, causing the
977		timestamp, uid and gid to be zeroed and the file
978		permissions to be set to 644. This allows .a files
979		from different builds to be bit identical.
980
981SHLIBINSTALLDIR	Target directory for shared libraries if ${USE_SHLIBDIR}
982		is not "no".
983
984SHLIB_MAJOR
985SHLIB_MINOR
986SHLIB_TEENY	Major, minor, and teeny version numbers of shared library
987
988USE_SHLIBDIR	If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR}
989		as the path to install shared libraries to.
990		USE_SHLIBDIR must be defined before <bsd.own.mk> is included.
991		Default: no
992
993LIBISMODULE	If not "no", install as ${LIB}.so (without the "lib" prefix),
994		and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no
995		MKPROFILE=no MKSTATICLIB=no".
996		Default: no
997
998LIBISPRIVATE	If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no
999		MKPROFILE=no", and don't install the (.a) library.
1000		This is useful for "build only" helper libraries.
1001		Default: no
1002
1003LIBISCXX	If not "no", Use ${CXX} instead of ${CC} to link
1004		shared libraries.
1005		This is useful for C++ libraries.
1006		Default: no
1007
1008LINTLIBDIR	Target directory for lint libraries.
1009
1010LIBGRP		Library group.
1011
1012LIBOWN		Library owner.
1013
1014LIBMODE		Library mode.
1015
1016LDADD		Additional loader objects.
1017
1018MAN		The manual pages to be installed (use a .1 - .9 suffix).
1019
1020NOCHECKVER_<library>
1021NOCHECKVER	If set, disables checking for installed shared object
1022		libraries with versions greater than the source.  A
1023		particular library name, without the "lib" prefix, may
1024		be appended to the variable name to disable the check for
1025		only that library.
1026
1027SRCS		List of source files to build the library.  Suffix types
1028		.s, .c, and .f are supported.  Note, .s files are preferred
1029		to .c files of the same name.  (This is not the default for
1030		versions of make.)
1031
1032LIBDPLIBS	A list of the tuples:
1033			libname  path-to-srcdir-of-libname
1034
1035		For each tuple;
1036		     *	LIBDO.libname contains the .OBJDIR of the library
1037			`libname', and if it is not set it is determined
1038			from the srcdir and added to MAKEOVERRIDES (the
1039			latter is to allow for build time optimization).
1040		     *	LDADD gets  -L${LIBDO.libname} -llibname    added.
1041		     *	DPADD gets  ${LIBDO.libname}/liblibname.so  or
1042				    ${LIBDO.libname}/liblibname.a   added.
1043
1044		This variable may be used for individual libraries, as
1045		well as in parent directories to cache common libraries 
1046		as a build-time optimization.
1047
1048The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
1049if it exists, as well as the include file <bsd.man.mk>.
1050
1051It has rules for building profiled objects; profiled libraries are
1052built by default.
1053
1054Libraries are ranlib'd when made.
1055
1056
1057=-=-=-=-=   bsd.links.mk   =-=-=-=-=
1058
1059The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
1060and is included from from <bsd.lib.mk> and <bsd.prog.mk>.
1061
1062LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log
1063is used. The defaults may be modified by other bsd.*.mk files which
1064include bsd.links.mk.  In the future, these variables may be replaced
1065by a method for explicitly recording hard links in a metadata log.
1066
1067LINKS		The list of hard links, consisting of pairs of paths:
1068			source-file target-file
1069		${DESTDIR} is prepended to both paths before linking.
1070		For example, to link /bin/test and /bin/[, use:
1071			LINKS=/bin/test /bin/[
1072
1073CONFIGLINKS	Similar semantics to LINKS, except that the links
1074		are installed by the `configinstall' target,
1075		not the `install' target.
1076
1077SYMLINKS	The list of symbolic links, consisting of pairs of paths:
1078			source-file target-file
1079		${DESTDIR} is only prepended to target-file before linking.
1080		For example, to symlink /usr/bin/tar to /bin/tar resulting
1081		in ${DESTDIR}/usr/bin/tar -> /bin/tar:
1082			SYMLINKS=/bin/tar /usr/bin/tar
1083
1084CONFIGSYMLINKS	Similar semantics to SYMLINKS, except that the symbolic links
1085		are installed by the `configinstall' target,
1086		not the `install' target.
1087
1088LINKSOWN	Link owner.  [${BINOWN}]
1089
1090LINKSGRP	Link group.  [${BINGRP}]
1091
1092LINKSMODE	Link mode.  [${NONBINMODE}]
1093
1094LINKSOWN_<fn>	Link owner of the specific file <fn>.
1095
1096LINKSGRP_<fn>	Link group of the specific file <fn>.
1097
1098LINKSMODE_<fn>	Link mode of the specific file <fn>.
1099
1100
1101=-=-=-=-=   bsd.man.mk   =-=-=-=-=
1102
1103The include file <bsd.man.mk> handles installing manual pages and their
1104links.
1105
1106It has a three targets:
1107
1108	catinstall:
1109		Install the preformatted manual pages and their links.
1110	htmlinstall:
1111		Install the HTML manual pages and their links.
1112	maninstall:
1113		Install the manual page sources and their links.
1114
1115It sets/uses the following variables:
1116
1117MANDIR		Base path for manual installation.
1118
1119MANGRP		Manual group.
1120
1121MANOWN		Manual owner.
1122
1123MANMODE		Manual mode.
1124
1125MANSUBDIR	Subdirectory under the manual page section, i.e. "/vax"
1126		or "/tahoe" for machine specific manual pages.
1127
1128MAN		The manual pages to be installed (use a .1 - .9 suffix).
1129
1130MLINKS		List of manual page links (using a .1 - .9 suffix).  The
1131		linked-to file must come first, the linked file second,
1132		and there may be multiple pairs.  The files are soft-linked.
1133
1134The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
1135it exists.
1136
1137
1138=-=-=-=-=   bsd.obj.mk   =-=-=-=-=
1139
1140The include file <bsd.obj.mk> defines targets related to the creation
1141and use of separated object and source directories.
1142
1143If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses
1144${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if
1145it exists.  Otherwise make(1) looks for the existence of a
1146subdirectory (or a symlink to a directory) of the source directory
1147into which built targets should be placed.  If an environment variable
1148named MAKEOBJDIR is set, make(1) uses its value as the name of the
1149object directory; failing that, make first looks for a subdirectory
1150named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj".
1151
1152Object directories are not created automatically by make(1) if they
1153don't exist; you need to run a separate "make obj".  (This will happen
1154during a top-level build if "MKOBJDIRS" is set to a value other than
1155"no").  When the source directory is a subdirectory of ${BSDSRCDIR} --
1156and this is determined by a simple string prefix comparison -- object
1157directories are created in a separate object directory tree, and a
1158symlink to the object directory in that tree is created in the source
1159directory; otherwise, "make obj" assumes that you're not in the main
1160source tree and that it's not safe to use a separate object tree.
1161
1162Several variables used by <bsd.obj.mk> control exactly what
1163directories and links get created during a "make obj":
1164
1165MAKEOBJDIR	If set, this is the component name of the object
1166		directory.
1167
1168OBJMACHINE	If this is set but MAKEOBJDIR is not set, creates
1169		object directories or links named "obj.${MACHINE}";
1170		otherwise, just creates ones named "obj".
1171
1172USR_OBJMACHINE  If set, and the current directory is a subdirectory of
1173		${BSDSRCDIR}, create object directory in the
1174		corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
1175		otherwise, create it in the corresponding subdirectory
1176		of ${BSDOBJDIR}
1177
1178BUILDID		If set, the contents of this variable are appended
1179		to the object directory name.  If OBJMACHINE is also
1180		set, ".${BUILDID}" is added after ".${MACHINE}".
1181
1182
1183=-=-=-=-=   bsd.prog.mk   =-=-=-=-=
1184
1185The include file <bsd.prog.mk> handles building programs from one or
1186more source files, along with their manual pages.  It has a limited number
1187of suffixes, consistent with the current needs of the BSD tree. 
1188<bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters.
1189
1190It has eight targets:
1191
1192	all:
1193		build the program and its manual page.  This also
1194		creates a GDB initialization file (.gdbinit) in
1195		the objdir.  The .gdbinit file sets the shared library
1196		prefix to ${DESTDIR} to facilitate cross-debugging.
1197	clean:
1198		remove the program, any object files and the files a.out,
1199		Errs, errs, mklog, and ${PROG}.core.
1200	cleandir:
1201		remove all of the files removed by the target clean, as
1202		well as .depend, tags, and any manual pages.
1203		`distclean' is a synonym for `cleandir'.
1204	depend:
1205		make the dependencies for the source files, and store
1206		them in the file .depend.
1207	includes:
1208		install any header files.
1209	install:
1210		install the program and its manual pages; if the Makefile
1211		does not itself define the target install, the targets
1212		beforeinstall and afterinstall may also be used to cause
1213		actions immediately before and after the install target
1214		is executed.
1215	lint:
1216		run lint on the source files
1217	tags:
1218		create a tags file for the source files.
1219
1220It sets/uses the following variables:
1221
1222BINGRP		Binary group.
1223
1224BINOWN		Binary owner.
1225
1226BINMODE		Binary mode.
1227
1228CLEANFILES	Additional files to remove for the clean and cleandir targets.
1229
1230COPTS		Additional flags to the compiler when creating C objects.
1231
1232COPTS.<fn>	Additional flags to the compiler when creating the
1233		C objects for <fn>.
1234		For <fn>.[ly], "<fn>.c" must be used.
1235
1236CPUFLAGS	Additional flags to the compiler/assembler to select
1237		CPU instruction set options, CPU tuning options, etc.
1238
1239CPUFLAGS.<fn>	Additional flags to the compiler/assembler for <fn>.
1240		For <fn>.[ly], "<fn>.c" must be used.
1241
1242CPPFLAGS	Additional flags to the C pre-processor.
1243
1244CPPFLAGS.<fn>	Additional flags to the C pre-processor for <fn>.
1245		For <fn>.[ly], "<fn>.c" must be used.
1246
1247GDBINIT		List of GDB initialization files to add to "source"
1248		directives in the .gdbinit file that is created in the
1249		objdir.
1250
1251LDADD		Additional loader objects.  Usually used for libraries.
1252		For example, to load with the compatibility and utility
1253		libraries, use:
1254
1255			LDADD+=-lutil -lcompat
1256
1257LDFLAGS		Additional linker flags (passed to ${CC} during link).
1258
1259LINKS		See <bsd.links.mk>
1260
1261OBJCOPTS	Additional flags to the compiler when creating ObjC objects.
1262
1263OBJCOPTS.<fn>	Additional flags to the compiler when creating the
1264		ObjC objects for <fn>.
1265		For <fn>.[ly], "<fn>.c" must be used.
1266
1267SYMLINKS	See <bsd.links.mk>
1268
1269MAN		Manual pages (should end in .1 - .9).  If no MAN variable is
1270		defined, "MAN=${PROG}.1" is assumed.
1271
1272PAXCTL_FLAGS	If defined, run paxctl(1) on the program binary after link
1273		time, with the value of this variable as args to paxctl(1).
1274
1275PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS.
1276
1277PROG		The name of the program to build.  If not supplied, nothing
1278		is built.
1279
1280PROG_CXX	If defined, the name of the program to build.  Also
1281		causes <bsd.prog.mk> to link the program with the C++
1282		compiler rather than the C compiler.  PROG_CXX overrides
1283		the value of PROG if PROG is also set.
1284
1285PROGNAME	The name that the above program will be installed as, if
1286		different from ${PROG}.
1287
1288SRCS		List of source files to build the program.  If SRCS is not
1289		defined, it's assumed to be ${PROG}.c.
1290
1291DPSRCS		List of source files which are needed for generating
1292		dependencies, but are not needed in ${SRCS}.
1293
1294DPADD		Additional dependencies for the program.  Usually used for
1295		libraries.  For example, to depend on the compatibility and
1296		utility libraries use:
1297
1298			DPADD+=${LIBCOMPAT} ${LIBUTIL}
1299
1300		The following libraries are predefined for DPADD:
1301
1302		LIBCRT0?=	${DESTDIR}/usr/lib/crt0.o
1303		LIBARCHIVE?=	${DESTDIR}/usr/lib/libarchive.a
1304		LIBASN1?=	${DESTDIR}/usr/lib/libasn1.a
1305		LIBBLUETOOTH?=	${DESTDIR}/usr/lib/libbluetooth.a
1306		LIBBSDMALLOC?=	${DESTDIR}/usr/lib/libbsdmalloc.a
1307		LIBBZ2?=	${DESTDIR}/usr/lib/libbz2.a
1308		LIBC?=		${DESTDIR}/usr/lib/libc.a
1309		LIBC_PIC?=	${DESTDIR}/usr/lib/libc_pic.a
1310		LIBCOM_ERR?=	${DESTDIR}/usr/lib/libcom_err.a
1311		LIBCOMPAT?=	${DESTDIR}/usr/lib/libcompat.a
1312		LIBCRYPT?=	${DESTDIR}/usr/lib/libcrypt.a
1313		LIBCRYPTO?=	${DESTDIR}/usr/lib/libcrypto.a
1314		LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a
1315		LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a
1316		LIBCRYPTO_RC5?=	${DESTDIR}/usr/lib/libcrypto_rc5.a
1317		LIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
1318		LIBDBM?=	${DESTDIR}/usr/lib/libdbm.a
1319		LIBDES?=	${DESTDIR}/usr/lib/libdes.a
1320		LIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
1321		LIBEVENT?=	${DESTDIR}/usr/lib/libevent.a
1322		LIBFETCH?=	${DESTDIR}/usr/lib/libfetch.a
1323		LIBFORM?=	${DESTDIR}/usr/lib/libform.a
1324		LIBGCC?=	${DESTDIR}/usr/lib/libgcc.a
1325		LIBGNUMALLOC?=	${DESTDIR}/usr/lib/libgnumalloc.a
1326		LIBGSSAPI?=	${DESTDIR}/usr/lib/libgssapi.a
1327		LIBHDB?=	${DESTDIR}/usr/lib/libhdb.a
1328		LIBINTL?=	${DESTDIR}/usr/lib/libintl.a
1329		LIBIPSEC?=	${DESTDIR}/usr/lib/libipsec.a
1330		LIBKADM5CLNT?=	${DESTDIR}/usr/lib/libkadm5clnt.a
1331		LIBKADM5SRV?=	${DESTDIR}/usr/lib/libkadm5srv.a
1332		LIBKAFS?=	${DESTDIR}/usr/lib/libkafs.a
1333		LIBKRB5?=	${DESTDIR}/usr/lib/libkrb5.a
1334		LIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
1335		LIBL?=		${DESTDIR}/usr/lib/libl.a
1336		LIBLBER?=	${DESTDIR}/usr/lib/liblber.a
1337		LIBLDAP?=	${DESTDIR}/usr/lib/libldap.a
1338		LIBLDAP_R?=	${DESTDIR}/usr/lib/libldap_r.a
1339		LIBM?=		${DESTDIR}/usr/lib/libm.a
1340		LIBMENU?=	${DESTDIR}/usr/lib/libmenu.a
1341		LIBOBJC?=	${DESTDIR}/usr/lib/libobjc.a
1342		LIBOSSAUDIO?=	${DESTDIR}/usr/lib/libossaudio.a
1343		LIBPAM?=	${DESTDIR}/usr/lib/libpam.a
1344		LIBPCAP?=	${DESTDIR}/usr/lib/libpcap.a
1345		LIBPCI?=	${DESTDIR}/usr/lib/libpci.a
1346		LIBPMC?=	${DESTDIR}/usr/lib/libpmc.a
1347		LIBPOSIX?=	${DESTDIR}/usr/lib/libposix.a
1348		LIBPTHREAD?=	${DESTDIR}/usr/lib/libpthread.a
1349		LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a
1350		LIBRADIUS?=	${DESTDIR}/usr/lib/libradius.a
1351		LIBRESOLV?=	${DESTDIR}/usr/lib/libresolv.a
1352		LIBRMT?=	${DESTDIR}/usr/lib/librmt.a
1353		LIBROKEN?=	${DESTDIR}/usr/lib/libroken.a
1354		LIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
1355		LIBRT?=		${DESTDIR}/usr/lib/librt.a
1356		LIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
1357		LIBSL?=		${DESTDIR}/usr/lib/libsl.a
1358		LIBSS?=		${DESTDIR}/usr/lib/libss.a
1359		LIBSSH?=	${DESTDIR}/usr/lib/libssh.a
1360		LIBSSL?=	${DESTDIR}/usr/lib/libssl.a
1361		LIBSSP?=	${DESTDIR}/usr/lib/libssp.a
1362		LIBSTDCXX?=	${DESTDIR}/usr/lib/libstdc++.a
1363		LIBSUPCXX?=	${DESTDIR}/usr/lib/libsupc++.a
1364		LIBTERMINFO?=	${DESTDIR}/usr/lib/libterminfo.a
1365		LIBUSBHID?=	${DESTDIR}/usr/lib/libusbhid.a
1366		LIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
1367		LIBWRAP?=	${DESTDIR}/usr/lib/libwrap.a
1368		LIBY?=		${DESTDIR}/usr/lib/liby.a
1369		LIBZ?=		${DESTDIR}/usr/lib/libz.a
1370
1371SHAREDSTRINGS	If defined, a new .c.o rule is used that results in shared
1372		strings, using xstr(1). Note that this will not work with
1373		parallel makes.
1374
1375STRIPFLAG	The flag passed to the install program to cause the binary
1376		to be stripped.
1377
1378SUBDIR		A list of subdirectories that should be built as well.
1379		Each of the targets will execute the same target in the
1380		subdirectories.
1381
1382SCRIPTS		A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
1383		These are installed exactly like programs.
1384
1385SCRIPTSDIR	The location to install the scripts.  Each script can be
1386		installed to a separate path by setting SCRIPTSDIR_<script>.
1387
1388SCRIPTSNAME	The name that the above program will be installed as, if
1389		different from ${SCRIPTS}. These can be further specialized
1390		by setting SCRIPTSNAME_<script>.
1391
1392FILES		See description of <bsd.files.mk>.
1393
1394SHLINKDIR	Target directory for shared linker.  See description of
1395		<bsd.own.mk> for additional information about this variable.
1396
1397The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
1398if it exists, as well as the include file <bsd.man.mk>.
1399
1400Some simple examples:
1401
1402To build foo from foo.c with a manual page foo.1, use:
1403
1404	PROG=	foo
1405
1406	.include <bsd.prog.mk>
1407
1408To build foo from foo.c with a manual page foo.2, add the line:
1409
1410	MAN=	foo.2
1411
1412If foo does not have a manual page at all, add the line:
1413
1414	MKMAN=	no
1415
1416If foo has multiple source files, add the line:
1417
1418	SRCS=	a.c b.c c.c d.c
1419
1420
1421=-=-=-=-=   bsd.rpc.mk   =-=-=-=-=
1422
1423The include file <bsd.rpc.mk> contains a makefile fragment used to
1424construct source files built by rpcgen.
1425
1426The following macros may be defined in makefiles which include
1427<bsd.rpc.mk> in order to control which files get built and how they
1428are to be built:
1429
1430RPC_INCS:	construct .h file from .x file
1431RPC_XDRFILES:	construct _xdr.c from .x file
1432		(for marshalling/unmarshalling data types)
1433RPC_SVCFILES:	construct _svc.c from .x file
1434		(server-side stubs)
1435RPC_SVCFLAGS:	Additional flags passed to builds of RPC_SVCFILES.
1436
1437RPC_XDIR:	Directory containing .x/.h files
1438
1439
1440=-=-=-=-=   bsd.shlib.mk   =-=-=-=-=
1441
1442The include file <bsd.shlib.mk> computes parameters for shared library
1443installation and use.  It defines no targets.  <bsd.own.mk> MUST be
1444included before <bsd.shlib.mk>.
1445
1446<bsd.own.mk> sets the following variables, if they are not already defined
1447(defaults are in brackets):
1448
1449SHLIBINSTALLDIR	If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
1450		instead of ${LIBDIR} as the base path for shared library
1451		installation.  [/lib]
1452
1453SHLIBDIR	The path to USE_SHLIBDIR shared libraries to use when building
1454		a program.  [/lib for programs in /bin and /sbin, /usr/lib
1455		for all others.]
1456
1457_LIBSODIR	Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no",
1458		otherwise set to ${LIBDIR}
1459
1460SHLINKINSTALLDIR Base path for shared linker.  [/libexec]
1461
1462SHLINKDIR	Path to use for shared linker when building a program.
1463		[/libexec for programs in /bin and /sbin, /usr/libexec for
1464		all others.]
1465
1466
1467=-=-=-=-=   bsd.subdir.mk   =-=-=-=-=
1468
1469The include file <bsd.subdir.mk> contains the default targets for building
1470subdirectories.  It has the same eight targets as <bsd.prog.mk>: all,
1471clean, cleandir, depend, includes, install, lint, and tags.  It uses the
1472following variables:
1473
1474NOSUBDIR	If this variable is defined, then the SUBDIR variable
1475		will be ignored and subdirectories will not be processed.
1476
1477SUBDIR		For all of the directories listed in ${SUBDIR}, the
1478		specified directory will be visited and the target made.
1479
1480		As a special case, the use of a token .WAIT as an
1481		entry in SUBDIR acts as a synchronization barrier
1482		when multiple make jobs are run; subdirs before the
1483		.WAIT must complete before any subdirs after .WAIT are
1484		started.  See make(1) for some caveats on use of .WAIT
1485		and other special sources.
1486
1487
1488=-=-=-=-=   bsd.sys.mk   =-=-=-=-=
1489
1490The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
1491<bsd.lib.mk>.  It contains overrides that are used when building
1492the NetBSD source tree.
1493
1494The following variables control how various files are compiled/built.
1495(Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"):
1496
1497AR		Create, modify, and extract from archives.  [ar]
1498
1499ARFLAGS		Options to ${AR}.  [rl]
1500
1501AS		Assembler.  [as]
1502
1503AFLAGS		Options to ${CC} when compiling or linking .s or .S
1504		assembly source files.  []
1505
1506BUILDSEED	GCC uses random numbers when compiling C++ code.
1507		If this option is present, seed the random number
1508		generator based on the value, source file names and
1509		the output file name to make builds more deterministic.
1510		Additional information is available in the GCC
1511		documentation of -frandom-seed.
1512
1513CC		C compiler.  [cc]
1514
1515CFLAGS		Options to ${CC}.  [Usually -O or -O2]
1516
1517CPP		C Pre-Processor.  [cpp]
1518
1519CPPFLAGS	Options to ${CPP}.  []
1520
1521CPUFLAGS	Optimization flags for ${CC}.  []
1522
1523CXX		C++ compiler.  [c++]
1524
1525CXXFLAGS	Options to ${CXX}.  [${CFLAGS}]
1526
1527ELF2ECOFF	Convert ELF-format executable to ECOFF.  [elf2ecoff]
1528
1529FC		Fortran compiler.  [f77]
1530
1531FFLAGS		Options to {$FC}.  [-O]
1532
1533HOST_SH		Shell.	This must be an absolute path, because it may be
1534		substituted into "#!" lines in scripts.	 [/bin/sh]
1535
1536INSTALL		install(1) command.  [install]
1537
1538LEX		Lexical analyzer.  [lex]
1539
1540LFLAGS		Options to ${LEX}.  []
1541
1542LPREFIX		Symbol prefix for ${LEX} (see -P option in lex(1)) [yy]
1543
1544LD		Linker.  [ld]
1545
1546LDFLAGS		Options to ${CC} during the link process.  []
1547
1548LINT		C program verifier.  [lint]
1549
1550LINTFLAGS	Options to ${LINT}.  [-chapbxzFS]
1551
1552LORDER		List dependencies for object files.  [lorder]
1553
1554MAKE		make(1).  [make]
1555
1556MKDEP		Construct Makefile dependency list.  [mkdep]
1557
1558NM		List symbols from object files.  [nm]
1559
1560PC		Pascal compiler.  [pc]  (Not present)
1561
1562PFLAGS		Options to ${PC}.  []
1563
1564OBJC		Objective C compiler.  [${CC}]
1565
1566OBJCFLAGS	Options to ${OBJC}.  [${CFLAGS}]
1567
1568OBJCOPY		Copy and translate object files.  [objcopy]
1569
1570OBJDUMP		Display information from object files.  [objdump]
1571
1572RANLIB		Generate index to archive.  [ranlib]
1573
1574SIZE		List section sizes and total size.  [size]
1575
1576STRIP		Discard symbols from object files.  [strip]
1577
1578TSORT		Topological sort of a directed graph.  [tsort -q]
1579
1580YACC		LALR(1) parser generator.  [yacc]
1581
1582YFLAGS		Options to ${YACC}.  []
1583
1584YHEADER		If defined, add "-d" to YFLAGS, and add dependencies
1585		from <file>.y to <file>.h and <file>.c, and add
1586		<foo>.h to CLEANFILES.
1587
1588YPREFIX		If defined, add "-p ${YPREFIX}" to YFLAGS.
1589
1590
1591Other variables of note (incomplete list):
1592
1593NOGCCERROR	If defined, prevents passing certain ${CFLAGS} to GCC
1594		that cause warnings to be fatal, such as:
1595			-Werror -Wa,--fatal-warnings
1596		(The latter being for as(1).)
1597
1598WARNS		Crank up GCC warning options; the distinct levels are:
1599			WARNS=1
1600			WARNS=2
1601			WARNS=3
1602			WARNS=4
1603
1604=-=-=-=-=   bsd.x11.mk   =-=-=-=-=
1605
1606The include file <bsd.x11.mk> contains parameters and targets for
1607cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}.
1608It should be included after the general Makefile contents but before
1609the include files such as <bsd.prog.mk> and <bsd.lib.mk>.
1610
1611It provides the following targets:
1612	.man.1 .man.3 .man.4 .man.5 .man.7:
1613		If ${MAN} or ${PROG} is set and ${MKMAN} != "no",
1614		these rules convert from X11's manual page source
1615		into an mdoc.old source file.
1616	cleanx11man:
1617		Clean up the mdoc.old files generated by the above.
1618
1619It sets the following variables:
1620
1621BINDIR			Set to ${X11BINDIR}.
1622			To override, define after including <bsd.x11.mk>
1623
1624LIBDIR			Set to ${X11USRLIBDIR}.
1625			To override, define after including <bsd.x11.mk>
1626
1627MANDIR			Set to ${X11MANDIR}.
1628			To override, define after including <bsd.x11.mk>
1629
1630CPPFLAGS		Appended with definitions to include from
1631			${DESTDIR}${X11INCDIR}
1632
1633LDFLAGS			Appended with definitions to link from
1634			${DESTDIR}${X11USRLIBDIR}
1635
1636X11FLAGS.CONNECTION	Equivalent to X11's CONNECTION_FLAGS.
1637
1638X11FLAGS.EXTENSION	Equivalent to X11's EXT_DEFINES.
1639
1640X11FLAGS.LOADABLE	Equivalent to X11's LOADABLE.
1641
1642X11FLAGS.OS_DEFINES	Equivalent to X11's OS_DEFINES.
1643
1644X11FLAGS.SERVER		Equivalent to X11's ServerDefines.
1645
1646X11FLAGS.THREADLIB	Equivalent to X11's THREADS_DEFINES for libraries.
1647
1648X11FLAGS.THREADS	Equivalent to X11's THREADS_DEFINES.
1649
1650X11FLAGS.VERSION	cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION.
1651
1652X11FLAGS.DIX		Equivalent to X11's DIX_DEFINES.
1653
1654X11TOOL_UNXCOMM		Commandline to convert `XCOMM' comments to `#'
1655
1656It uses the following variables:
1657
1658APPDEFS			List of app-default files to install.
1659
1660CPPSCRIPTS		List of files/scripts to run through cpp(1)
1661			and then ${X11TOOL_UNXCOMM}.  The source files
1662			have a `.cpp' suffix, the generated files do not.
1663
1664CPPSCRIPTFLAGS		Additional flags to cpp(1) when building CPPSCRIPTS.
1665
1666CPPSCRIPTFLAGS_<fn>	Additional flags to cpp(1) when building CPPSCRIPT <fn>.
1667
1668
1669=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1670