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