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