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