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