bsd.README revision 1.380
1#	$NetBSD: bsd.README,v 1.380 2018/07/25 19:15:19 kamil Exp $
2#	@(#)bsd.README	8.2 (Berkeley) 4/2/94
3
4This is the README file for the make "include" files for the NetBSD
5source tree.  The files are installed in /usr/share/mk, and are,
6by convention, named with the suffix ".mk".
7
8Note, this file is not intended to replace reading through the .mk
9files for anything tricky.
10
11=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
12
13RANDOM THINGS WORTH KNOWING:
14
15The files are simply C-style #include files, and pretty much behave like
16you'd expect.  The syntax is slightly different in that a single '.' is
17used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
18
19One difference that will save you lots of debugging time is that inclusion
20of the file is normally done at the *end* of the Makefile.  The reason for
21this is because .mk files often modify variables and behavior based on the
22values of variables set in the Makefile.  To make this work, remember that
23the FIRST target found is the target that is used, i.e. if the Makefile has:
24
25	a:
26		echo a
27	a:
28		echo a number two
29
30the command "make a" will echo "a".  To make things confusing, the SECOND
31variable assignment is the overriding one, i.e. if the Makefile has:
32
33	a=	foo
34	a=	bar
35
36	b:
37		echo ${a}
38
39the command "make b" will echo "bar".  This is for compatibility with the
40way the V7 make behaved.
41
42It's fairly difficult to make the BSD .mk files work when you're building
43multiple programs in a single directory.  It's a lot easier to split up the
44programs than to deal with the problem.  Most of the agony comes from making
45the "obj" directory stuff work right, not because we switched to a new version
46of make.  So, don't get mad at us, figure out a better way to handle multiple
47architectures so we can quit using the symbolic link stuff.  (Imake doesn't
48count.)
49
50The file .depend in the source directory is expected to contain dependencies
51for the source files.  This file is read automatically by make after reading
52the Makefile.
53
54The variable DESTDIR works as before.  It's not set anywhere but will change
55the tree where the file gets installed.
56
57The profiled libraries are no longer built in a different directory than
58the regular libraries.  A new suffix, ".po", is used to denote a profiled
59object, and ".pico" denotes a shared (position-independent) object.
60
61There are various make variables used during the build.
62
63Many variables support a (case sensitive) value of "no" or "yes",
64and are tested with  ${VAR} == "no"  and  ${VAR} != "no" .
65
66
67The basic rule for the variable naming scheme is as follows:
68
69HOST_xxx	A command that runs on the host machine regardless of
70		whether or not the system is being cross compiled, or
71		flags for such a command.
72
73MKxxx		Can be set to "no" to disable functionality, or
74		"yes" to enable it.
75		Usually defaults to "yes", although some variables
76		default to "no".
77		Due to make(1) implementation issues, if a temporary
78		command-line override of a mk.conf(5) or <bsd.own.mk>
79		setting is required whilst still honoring a particular
80		Makefile's setting of MKxxx, use
81			env MKxxx=value make
82		instead of
83			make MKxxx=value
84
85NOxxx		If defined, disables a feature.
86		Not intended for users.
87		This is to allow Makefiles to disable functionality
88		that they don't support (such as missing man pages).
89		NOxxx variables must be defined before <bsd.own.mk>
90		is included.
91
92TOOL_xxx	A tool that is provided as part of the USETOOLS
93		framework.  When not using the USETOOLS framework,
94		TOOL_xxx variables should refer to tools that are
95		already installed on the host system.
96
97The following variables that control how things are made/installed that
98are not set by default. These should not be set by Makefiles; they're for
99the user to define in MAKECONF (see <bsd.own.mk>, below, or mk.conf(5))
100or on the make(1) command line:
101
102BUILD 		If defined, 'make install' checks that the targets in the
103		source directories are up-to-date and remakes them if they
104                are out of date, instead of blindly trying to install
105                out of date or non-existent targets.
106
107MAKEVERBOSE	Control how "verbose" the standard make(1) rules are.
108		Default: 2
109		Supported values:
110		    0	Minimal output ("quiet")
111		    1	Describe what is occurring
112		    2	Describe what is occurring and echo the actual command
113		    3	Ignore the effect of the "@" prefix in make commands
114		    4	Trace shell commands using the shell's -x flag
115
116MKATF		If "no", don't build the Automated Testing Framework (ATF),
117		which includes the libatf-c, libatf-c++ and libatf-sh libraries
118		and the various command line tools.  Also, because the build of
119		the libraries is disabled, don't build the NetBSD test suite
120		either.
121		Default: yes
122
123MKBFD		Obsolete, use MKBINUTILS
124
125MKBINUTILS	If "no", don't build binutils (gas, ld, etc and libbfd,
126		libopcodes)
127		Default: yes
128
129MKBSDTAR	If "yes", use the libarchive based cpio and tar instead of
130		the pax frontends.
131		Default: no
132
133MKCATPAGES	If "no", don't build or install the catman pages.
134		Default: no
135
136MKCOMPAT  	If "no", don't build or install the src/compat.
137		Default: yes on amd64/mips64/sparc64, no elsewhere.
138
139MKCOMPATTESTS  	If "yes", build and install the NetBSD test suite when
140		building and installing src/compat.
141		Default: no
142
143MKCOMPATX11  	If "yes", build and install the X11 libraries when
144		building and installing src/compat.
145		Default: no
146
147MKCOMPLEX	If "no", don't build libm support for <complex.h>
148		Default: yes
149
150MKCTF		If "no", do not build and install CTF tools, and also
151		don't generate and manipulate CTF data of ELF binaries
152		during build.
153		Default: no
154
155NOCTF		Don't generate and manipulate CTF data of ELF binaries
156		during build. It is set internally for standalone programs.
157
158MKCVS		If "no", don't build or install cvs(1).
159		Default: yes
160
161MKDEBUG		If "no", don't build and install separate debugging symbols
162		into /usr/libdata/debug.
163		Default: no
164
165NODEBUG		Don't compile with debugging symbols during build.
166		It is set internally for standalone programs.
167
168MKDEBUGLIB	Build *_g.a debugging libraries, which are compiled
169		with -DDEBUG.
170		Default: no
171
172MKDEPINCLUDES	If "yes" issue .include statements in the .depend file
173		instead of inlining the contents of the .d files. Useful
174		when stale dependencies are present, to list the exact
175		files that need refreshing. It is off by default because
176		it is possibly slower.
177		Default "no"
178
179MKDOC		If "no", don't build or install the documentation.
180		Default: yes
181
182MKDTRACE	If "no", do not build and install the kernel modules,
183		utilities and libraries used to implement the dtrace(1)
184		facility.
185		Default: no
186
187MKDYNAMICROOT	If "no", build programs in /bin and /sbin statically,
188		don't install certain libraries in /lib, and don't
189		install the shared linker into /libexec.
190		Default: yes
191
192MKEXTSRC        If not "no", 'make build' also descends into either src/extsrc
193		to cross-build programs and libraries externally added by
194		users, and automatically enables creation of those sets.
195		Default: no
196
197MKFIRMWARE      If not "no", install the /libdata/firmware directory,
198		which is necessary for several drivers: athn(4), bwfm(4),
199		ipw(4), iwi(4), iwm(4), iwn(4), otus(4), rtwn(4), urtwn(4),
200		wpi(4), ral(4), rum(4), run(4), zyd(4), bcm43xx(4), and
201		the Tegra 124 SoC.
202		Default: yes on amd64, cobalt, evbarm evbmips, evbppc, hpcarm,
203		hppa, i386, mac68k, macppc, sandpoint, and sparc64, no elsewhere.
204
205MKGCC		If "no", don't build gcc(1) or any of the GCC-related
206		libraries (libgcc, libobjc, libstdc++).
207		Default: yes
208
209MKGCCCMDS	If "no", don't build gcc(1), but do build the GCC-related
210		libraries (libgcc, libobjc, libstdc++).
211		Default: yes
212
213MKGDB		If "no", don't build gdb(1).
214		Default: yes
215
216MKGROFFHTMLDOC	If "no", avoid trying to use groff to generate html for
217		miscellaneous articles, as this seems to sometimes want
218		to run software not in base. Does not affect html man
219		pages.
220		Default: no
221
222MKHESIOD	If "no", disables building of Hesiod infrastructure
223		(libraries and support programs).
224		Default: yes
225
226MKHOSTOBJ	If not "no", for programs intended to be run on the compile
227		host, the name, release, and architecture of the host
228		operating system will be suffixed to the name of the object
229		directory created by "make obj".
230		Default: no
231
232MKHTML		If "no", don't build or install the HTML man pages.
233		Default: yes
234
235MKIEEEFP	If "no", don't add code for IEEE754/IEC60559 conformance.
236		Has no effect on most platforms.
237		Default: yes
238
239MKSTRIPIDENT	Strip the RCS IDs from program binaries and shared libraries.
240		Default: no
241
242MKINET6		If "no", disables building of INET6 (IPv6) infrastructure
243		(libraries and support programs).  This option must not be
244		set to "no" if MKX11 is not "no".
245		Default: yes
246
247MKINFO		If "no", don't build or install Info documentation from
248		Texinfo source files.
249		Default: yes
250
251MKIPFILTER	If "no", don't build or install the IP Filter programs and LKM.
252		Default: yes
253
254MKISCSI		If "no", don't build or install iSCSI library or applications
255		(depends on libpthread.)
256		Default: yes
257
258MKKDEBUG	If "yes", force building of kernel symbol info and creation
259		of netbsd.gdb in all kernel builds, independently of the
260		settings for "makeoptions DEBUG" in the kernel config file.
261
262MKKERBEROS	If "no", disables building of Kerberos v5
263		infrastructure (libraries and support programs).
264		Default: yes
265
266MKKMOD		If "no", disables building of kernel modules.
267		Default: yes
268
269MKKYUA		If "no", don't build Kyua nor its dependent library Lutok.
270		Note that setting this to "no" does not disable the build of
271		the NetBSD test suite itself; the build of the tests is
272		controlled by the MKATF knob.
273		Default: no (until the import is done and validated)
274
275MKLDAP		If "no", disables building of LDAP infrastructure
276		(libraries and support programs).
277		Default: yes
278
279MKLIBCXX	If not "no", build and install libc++.
280		Default: no
281
282MKLIBSTDCXX	If not "no", build and install libstdc++.
283		Default: yes
284
285MKLINKLIB	If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
286		Also:
287			- don't install the .a libraries
288			- don't install _pic.a libraries on PIC systems
289			- don't build .a libraries on PIC systems
290			- don't install the .so symlink on ELF systems
291		I.e, only install the shared library (and the .so.major
292		symlink on ELF).
293		Default: yes
294
295MKLINT		If "no", don't build or install the lint libraries.
296		Default: yes
297
298MKLVM		If "no", don't build or install the logical volume manager
299		and device mapper tools and libraries
300		Default: yes
301
302MKMAN		If "no", don't build or install the man or catman pages,
303		and also acts as "MKCATPAGES=no MKHTML=no".
304		Default: yes
305
306MKMANDOC	If "yes", mandoc is built as tool and used to compile
307		catman or html pages.  A directory can be exempted by
308		defining NOMANDOC.  Individual man pages are exempted
309		if NOMANDOC.${target} is set to "yes".
310		Default: yes
311
312MKMANZ		If not "no", compress manual pages at installation time.
313		Default: no
314
315MKMDNS		If "no", disables building of mDNS infrastructure
316		(libraries and support programs).
317		Default: yes
318
319MKNLS		If "no", don't build or install the NLS files and locale
320		definition files.
321		Default: yes
322
323MKNPF		If "no", don't build or install the NPF and its modules.
324		Default: yes
325
326MKNSD		If "no", don't build or install the "nsd" DNS authoritative
327		server.
328		Default: no
329
330MKOBJ		If "no", don't enable the rule which creates objdirs,
331		and also acts as "MKOBJDIRS=no".
332		Default: yes
333
334MKOBJDIRS	If "no", don't create objdirs during a "make build".
335		Default: no
336
337MKPAM		If "no", disables building of PAM authentication
338		infrastructure (libraries and support programs).
339		Default: yes
340
341MKPCC		If "no", don't build pcc(1) or any of the PCC-related
342		libraries (libpcc, libpccsoftfloat).
343		Default: no
344
345MKPF		If "no", don't build or install the pf programs and LKM.
346		Default: yes
347
348MKPIC		If "no", don't build or install shared libraries, and
349		also acts as "MKPICLIB=no"
350		Default: yes (for MACHINE_ARCHs that support it)
351
352MKPICINSTALL	If "no", don't install the *_pic.a libraries.
353		Default: yes
354
355MKPICLIB	If "no", don't build *_pic.a libraries, and build the
356		shared object libraries from the .a libraries.
357		A symlink is installed in ${DESTDIR}/usr/lib for the
358		_pic.a library pointing to the .a library.
359		Default: yes
360
361MKPIE		If "no", create regular executables. Otherwise create
362		PIE (Position Independent Executables).
363		Default: no
364
365NOPIE		Don't create PIE (Position Independent Executables)
366		It is set internally for standalone programs.
367
368MKPIGZGZIP	If "no", only install pigz as pigz, not gzip.
369		Default: no
370
371MKPOSTFIX	If "no", don't build or install postfix(1).
372		Default: yes
373
374MKPROFILE	If "no", don't build or install the profiling (*_p.a) libraries.
375		Default: yes
376
377MKRADEONFIRMWARE If "no", install the /libdata/firmware/radeon directory,
378		which is necessary for the radeon DRM driver.
379		Default: yes on i386 and amd64, no elsewhere.
380
381MKRELRO		If "partial", set the non-PLT GOT to read-only. If "full"
382		also force immediate symbol binding.
383		Default: no
384	
385MKREPRO         If "yes", create reproducible builds. This enables
386		different switches to make two builds from the same source tree
387		result in the same build results.
388		Default: no
389
390MKSANITIZER	if "yes", use the selected sanitizer to compile userland
391		programs as defined in USE_SANITIZER, which defaults to
392		"address". A selection of available sanitizers:
393			address:	A memory error detector (default)
394			thread:		A data race detector
395			memory:		An uninitialized memory read detector
396			undefined:	An undefined behavior detector
397			leak:		A memory leak detector
398			dataflow:	A general data flow analysis
399			cfi:		A control flow detector
400			safe-stack:	Protect against stack-based corruption
401			scudo:		The Scudo Hardened allocator
402		It's possible to specify multiple sanitizers within the
403		USE_SANITIZER option (comma separated). The USE_SANITIZER value
404		is passed to the -fsanitize= argument to the compiler.
405		Additional arguments can be passed through SANITIZERFLAGS.
406		The list of supported features and their valid combinations
407		depends on the compiler version and target CPU architecture.
408		Default: no
409
410MKSHARE		If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
411		MKMAN=no MKNLS=no".
412		I.e, don't build catman pages, documentation, Info
413		documentation, man pages, NLS files, ...
414		Default: yes
415
416MKSKEY		If "no", disables building of S/key authentication
417		infrastructure (libraries and support programs).
418		Default: yes
419
420MKSLJIT		If "no", disables building of sljit (stack-less platform
421		independent JIT compiler) private library and tests.
422		Default: yes on amd64, i386 and sparc, no elsewhere.
423
424MKSOFTFLOAT	If not "no", build with options to enable the compiler to
425		generate output containing library calls for floating
426		point and possibly soft-float library support.
427		Default: no
428
429MKSTATICLIB	If "no", don't build or install the normal static (*.a)
430		libraries.
431		Default: yes
432
433MKSTATICPIE	Compile in support for static pie binaries. These binaries
434		use a special support in crt0.o for resolving relative
435		relocations and require linker support.
436		Default: yes on platforms that support it.
437
438MKSTRIPSYM	If "yes", strip all local symbols from shared libraries;
439		the affect is equivalent to -x option of ld(1). If "no",
440		strip only temporary local symbols; the affect is equivalent
441		to -X option of ld(1). Keeping non-temporary local symbols
442		such as static function names is useful on using DTrace for
443		userland libraries and getting a backtrace from a rump kernel
444		loading shared libraries.
445		Default: yes
446
447MKTEGRAFIRMWARE	If "no", install the /libdata/firmware/nvidia directory,
448		which is necessary for the NVIDIA Tegra XHCI driver.
449		Default: yes on evbarm, no elsewhere.
450
451MKTOOLSDEBUG	If "yes" build the tools with debugging symbols.
452		Default: no
453
454MKTPM		If "no" then don't build the Trusted Platform Module
455		infrastructure.
456		Default: no
457
458MKUNBOUND	If not "no", build and install the "unbound" DNS resolver.
459		Default: yes
460
461MKUNPRIVED	If not "no", don't set the owner/group/mode when installing
462		files or directories, and keep a metadata log of what
463		the owner/group/mode should be.  This allows a
464		non-root "make install".
465		Default: no
466
467MKUPDATE 	If not "no", 'make install' only installs targets that are
468		more recently modified in the source directories that their
469		installed counterparts.
470		Default: no
471
472MKX11		If not "no", 'make build' also descends into 
473		src/external/mit/xorg to cross-build X11 and automatically
474		enables creation of X sets.
475		Default: no
476
477MKX11FONTS	If not "no", do not build or install the X fonts.  The xfont
478		set is still created but will be empty.
479		Default: yes
480
481MKX11MOTIF:	If "yes", build the native X11 libGLw with Motif stubs.  If
482		Motif is not installed in the default location /usr/pkg, the
483		location can be specified using the X11MOTIFPATH variable.
484		Default: no
485
486MKYP		If "no", disables building of YP (NIS)
487		infrastructure (libraries and support programs).
488		Default: yes
489
490MKZFS		If "no", do not build and install utilities and libraries
491		used to manage ZFS file system. Do not build zfs and solaris
492		compatibility kernel modules.  Note: ZFS requires 64bit
493		atomic operations.
494		Default: yes on amd64, no elsewhere.
495
496MKRUMP		If "no", do not build and install rump related headers,
497		libraries, and programs.
498		Default: yes
499
500USE_HESIOD	If "no", disables building Hesiod support into
501		various system utilities/libraries that support it.
502		If ${MKHESIOD} is "no", USE_HESIOD will also be
503		forced to "no".
504
505USE_INET6	If "no", disables building INET6 (IPv6) support into
506		various system utilities/libraries that support it.
507		If ${MKINET6} is "no", USE_INET6 will also be
508		forced to "no".
509
510USE_JEMALLOC	If "no", disables building the "jemalloc" allocator
511		designed for improved performance with threaded
512		applications.  The "phkmalloc" allocator as used up
513		before NetBSD-5.0 will be substituted.
514
515USE_KERBEROS	If "no", disables building Kerberos v5
516		support into various system utilities/libraries that
517		support it.  If ${MKKERBEROS} is "no", USE_KERBEROS
518		will also be forced to "no".
519
520USE_LDAP	If "no", disables building LDAP support into various
521		system utilities/libraries that support it.
522		If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
523
524USE_PAM		If "no", disables building PAM authentication support
525		into various system utilities/libraries that support it.
526		If ${MKPAM} is "no", USE_PAM will also be forced to "no".
527
528USE_SKEY	If "no", disables building S/key authentication
529		support into various system utilities/libraries that
530		support it.  If ${MKSKEY} is "no", USE_SKEY will
531		also be forced to "no".
532		Default: no
533
534USE_SSP		If "no", disables GCC stack protection code, which
535		detects stack overflows and aborts the program. The
536		stack protection code imposes a performance penalty
537		of about 5%.
538		Default: "no", unless "USE_FORT" is set to "yes"
539
540NOSSP		Don't compile with stack protector during build.
541		It is set internally for standalone programs.
542
543USE_FORT 	If "yes" turns on substitute wrappers for commonly used
544		functions that do not do bounds checking regularly, but
545		they could in some cases by using the gcc
546		__builtin_object_size() function to determine the buffer
547		size where it is known and detect buffer overflows.
548		These substitute functions are in /usr/include/ssp.
549		Default: depends on the part of the source tree
550
551NOFORT		Don't compile with substitute wrappers during build.
552		It is set internally for standalone programs.
553
554USE_YP		If "no", disables building YP (NIS) support into
555		various system utilities/libraries that support it.
556		If ${MKYP} is "no", USE_YP will also be forced to "no".
557
558USE_PIGZGZIP	If "no", use the host "gzip" program to compress things.
559		Otherwise, build tools/pigz, set TOOL_GZIP=${TOOL_PIGZ},
560		and use nbpigz to compress things.
561		Default: "no".
562
563COPTS.lib<lib>
564OBJCOPTS.lib<lib>
565LDADD.lib<lib>
566CPPFLAGS.lib<lib>
567CXXFLAGS.lib<lib>
568COPTS.<prog>
569OBJCCOPTS.<prog>
570LDADD.<prog>
571CPPFLAGS.<prog>
572CXXFLAGS.<prog>	These provide a way to specify additions to the associated
573		variables in a way that applies only to a particular library
574		or program.  <lib> corresponds to the LIB variable set in
575		the library's makefile.  <prog> corresponds to either PROG
576		or PROG_CXX (if set).  For example, if COPTS.libcrypto is
577		set to "-g", "-g" will be added to COPTS only when compiling
578		the crypto library.
579
580The active compiler is selected using the following variables:
581AVAILABLE_COMPILER
582		List of available compiler suites.  Processed in order
583		for selecting the active compiler for each frontend.
584HAVE_PCC	If defined, PCC is present and enabled.
585HAVE_LLVM	If defined, LLVM/Clang is present and enabled.
586UNSUPPORTED_COMPILER.xxx
587		If defined, the support for compiler "xxx" is disabled.
588
589For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist:
590ACTIVE_CC	Active compile suite for the CC frontend.
591SUPPORTED_CC	Compile suite with support for the CC frontend.
592TOOL_CC.xxx	Path to the CC frontend for compiler "xxx"
593
594=-=-=-=-=   sys.mk   =-=-=-=-=
595
596The include file <sys.mk> has the default rules for all makes, in the BSD
597environment or otherwise.  You probably don't want to touch this file.
598
599=-=-=-=-=   bsd.own.mk   =-=-=-=-=
600
601The include file <bsd.own.mk> contains source tree configuration parameters,
602such as the owners, groups, etc. for both manual pages and binaries, and
603a few global "feature configuration" parameters.
604
605It has no targets.
606
607To get system-specific configuration parameters, <bsd.own.mk> will try to
608include the file specified by the "MAKECONF" variable.  If MAKECONF is not
609set, or no such file exists, the system make configuration file, /etc/mk.conf
610is included.  These files may define any of the variables described below.
611
612<bsd.own.mk> sets the following variables, if they are not already defined
613(defaults are in brackets):
614
615NETBSDSRCDIR	Top of the NetBSD source tree.
616		If _SRC_TOP_ != "", that will be used as the default,
617		otherwise BSDSRCDIR will be used as the default.
618		Various makefiles within the NetBSD source tree will
619		use this to reference the top level of the source tree.
620
621_SRC_TOP_	Top of the system source tree, as determined by <bsd.own.mk>
622		based on the presence of tools/ and build.sh.  This variable
623		is "internal" to <bsd.own.mk>, although its value is only
624		determined once and then propagated to all sub-makes.
625
626_NETBSD_VERSION_DEPENDS
627		A list of files which contain information about
628		the version of the NetBSD being built.  This is
629		defined only if the current directory appears
630		to be inside a NetBSD source tree.  The list of
631		files includes ${NETBSDSRCDIR}/sys/sys/param.h
632		(which contains the kernel version number),
633		${NETBSDSRCDIR}/sys/conf/newvers.sh and
634		${NETBSDSRCDIR}/sys/conf/osrelease.sh (which
635		interpret the information in sys/sys/param.h), and
636		${_SRC_TOP_OBJ_}/params (which is an optional file,
637		created by "make build" in ${_SRC_TOP_}/Makefile,
638		containing all the variables that may influence the
639		build).
640
641		Targets that depend on the NetBSD version, or on
642		variables defined at build time, can declare a
643		dependency on ${_NETBSD_VERSION_DEPENDS}, like this:
644
645			version.c: ${_NETBSD_VERSION_DEPENDS}
646				commands to create version.c
647
648BSDSRCDIR	The real path to the system sources, so that 'make obj'
649		will work correctly.  [/usr/src]
650
651BSDOBJDIR	The real path to the system 'obj' tree, so that 'make obj'
652		will work correctly.  [/usr/obj]
653
654BINGRP		Binary group.  [wheel]
655
656BINOWN		Binary owner.  [root]
657
658BINMODE		Binary mode.  [555]
659
660NONBINMODE	Mode for non-executable files.  [444]
661
662MANDIR		Base path for manual installation.  [/usr/share/man/cat]
663
664MANGRP		Manual group.  [wheel]
665
666MANOWN		Manual owner.  [root]
667
668MANMODE		Manual mode.  [${NONBINMODE}]
669
670MANINSTALL	Manual installation type.  Space separated list:
671			catinstall, htmlinstall, maninstall
672		Default value derived from MKCATPAGES and MKHTML.
673
674LDSTATIC	Control program linking; if set blank, link everything
675		dynamically.  If set to "-static", link everything statically.
676		If not set, programs link according to their makefile.
677
678LIBDIR		Base path for library installation.  [/usr/lib]
679
680LINTLIBDIR	Base path for lint(1) library installation.  [/usr/libdata/lint]
681
682LIBGRP		Library group.  [${BINGRP}]
683
684LIBOWN		Library owner.  [${BINOWN}]
685
686LIBMODE		Library mode.  [${NONBINMODE}]
687
688DOCDIR		Base path for system documentation (e.g. PSD, USD, etc.)
689	        installation.  [/usr/share/doc]
690
691DOCGRP		Documentation group.  [wheel]
692
693DOCOWN		Documentation owner.  [root]
694
695DOCMODE		Documentation mode.  [${NONBINMODE}]
696
697GZIP_N_FLAG	Flags to pass to TOOL_GZIP to prevent it from inserting
698		file names or timestamps in the compressed output.
699		[-n, or -nT when TOOL_GZIP is really TOOL_PIGZ]
700
701NLSDIR		Base path for Native Language Support files installation.
702		[/usr/share/nls]
703
704NLSGRP		Native Language Support files group.  [wheel]
705
706NLSOWN		Native Language Support files owner.  [root]
707
708NLSMODE		Native Language Support files mode.  [${NONBINMODE}]
709
710X11SRCDIR	The path to the xsrc tree.  [${NETBSDSRCDIR}/../xsrc,
711		if that exists; otherwise /usr/xsrc]
712
713X11SRCDIR.local	The path to the local X11 src tree.  [${X11SRCDIR}/local]
714
715X11SRCDIR.lib<package>
716X11SRCDIR.<package>
717		The path to the xorg src tree for the specificed package>.
718		[${X11SRCDIR}/external/mit/xorg/<package>/dist]
719
720X11ROOTDIR	Root directory of the X11 installation.  [/usr/X11R7]
721
722X11BINDIR	X11 bin directory.  [${X11ROOTDIR}/bin]
723
724X11FONTDIR	X11 font directory.  [${X11ROOTDIR}/lib/X11/fonts]
725
726X11INCDIR	X11 include directory.  [${X11ROOTDIR}/include]
727
728X11LIBDIR	X11 lib/x11 (config) directory.  [${X11ROOTDIR}/lib/X11]
729
730X11MANDIR	X11 manual directory.  [${X11ROOTDIR}/man]
731
732X11USRLIBDIR	X11 library directory.  [${X11ROOTDIR}/lib]
733
734STRIPFLAG	The flag passed to the install program to cause the binary
735		to be stripped.  This is to be used when building your
736		own install script so that the entire system can be made
737		stripped/not-stripped using a single knob.  []
738
739COPY		The flag passed to the install program to cause the binary
740		to be copied rather than moved.  This is to be used when
741		building our own install script so that the entire system
742		can either be installed with copies, or with moves using
743		a single knob.  [-c]
744
745MAKEDIRTARGETENV
746		Environment variables passed to the child make process
747		invoked by MAKEDIRTARGET.
748
749MAKEDIRTARGET dir target [params]
750		Runs "cd $${dir} && ${MAKE} [params] $${target}",
751		displaying a "pretty" message whilst doing so.
752
753RELEASEMACHINEDIR
754		Subdirectory used below RELEASEDIR when building
755		a release.  [${MACHINE}]
756
757RELEASEMACHINE	Subdirectory or path component used for the following
758		paths:
759			distrib/${RELEASEMACHINE}
760			distrib/notes/${RELEASEMACHINE}
761			etc/etc.${RELEASEMACHINE}
762		Used when building a release.  [${MACHINE}]
763
764Additionally, the following variables may be set by <bsd.own.mk> or in a
765make configuration file to modify the behavior of the system build
766process (default values are in brackets along with comments, if set by
767<bsd.own.mk>):
768
769USETOOLS	Indicates whether the tools specified by ${TOOLDIR} should
770		be used as part of a build in progress.
771		Supported values:
772
773		yes	Use the tools from TOOLDIR.
774			Must be set to this if cross-compiling.
775
776		no	Do not use the tools from TOOLDIR, but refuse to
777			build native compilation tool components that are
778			version-specific for that tool.
779
780		never	Do not use the tools from TOOLDIR, even when
781			building native tool components.  This is similar to
782			the traditional NetBSD build method, but does not
783			verify that the compilation tools in use are
784			up-to-date enough in order to build the tree
785			successfully.  This may cause build or runtime
786			problems when building the whole NetBSD source tree.
787
788		Default: "yes" if building all or part of a whole NetBSD
789		source tree (detected automatically); "no" otherwise
790		(to preserve traditional semantics of the <bsd.*.mk>
791		make(1) include files).
792
793OBJECT_FMT	Object file format.  [set to "ELF" on architectures that
794		use ELF -- currently all architectures].
795
796TOOLCHAIN_MISSING
797		If not "no", this indicates that the platform being built
798		does not have a working in-tree toolchain.  If the
799		${MACHINE_ARCH} in question falls into this category,
800		TOOLCHAIN_MISSING is conditionally assigned the value "yes".
801		Otherwise, the variable is unconditionally assigned the
802		value "no".
803		If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are
804		unconditionally assigned the value "no".
805
806EXTERNAL_TOOLCHAIN
807		This variable is not directly set by <bsd.own.mk>, but
808		including <bsd.own.mk> is the canonical way to gain
809		access to this variable.  The variable should be defined
810		either in the user's environment or in the user's mk.conf
811		file.  If defined, this variable indicates the root of
812		an external toolchain which will be used to build the
813		tree.  For example, if a platform is a ${TOOLCHAIN_MISSING}
814		platform, EXTERNAL_TOOLCHAIN can be used to re-enable the
815		cross-compile framework.
816
817		If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally
818		assigned the value "no", since the external version of the
819		compiler may not be able to build the library components of
820		the in-tree compiler.
821
822		This variable should be used in conjunction with an appropiate
823		HAVE_GCC or HAVE_LLVM setting to control the compiler flags.
824
825		NOTE: This variable is not yet used in as many places as
826		it should be.  Expect the exact semantics of this variable
827		to change in the short term as parts of the cross-compile
828		framework continue to be cleaned up.
829
830The following variables are defined to commands to perform the
831appropriate operation, with the default in [brackets].  Note that
832the defaults change if USETOOLS == "yes":
833
834TOOL_AMIGAAOUT2BB	aout to Amiga bootblock converter.  [amiga-aout2bb]
835
836TOOL_AMIGAELF2BB	ELF to Amiga bootblock converter.  [amiga-elf2bb]
837
838TOOL_AMIGATXLT		Amige assembly language format translator.  [amiga-txlt]
839
840TOOL_ASN1_COMPILE	ASN1 compiler.  [asn1_compile]
841
842TOOL_AWK		Pattern-directed scanning/processing language.  [awk]
843
844TOOL_CAP_MKDB		Create capability database.  [cap_mkdb]
845
846TOOL_CAT		Concatenate and print files.  [cat]
847
848TOOL_CKSUM		Display file checksums.  [cksum]
849
850TOOL_COMPILE_ET		Error table compiler.  [compile_et]
851
852TOOL_CONFIG		Build kernel compilation directories.  [config]
853
854TOOL_CRUNCHGEN		Generate crunched binary build environment.  [crunchgen]
855
856TOOL_CTAGS		Create a tags file.  [ctags]
857
858TOOL_DB			Manipulate db(3) databases.  [db]
859
860TOOL_DISKLABEL		Read and write disk pack label.  [disklabel]
861
862TOOL_EQN		Format equations for groff.  [eqn]
863
864TOOL_FDISK		MS-DOS partition maintenance program.  [fdisk]
865
866TOOL_FGEN		IEEE 1275 Open Firmware FCode Tokenizer.  [fgen]
867
868TOOL_GENASSYM		Generate constants for assembly files.  [genassym]
869
870TOOL_GENCAT		Generate NLS message catalogs.  [gencat]
871
872TOOL_GMAKE		GNU make utility.  [gmake]
873
874TOOL_GREP		Print lines matching a pattern.  [grep]
875
876TOOL_GROFF		Front end for groff document formatting system.  [groff]
877
878TOOL_GZIP		Compression/decompression tool.  [gzip]
879
880TOOL_GZIP_N		Same as TOOL_GZIP, plus a command line option to
881			prevent it from inserting file names or timestamps
882			into the compressed output.
883			[${TOOL_GZIP} ${GZIP_N_FLAG}]
884
885TOOL_HEXDUMP		Ascii, decimal, hexadecimal, octal dump.  [hexdump]
886
887TOOL_HP300MKBOOT	Make bootable image for hp300.  [hp300-mkboot]
888
889TOOL_HPPAMKBOOT		Make bootable image for hppa.  [hppa-mkboot]
890
891TOOL_INDXBIB		Make bibliographic database's inverted index.  [indxbib]
892
893TOOL_INSTALLBOOT	Install disk bootstrap software.  [installboot]
894
895TOOL_INSTALL_INFO	Update info/dir entries.  [install-info]
896
897TOOL_JOIN		Relational database operator.  [join]
898
899TOOL_M4			M4 macro language processor.  [m4]
900
901TOOL_MACPPCFIXCOFF	Fix up xcoff headers for macppc.  [macppc-fixcoff]
902
903TOOL_MAKEFS		Create file system image from directory tree.  [makefs]
904
905TOOL_MAKEINFO		Translate Texinfo documents.  [makeinfo]
906
907TOOL_MAKEWHATIS		Create a whatis.db database.  [makewhatis]
908
909TOOL_MDSETIMAGE		Set kernel RAM disk image.  [mdsetimage]
910
911TOOL_MENUC		Menu compiler.  [menuc]
912
913TOOL_MIPSELF2ECOFF	Convert ELF-format executable to ECOFF for mips.
914			[mips-elf2ecoff]
915
916TOOL_MKCSMAPPER		Make charset mapping table.  [mkcsmapper]
917
918TOOL_MKESDB		Make encoding scheme database.  [mkesdb]
919
920TOOL_MKLOCALE		Make LC_CTYPE locale files.  [mklocale]
921
922TOOL_MKMAGIC		Create database for file(1).  [file]
923
924TOOL_MKNOD		Make device special file.  [mknod]
925
926TOOL_MKTEMP		Make (unique) temporary file name.  [mktemp]
927
928TOOL_MSGC		Simple message list compiler.  [msgc]
929
930TOOL_MTREE		Map a directory hierarchy.  [mtree]
931
932TOOL_NCDCS		Turn ELF kernel into a NCD firmware image. [ncdcs]
933
934TOOL_PAX		Manipulate file archives and copy directories.  [pax]
935
936TOOL_PIC		Compile pictures for groff.  [pic]
937
938TOOL_PIGZ		Parallel compressor.  [pigz]
939
940TOOL_POWERPCMKBOOTIMAGE	Make bootable image for powerpc.  [powerpc-mkbootimage]
941
942TOOL_PWD_MKDB		Generate the password databases.  [pwd_mkdb]
943
944TOOL_REFER		Preprocess bibliographic references for groff.  [refer]
945
946TOOL_ROFF_ASCII		Generate ASCII groff output.  [nroff]
947
948TOOL_ROFF_DVI		Generate DVI groff output.  [${TOOL_GROFF} -Tdvi]
949
950TOOL_ROFF_HTML		Generate HTML groff output.
951			[${TOOL_GROFF} -Tlatin1 -mdoc2html]
952
953TOOL_ROFF_PS		Generate PS groff output.  [${TOOL_GROFF} -Tps]
954
955TOOL_ROFF_RAW		Generate "raw" groff output.  [${TOOL_GROFF} -Z]
956
957TOOL_RPCGEN		Remote Procedure Call (RPC) protocol compiler.  [rpcgen]
958
959TOOL_SED		Stream editor.  [sed]
960
961TOOL_SOELIM		Eliminate .so's from groff input.  [soelim]
962
963TOOL_SPARKCRC		Generate a crc suitable for use in a sparkive file.
964			[sparkcrc]
965
966TOOL_STAT		Display file status.  [stat]
967
968TOOL_STRFILE		Create a random access file for storing strings.
969			[strfile]
970
971TOOL_SUNLABEL		Read or modify a SunOS disk label.  [sunlabel]
972
973TOOL_TBL		Format tables for groff.  [tbl]
974
975TOOL_UUDECODE		Uudecode a binary file.  [uudecode]
976
977TOOL_VGRIND		Grind nice listings of programs.  [vgrind -f]
978
979TOOL_ZIC		Time zone compiler.  [zic]
980
981For each possible value of MACHINE_CPU, MACHINES.${MACHINE_CPU} contain a
982list of what ports can be built for it.  This keeps those definitions in
983centralized place.
984
985<bsd.own.mk> is generally useful when building your own Makefiles so that
986they use the same default owners etc. as the rest of the tree.
987
988
989=-=-=-=-=   bsd.clean.mk   =-=-=-=-=
990
991The include file <bsd.clean.mk> defines the clean and cleandir
992targets.  It uses the following variables:
993
994CLEANFILES	Files to remove for both the clean and cleandir targets.
995
996CLEANDIRFILES	Files to remove for the cleandir target, but not for
997		the clean target.
998
999MKCLEANSRC	Controls whether or not the clean and cleandir targets
1000		will delete files from both the object directory,
1001		${.OBJDIR}, and the source directory, ${.CURDIR}.
1002
1003		If MKCLEANSRC is set to "no", then the file names in
1004		CLEANFILES or CLEANDIRFILES are interpreted relative
1005		to the object directory, ${.OBJDIR}.  This is the
1006		traditional behaviour.
1007
1008		If MKCLEANSRC is set to "yes", then the file deletion
1009		is performed relative to both the object directory,
1010		${.OBJDIR}, and the source directory, ${.CURDIR}.  (This
1011		has no effect if ${.OBJDIR} is the same as ${.CURDIR}.)
1012		Deleting files from ${.CURDIR} is intended to remove
1013		stray output files that had been left in the source
1014		directory by an earlier build that did not use object
1015		directories.
1016
1017		The default is MKCLEANSRC=yes.  If you always build with
1018		separate object directories, and you are sure that there
1019		are no stray files in the source directories, then you
1020		may set MKCLEANSRC=no to save some time.
1021
1022MKCLEANVERIFY	Controls whether or not the clean and cleandir targets
1023		will verify that files have been deleted.
1024
1025		If MKCLEANVERIFY is set to "no", then the files will
1026		be deleted using a "rm -f" command, and its success or
1027		failure will be ignored.
1028
1029		If MKCLEANVERIFY is set to "yes", then the success of
1030		the "rm -f" command will be verified using an "ls"
1031		command.
1032
1033		The default is MKCLEANVERIFY=yes.  If you are sure that
1034		there will be no problems caused by file permissions,
1035		read-only file systems, or the like, then you may set
1036		MKCLEANVERIFY=no to save some time.
1037
1038To use the clean and cleandir targets defined in <bsd.clean.mk>, other
1039Makefiles or bsd.*.mk files should append file names to the CLEANFILES
1040or CLEANDIRFILES variables.  For example:
1041
1042	    CLEANFILES+= a.out
1043	    CLEANDIRFILES+= .depend
1044
1045	    .include <bsd.clean.mk>
1046
1047The files listed in CLEANFILES and CLEANDIRFILES must not be
1048directories, because the potential risk from running "rm -rf" commands
1049in bsd.clean.mk is considered too great.  If you want to recursively
1050delete a directory as part of "make clean" or "make cleandir" then you
1051need to provide your own target.
1052
1053=-=-=-=-=   bsd.dep.mk   =-=-=-=-=
1054
1055The include file <bsd.dep.mk> contains the default targets for building
1056.depend files.  It creates .d files from entries in SRCS and DPSRCS
1057that are C, C++, or Objective C source files, and builds .depend from the
1058.d files.  All other files in SRCS and all of DPSRCS will be used as
1059dependencies for the .d files.  In order for this to function correctly,
1060it should be .included after all other .mk files and directives that may
1061modify SRCS or DPSRCS.  It uses the following variables:
1062
1063SRCS		List of source files to build the program.
1064
1065DPSRCS		List of source files which are needed for generating
1066		dependencies, but are not needed in ${SRCS}.
1067
1068
1069=-=-=-=-=   bsd.files.mk   =-=-=-=-=
1070
1071The include file <bsd.files.mk> handles the FILES variables and is included
1072from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables:
1073
1074FILES		The list of files to install.
1075
1076CONFIGFILES	Similar semantics to FILES, except that the files
1077		are installed by the `configinstall' target,
1078		not the `install' target.
1079		The FILES* variables documented below also apply.
1080
1081FILESOWN	File owner.  [${BINOWN}]
1082
1083FILESGRP	File group.  [${BINGRP}]
1084
1085FILESMODE	File mode.  [${NONBINMODE}]
1086
1087FILESDIR	The location to install the files.
1088
1089FILESNAME	Optional name to install each file as.
1090
1091FILESOWN_<fn>	File owner of the specific file <fn>.
1092
1093FILESGRP_<fn>	File group of the specific file <fn>.
1094
1095FILESMODE_<fn>	File mode of the specific file <fn>.
1096
1097FILESDIR_<fn>	The location to install the specific file <fn>.
1098
1099FILESNAME_<fn>	Optional name to install <fn> as.
1100
1101FILESBUILD	If this variable is defined, then its value will be
1102		used as the default for all FILESBUILD_<fn> variables.
1103		Otherwise, the default will be "no".
1104
1105FILESBUILD_<fn>	A value different from "no" will add the file to the list of
1106		targets to be built by `realall'.  Users of that variable
1107		should provide a target to build the file.
1108
1109
1110BUILDSYMLINKS	List of two word items:
1111			lnsrc lntgt
1112		For each lnsrc item, create a symlink named lntgt.
1113		The lntgt symlinks are removed by the cleandir target.
1114
1115UUDECODE_FILES	List of files which are stored as <file>.uue in the source
1116		tree. Each one will be decoded with ${TOOL_UUDECODE}.
1117		The source files have a `.uue' suffix, the generated files do
1118		not.
1119
1120UUDECODE_FILES_RENAME_<fn>
1121		Rename the output from the decode to the provided name.
1122		
1123		*NOTE: These files are simply decoded, with no install or other
1124		       rule applying implicitly except being added to the clean
1125		       target.
1126
1127=-=-=-=-=   bsd.gcc.mk   =-=-=-=-=
1128
1129The include file <bsd.gcc.mk> computes various parameters related to GCC
1130support libraries.  It defines no targets.  <bsd.own.mk> MUST be included
1131before <bsd.gcc.mk>.
1132
1133The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each
1134of which need to know where to find certain GCC support libraries.
1135
1136The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable,
1137which is generally set by the user.  If EXTERNAL_TOOLCHAIN it set, then
1138the compiler is asked where to find the support libraries, otherwise the
1139support libraries are found in ${DESTDIR}/usr/lib.
1140
1141<bsd.gcc.mk> sets the following variables:
1142
1143_GCC_CRTBEGIN	The full path name to crtbegin.o.
1144
1145_GCC_CRTBEGINS	The full path name to crtbeginS.o.
1146
1147_GCC_CRTEND	The full path name to crtend.o.
1148
1149_GCC_CRTENDS	The full path name to crtendS.o.
1150
1151_GCC_LIBGCCDIR	The directory where libgcc.a is located.
1152
1153
1154=-=-=-=-=   bsd.inc.mk   =-=-=-=-=
1155
1156The include file <bsd.inc.mk> defines the includes target and uses the
1157variables:
1158
1159INCS		The list of include files.
1160
1161INCSDIR		The location to install the include files.
1162
1163INCSNAME	Target name of the include file, if only one; same as
1164		FILESNAME, but for include files.
1165
1166INCSYMLINKS	Similar to SYMLINKS in <bsd.links.mk>, except that these
1167		are installed in the 'includes' target and not the
1168		(much later) 'install' target.
1169
1170INCSNAME_<file>	The name file <file> should be installed as, if not <file>,
1171		same as FILESNAME_<file>, but for include files.
1172
1173
1174=-=-=-=-=   bsd.info.mk   =-=-=-=-=
1175
1176The include file <bsd.info.mk> is used to generate and install GNU Info
1177documentation from respective Texinfo source files.  It defines three
1178implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
1179following variables:
1180
1181TEXINFO		List of Texinfo source files.  Info documentation will
1182		consist of single files with the extension replaced by
1183		.info.
1184
1185INFOFLAGS	Flags to pass to makeinfo.  []
1186
1187
1188=-=-=-=-=   bsd.kernobj.mk   =-=-=-=-=
1189
1190The include file <bsd.kernobj.mk> defines variables related to the
1191location of kernel sources and object directories.
1192
1193KERNSRCDIR	Is the location of the top of the kernel src.
1194		[${_SRC_TOP_}/sys]
1195
1196KERNARCHDIR	Is the location of the machine dependent kernel sources.
1197		[arch/${MACHINE}]
1198
1199KERNCONFDIR	Is where the configuration files for kernels are found.
1200		[${KERNSRCDIR}/${KERNARCHDIR}/conf]
1201
1202KERNOBJDIR	Is the kernel build directory.  The kernel GENERIC for
1203		instance will be compiled in ${KERNOBJDIR}/GENERIC.
1204		The default value is
1205		${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile
1206		if it exists or the target 'obj' is being made.
1207		Otherwise the default is
1208		${KERNSRCDIR}/${KERNARCHDIR}/compile.
1209
1210It is important that Makefiles (such as those under src/distrib) that
1211wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR}
1212rather than make assumptions about the location of the compiled kernel.
1213
1214
1215=-=-=-=-=   bsd.kinc.mk   =-=-=-=-=
1216
1217The include file <bsd.kinc.mk> defines the many targets (includes,
1218subdirectories, etc.), and is used by kernel makefiles to handle
1219include file installation.  It is intended to be included alone, by
1220kernel Makefiles.  It uses similar variables to <bsd.inc.mk>.
1221Please see <bsd.kinc.mk> for more details, and keep the documentation
1222in that file up to date.
1223
1224=-=-=-=-=   bsd.syscall.mk =-=-=-=-=
1225
1226The include file <bsd.syscall.mk> contains the logic to create syscall
1227files for various emulations. It includes <bsd.kinc.mk> to handle the
1228rest of the targets.
1229
1230=-=-=-=-=   bsd.lib.mk   =-=-=-=-=
1231
1232The include file <bsd.lib.mk> has support for building libraries.  It has
1233the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
1234includes, install, lint, and tags.  Additionally, it has a checkver target
1235which checks for installed shared object libraries whose version is greater
1236that the version of the source. It has a limited number of suffixes,
1237consistent with the current needs of the BSD tree.  <bsd.lib.mk> includes
1238<bsd.shlib.mk> to get shared library parameters.
1239
1240It sets/uses the following variables:
1241
1242LIB		The name of the library to build.
1243
1244LIBDIR		Target directory for libraries.
1245
1246MKARZERO	Normally, ar(1) sets the timestamps, uid, gid and
1247		permissions in files inside its archives to those of
1248		the file it was fed. This leads to non-reproducible
1249		builds. If MKARZERO is set to "yes" (default is the
1250		same as MKREPRO, or "no" if MKREPRO is not defined),
1251		then the "D" flag is passed to ar, causing the
1252		timestamp, uid and gid to be zeroed and the file
1253		permissions to be set to 644. This allows .a files
1254		from different builds to be bit identical.
1255
1256SHLIBINSTALLDIR	Target directory for shared libraries if ${USE_SHLIBDIR}
1257		is not "no".
1258
1259SHLIB_MAJOR
1260SHLIB_MINOR
1261SHLIB_TEENY	Major, minor, and teeny version numbers of shared library
1262
1263USE_SHLIBDIR	If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR}
1264		as the path to install shared libraries to.
1265		USE_SHLIBDIR must be defined before <bsd.own.mk> is included.
1266		Default: no
1267
1268LIBISMODULE	If not "no", install as ${LIB}.so (without the "lib" prefix),
1269		and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no
1270		MKPROFILE=no MKSTATICLIB=no".
1271		Default: no
1272
1273LIBISPRIVATE	If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no
1274		MKPROFILE=no", and don't install the (.a) library.
1275		This is useful for "build only" helper libraries.
1276		Default: no
1277
1278LIBISCXX	If not "no", Use ${CXX} instead of ${CC} to link
1279		shared libraries.
1280		This is useful for C++ libraries.
1281		Default: no
1282
1283LINTLIBDIR	Target directory for lint libraries.
1284
1285LIBGRP		Library group.
1286
1287LIBOWN		Library owner.
1288
1289LIBMODE		Library mode.
1290
1291LDADD		Additional loader objects.
1292
1293MAN		The manual pages to be installed (use a .1 - .9 suffix).
1294
1295NOCHECKVER_<library>
1296NOCHECKVER	If set, disables checking for installed shared object
1297		libraries with versions greater than the source.  A
1298		particular library name, without the "lib" prefix, may
1299		be appended to the variable name to disable the check for
1300		only that library.
1301
1302SRCS		List of source files to build the library.  Suffix types
1303		.s, .c, and .f are supported.  Note, .s files are preferred
1304		to .c files of the same name.  (This is not the default for
1305		versions of make.)
1306
1307LIBDPLIBS	A list of the tuples:
1308			libname  path-to-srcdir-of-libname
1309
1310		For each tuple;
1311		     *	LIBDO.libname contains the .OBJDIR of the library
1312			`libname', and if it is not set it is determined
1313			from the srcdir and added to MAKEOVERRIDES (the
1314			latter is to allow for build time optimization).
1315		     *	LDADD gets  -L${LIBDO.libname} -llibname    added.
1316		     *	DPADD gets  ${LIBDO.libname}/liblibname.so  or
1317				    ${LIBDO.libname}/liblibname.a   added.
1318
1319		The special value "_external" for LIBDO.lib makes the
1320		build system to assume the library comes from outside
1321		of the NetBSD source tree and only causes -llibname
1322		to be added to LDADD.
1323
1324		This variable may be used for individual libraries, as
1325		well as in parent directories to cache common libraries
1326		as a build-time optimization.
1327
1328The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
1329if it exists, as well as the include file <bsd.man.mk>.
1330
1331It has rules for building profiled objects; profiled libraries are
1332built by default.
1333
1334Libraries are ranlib'd when made.
1335
1336
1337=-=-=-=-=   bsd.links.mk   =-=-=-=-=
1338
1339The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
1340and is included from from <bsd.lib.mk> and <bsd.prog.mk>.
1341
1342LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log
1343is used. The defaults may be modified by other bsd.*.mk files which
1344include bsd.links.mk.  In the future, these variables may be replaced
1345by a method for explicitly recording hard links in a metadata log.
1346
1347LINKS		The list of hard links, consisting of pairs of paths:
1348			source-file target-file
1349		${DESTDIR} is prepended to both paths before linking.
1350		For example, to link /bin/test and /bin/[, use:
1351			LINKS=/bin/test /bin/[
1352
1353CONFIGLINKS	Similar semantics to LINKS, except that the links
1354		are installed by the `configinstall' target,
1355		not the `install' target.
1356
1357SYMLINKS	The list of symbolic links, consisting of pairs of paths:
1358			source-file target-file
1359		${DESTDIR} is only prepended to target-file before linking.
1360		For example, to symlink /usr/bin/tar to /bin/tar resulting
1361		in ${DESTDIR}/usr/bin/tar -> /bin/tar:
1362			SYMLINKS=/bin/tar /usr/bin/tar
1363
1364CONFIGSYMLINKS	Similar semantics to SYMLINKS, except that the symbolic links
1365		are installed by the `configinstall' target,
1366		not the `install' target.
1367
1368LINKSOWN	Link owner.  [${BINOWN}]
1369
1370LINKSGRP	Link group.  [${BINGRP}]
1371
1372LINKSMODE	Link mode.  [${NONBINMODE}]
1373
1374LINKSOWN_<fn>	Link owner of the specific file <fn>.
1375
1376LINKSGRP_<fn>	Link group of the specific file <fn>.
1377
1378LINKSMODE_<fn>	Link mode of the specific file <fn>.
1379
1380
1381=-=-=-=-=   bsd.man.mk   =-=-=-=-=
1382
1383The include file <bsd.man.mk> handles installing manual pages and their
1384links.
1385
1386It has a three targets:
1387
1388	catinstall:
1389		Install the preformatted manual pages and their links.
1390	htmlinstall:
1391		Install the HTML manual pages and their links.
1392	maninstall:
1393		Install the manual page sources and their links.
1394
1395It sets/uses the following variables:
1396
1397MANDIR		Base path for manual installation.
1398
1399MANGRP		Manual group.
1400
1401MANOWN		Manual owner.
1402
1403MANMODE		Manual mode.
1404
1405MANSUBDIR	Subdirectory under the manual page section, i.e. "/vax"
1406		or "/tahoe" for machine specific manual pages.
1407
1408MAN		The manual pages to be installed (use a .1 - .9 suffix).
1409
1410MLINKS		List of manual page links (using a .1 - .9 suffix).  The
1411		linked-to file must come first, the linked file second,
1412		and there may be multiple pairs.
1413
1414The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
1415it exists.
1416
1417
1418=-=-=-=-=   bsd.obj.mk   =-=-=-=-=
1419
1420The include file <bsd.obj.mk> defines targets related to the creation
1421and use of separated object and source directories.
1422
1423If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses
1424${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if
1425it exists.  Otherwise make(1) looks for the existence of a
1426subdirectory (or a symlink to a directory) of the source directory
1427into which built targets should be placed.  If an environment variable
1428named MAKEOBJDIR is set, make(1) uses its value as the name of the
1429object directory; failing that, make first looks for a subdirectory
1430named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj".
1431
1432Object directories are not created automatically by make(1) if they
1433don't exist; you need to run a separate "make obj".  (This will happen
1434during a top-level build if "MKOBJDIRS" is set to a value other than
1435"no").  When the source directory is a subdirectory of ${BSDSRCDIR} --
1436and this is determined by a simple string prefix comparison -- object
1437directories are created in a separate object directory tree, and a
1438symlink to the object directory in that tree is created in the source
1439directory; otherwise, "make obj" assumes that you're not in the main
1440source tree and that it's not safe to use a separate object tree.
1441
1442Several variables used by <bsd.obj.mk> control exactly what
1443directories and links get created during a "make obj":
1444
1445MAKEOBJDIR	If set, this is the component name of the object
1446		directory.
1447
1448OBJMACHINE	If this is set but MAKEOBJDIR is not set, creates
1449		object directories or links named "obj.${MACHINE}";
1450		otherwise, just creates ones named "obj".
1451
1452USR_OBJMACHINE  If set, and the current directory is a subdirectory of
1453		${BSDSRCDIR}, create object directory in the
1454		corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
1455		otherwise, create it in the corresponding subdirectory
1456		of ${BSDOBJDIR}
1457
1458BUILDID		If set, the contents of this variable are appended
1459		to the object directory name.  If OBJMACHINE is also
1460		set, ".${BUILDID}" is added after ".${MACHINE}".
1461
1462
1463=-=-=-=-=   bsd.prog.mk   =-=-=-=-=
1464
1465The include file <bsd.prog.mk> handles building programs from one or
1466more source files, along with their manual pages.  It has a limited number
1467of suffixes, consistent with the current needs of the BSD tree.
1468<bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters.
1469
1470It has eight targets:
1471
1472	all:
1473		build the program and its manual page.  This also
1474		creates a GDB initialization file (.gdbinit) in
1475		the objdir.  The .gdbinit file sets the shared library
1476		prefix to ${DESTDIR} to facilitate cross-debugging.
1477	clean:
1478		remove the program, any object files and the files a.out,
1479		Errs, errs, mklog, and ${PROG}.core.
1480	cleandir:
1481		remove all of the files removed by the target clean, as
1482		well as .depend, tags, and any manual pages.
1483		`distclean' is a synonym for `cleandir'.
1484	depend:
1485		make the dependencies for the source files, and store
1486		them in the file .depend.
1487	includes:
1488		install any header files.
1489	install:
1490		install the program and its manual pages; if the Makefile
1491		does not itself define the target install, the targets
1492		beforeinstall and afterinstall may also be used to cause
1493		actions immediately before and after the install target
1494		is executed.
1495	lint:
1496		run lint on the source files
1497	tags:
1498		create a tags file for the source files.
1499
1500It sets/uses the following variables:
1501
1502BINGRP		Binary group.
1503
1504BINOWN		Binary owner.
1505
1506BINMODE		Binary mode.
1507
1508CLEANDIRFILES	Additional files to remove for the cleandir target.
1509
1510CLEANFILES	Additional files to remove for the clean and cleandir targets.
1511
1512CONFIGOPTS	Additional flags to config(1) when building kernels.
1513
1514COPTS		Additional flags to the compiler when creating C objects.
1515
1516COPTS.<fn>	Additional flags to the compiler when creating the
1517		C objects for <fn>.
1518		For <fn>.[ly], "<fn>.c" must be used.
1519
1520CPUFLAGS	Additional flags to the compiler/assembler to select
1521		CPU instruction set options, CPU tuning options, etc.
1522
1523CPUFLAGS.<fn>	Additional flags to the compiler/assembler for <fn>.
1524		For <fn>.[ly], "<fn>.c" must be used.
1525
1526CPPFLAGS	Additional flags to the C pre-processor.
1527
1528CPPFLAGS.<fn>	Additional flags to the C pre-processor for <fn>.
1529		For <fn>.[ly], "<fn>.c" must be used.
1530
1531GDBINIT		List of GDB initialization files to add to "source"
1532		directives in the .gdbinit file that is created in the
1533		objdir.
1534
1535LDADD		Additional loader objects.  Usually used for libraries.
1536		For example, to load with the compatibility and utility
1537		libraries, use:
1538
1539			LDADD+=-lutil -lcompat
1540
1541LDFLAGS		Additional linker flags (passed to ${CC} during link).
1542
1543LINKS		See <bsd.links.mk>
1544
1545OBJCOPTS	Additional flags to the compiler when creating ObjC objects.
1546
1547OBJCOPTS.<fn>	Additional flags to the compiler when creating the
1548		ObjC objects for <fn>.
1549		For <fn>.[ly], "<fn>.c" must be used.
1550
1551SYMLINKS	See <bsd.links.mk>
1552
1553MAN		Manual pages (should end in .1 - .9).  If no MAN variable is
1554		defined, "MAN=${PROG}.1" is assumed.
1555
1556PAXCTL_FLAGS	If defined, run paxctl(1) on the program binary after link
1557		time, with the value of this variable as args to paxctl(1).
1558
1559PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS.
1560
1561PROG		The name of the program to build.  If not supplied, nothing
1562		is built.
1563
1564PROG_CXX	If defined, the name of the program to build.  Also
1565		causes <bsd.prog.mk> to link the program with the C++
1566		compiler rather than the C compiler.  PROG_CXX overrides
1567		the value of PROG if PROG is also set.
1568
1569PROGNAME	The name that the above program will be installed as, if
1570		different from ${PROG}.
1571
1572SRCS		List of source files to build the program.  If SRCS is not
1573		defined, it's assumed to be ${PROG}.c.
1574
1575DPSRCS		List of source files which are needed for generating
1576		dependencies, but are not needed in ${SRCS}.
1577
1578DPADD		Additional dependencies for the program.  Usually used for
1579		libraries.  For example, to depend on the compatibility and
1580		utility libraries use:
1581
1582			DPADD+=${LIBCOMPAT} ${LIBUTIL}
1583
1584		The following system libraries are predefined for DPADD:
1585
1586		LIBARCHIVE?=	${DESTDIR}/usr/lib/libarchive.a
1587		LIBASN1?=	${DESTDIR}/usr/lib/libasn1.a
1588		LIBATF_C?=	${DESTDIR}/usr/lib/libatf-c.a
1589		LIBATF_CXX?=	${DESTDIR}/usr/lib/libatf-c++.a
1590		LIBBIND9?=	${DESTDIR}/usr/lib/libbind9.a
1591		LIBBLUETOOTH?=	${DESTDIR}/usr/lib/libbluetooth.a
1592		LIBBSDMALLOC?=	${DESTDIR}/usr/lib/libbsdmalloc.a
1593		LIBBZ2?=	${DESTDIR}/usr/lib/libbz2.a
1594		LIBC?=		${DESTDIR}/usr/lib/libc.a
1595		LIBCOMPAT?=	${DESTDIR}/usr/lib/libcompat.a
1596		LIBCOM_ERR?=	${DESTDIR}/usr/lib/libcom_err.a
1597		LIBCRT0?=	${DESTDIR}/usr/lib/crt0.o
1598		LIBCRTI?=	${DESTDIR}/usr/lib/crti.o
1599		LIBCRYPT?=	${DESTDIR}/usr/lib/libcrypt.a
1600		LIBCRYPTO?=	${DESTDIR}/usr/lib/libcrypto.a
1601		LIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
1602		LIBC_PIC?=	${DESTDIR}/usr/lib/libc_pic.a
1603		LIBDBM?=	${DESTDIR}/usr/lib/libdbm.a
1604		LIBDES?=	${DESTDIR}/usr/lib/libdes.a
1605		LIBDNS?=	${DESTDIR}/usr/lib/libdns.a
1606		LIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
1607		LIBEVENT?=	${DESTDIR}/usr/lib/libevent.a
1608		LIBEVENT_OPENSSL?=	${DESTDIR}/usr/lib/libevent_openssl.a
1609		LIBEVENT_PTHREADS?=	${DESTDIR}/usr/lib/libevent_pthreads.a
1610		LIBEXECINFO?=	${DESTDIR}/usr/lib/libexecinfo.a
1611		LIBEXPAT?=	${DESTDIR}/usr/lib/libexpat.a
1612		LIBFETCH?=	${DESTDIR}/usr/lib/libfetch.a
1613		LIBFORM?=	${DESTDIR}/usr/lib/libform.a
1614		LIBFL?=		${DESTDIR}/usr/lib/libfl.a
1615		LIBG2C?=	${DESTDIR}/usr/lib/libg2c.a
1616		LIBGCC?=	${DESTDIR}/usr/lib/libgcc.a
1617		LIBGNUMALLOC?=	${DESTDIR}/usr/lib/libgnumalloc.a
1618		LIBGSSAPI?=	${DESTDIR}/usr/lib/libgssapi.a
1619		LIBHDB?=	${DESTDIR}/usr/lib/libhdb.a
1620		LIBHEIMBASE?=	${DESTDIR}/usr/lib/libheimbase.a
1621		LIBHEIMNTLM?=	${DESTDIR}/usr/lib/libheimntlm.a
1622		LIBHX500?=	${DESTDIR}/usr/lib/libhx500.a
1623		LIBINTL?=	${DESTDIR}/usr/lib/libintl.a
1624		LIBIPSEC?=	${DESTDIR}/usr/lib/libipsec.a
1625		LIBISC?=	${DESTDIR}/usr/lib/libisc.a
1626		LIBISCCC?=	${DESTDIR}/usr/lib/libisccc.a
1627		LIBISCFG?=	${DESTDIR}/usr/lib/libiscfg.a
1628		LIBKADM5CLNT?=	${DESTDIR}/usr/lib/libkadm5clnt.a
1629		LIBKADM5SRV?=	${DESTDIR}/usr/lib/libkadm5srv.a
1630		LIBKAFS?=	${DESTDIR}/usr/lib/libkafs.a
1631		LIBKRB5?=	${DESTDIR}/usr/lib/libkrb5.a
1632		LIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
1633		LIBL?=		${DESTDIR}/usr/lib/libl.a
1634		LIBLBER?=	${DESTDIR}/usr/lib/liblber.a
1635		LIBLDAP?=	${DESTDIR}/usr/lib/libldap.a
1636		LIBLDAP_R?=	${DESTDIR}/usr/lib/libldap_r.a
1637		LIBLUA?=	${DESTDIR}/usr/lib/liblua.a
1638		LIBLUTOK?=	${DESTDIR}/usr/lib/liblutok.a
1639		LIBLWRES?=	${DESTDIR}/usr/lib/liblwres.a
1640		LIBM?=		${DESTDIR}/usr/lib/libm.a
1641		LIBMAGIC?=	${DESTDIR}/usr/lib/libmagic.a
1642		LIBMENU?=	${DESTDIR}/usr/lib/libmenu.a
1643		LIBOBJC?=	${DESTDIR}/usr/lib/libobjc.a
1644		LIBOSSAUDIO?=	${DESTDIR}/usr/lib/libossaudio.a
1645		LIBPAM?=	${DESTDIR}/usr/lib/libpam.a
1646		LIBPANEL?=	${DESTDIR}/usr/lib/libpanel.a
1647		LIBPCAP?=	${DESTDIR}/usr/lib/libpcap.a
1648		LIBPCI?=	${DESTDIR}/usr/lib/libpci.a
1649		LIBPOSIX?=	${DESTDIR}/usr/lib/libposix.a
1650		LIBPTHREAD?=	${DESTDIR}/usr/lib/libpthread.a
1651		LIBPUFFS?=	${DESTDIR}/usr/lib/libpuffs.a
1652		LIBQUOTA?=	${DESTDIR}/usr/lib/libquota.a
1653		LIBRADIUS?=	${DESTDIR}/usr/lib/libradius.a
1654		LIBREFUSE?=	${DESTDIR}/usr/lib/librefuse.a
1655		LIBRESOLV?=	${DESTDIR}/usr/lib/libresolv.a
1656		LIBRMT?=	${DESTDIR}/usr/lib/librmt.a
1657		LIBROKEN?=	${DESTDIR}/usr/lib/libroken.a
1658		LIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
1659		LIBRT?=		${DESTDIR}/usr/lib/librt.a
1660		LIBRUMP?=	${DESTDIR}/usr/lib/librump.a
1661		LIBRUMPFS_CD9660FS?=${DESTDIR}/usr/lib/librumpfs_cd9660fs.a
1662		LIBRUMPFS_EFS?=	${DESTDIR}/usr/lib/librumpfs_efs.a
1663		LIBRUMPFS_EXT2FS?=${DESTDIR}/usr/lib/librumpfs_ext2fs.a
1664		LIBRUMPFS_FFS?=	${DESTDIR}/usr/lib/librumpfs_ffs.a
1665		LIBRUMPFS_HFS?=	${DESTDIR}/usr/lib/librumpfs_hfs.a
1666		LIBRUMPFS_LFS?=	${DESTDIR}/usr/lib/librumpfs_lfs.a
1667		LIBRUMPFS_MSDOSFS?=${DESTDIR}/usr/lib/librumpfs_msdosfs.a
1668		LIBRUMPFS_NFS?=	${DESTDIR}/usr/lib/librumpfs_nfs.a
1669		LIBRUMPFS_NTFS?=${DESTDIR}/usr/lib/librumpfs_ntfs.a
1670		LIBRUMPFS_SYSPUFFS?=${DESTDIR}/usr/lib/librumpfs_syspuffs.a
1671		LIBRUMPFS_TMPFS?=${DESTDIR}/usr/lib/librumpfs_tmpfs.a
1672		LIBRUMPFS_UDF?=	${DESTDIR}/usr/lib/librumpfs_udf.a
1673		LIBRUMPFS_UFS?=	${DESTDIR}/usr/lib/librumpfs_ufs.a
1674		LIBRUMPUSER?=	${DESTDIR}/usr/lib/librumpuser.a
1675		LIBSASLC?=	${DESTDIR}/usr/lib/libsaslc.a
1676		LIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
1677		LIBSL?=		${DESTDIR}/usr/lib/libsl.a
1678		LIBSQLITE3?=	${DESTDIR}/usr/lib/libsqlite3.a
1679		LIBSS?=		${DESTDIR}/usr/lib/libss.a
1680		LIBSSH?=	${DESTDIR}/usr/lib/libssh.a
1681		LIBSSL?=	${DESTDIR}/usr/lib/libssl.a
1682		LIBSSP?=	${DESTDIR}/usr/lib/libssp.a
1683		LIBSTDCXX?=	${DESTDIR}/usr/lib/libstdc++.a
1684		LIBSUPCXX?=	${DESTDIR}/usr/lib/libsupc++.a
1685		LIBTERMINFO?=	${DESTDIR}/usr/lib/libterminfo.a
1686		LIBTRE?=	${DESTDIR}/usr/lib/libtre.a
1687		LIBUNBOUND?=	${DESTDIR}/usr/lib/libunbound.a
1688		LIBUSBHID?=	${DESTDIR}/usr/lib/libusbhid.a
1689		LIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
1690		LIBWIND?=	${DESTDIR}/usr/lib/libwind.a
1691		LIBWRAP?=	${DESTDIR}/usr/lib/libwrap.a
1692		LIBY?=		${DESTDIR}/usr/lib/liby.a
1693		LIBZ?=		${DESTDIR}/usr/lib/libz.a
1694
1695		The following X-Windows libraries are predefined for DPADD:
1696
1697		LIBFS?=		${DESTDIR}/usr/X11R7/lib/libFS.a
1698		LIBGL?=		${DESTDIR}/usr/X11R7/lib/libGL.a
1699		LIBGLU?=	${DESTDIR}/usr/X11R7/lib/libGLU.a
1700		LIBICE?=	${DESTDIR}/usr/X11R7/lib/libICE.a
1701		LIBSM?=		${DESTDIR}/usr/X11R7/lib/libSM.a
1702		LIBX11?=	${DESTDIR}/usr/X11R7/lib/libX11.a
1703		LIBX11_XCB?=	${DESTDIR}/usr/X11R7/lib/libX11-xcb.a
1704		LIBXTRAP?=	${DESTDIR}/usr/X11R7/lib/libXTrap.a
1705		LIBXAU?=	${DESTDIR}/usr/X11R7/lib/libXau.a
1706		LIBXAW?=	${DESTDIR}/usr/X11R7/lib/libXaw.a
1707		LIBXCB?=	${DESTDIR}/usr/X11R7/lib/libxcb.a
1708		LIBXDMCP?=	${DESTDIR}/usr/X11R7/lib/libXdmcp.a
1709		LIBXEXT?=	${DESTDIR}/usr/X11R7/lib/libXext.a
1710		LIBXFONT?=	${DESTDIR}/usr/X11R7/lib/libXfont.a
1711		LIBXFONT2?=	${DESTDIR}/usr/X11R7/lib/libXfont2.a
1712		LIBXFT?=	${DESTDIR}/usr/X11R7/lib/libXft.a
1713		LIBXI?=		${DESTDIR}/usr/X11R7/lib/libXi.a
1714		LIBXINERAMA?=	${DESTDIR}/usr/X11R7/lib/libXinerama.a
1715		LIBXMU?=	${DESTDIR}/usr/X11R7/lib/libXmu.a
1716		LIBXMUU?=	${DESTDIR}/usr/X11R7/lib/libXmuu.a
1717		LIBXPM?=	${DESTDIR}/usr/X11R7/lib/libXpm.a
1718		LIBXRANDR?=	${DESTDIR}/usr/X11R7/lib/libXrandr.a
1719		LIBXRENDER?=	${DESTDIR}/usr/X11R7/lib/libXrender.a
1720		LIBXSS?=	${DESTDIR}/usr/X11R7/lib/libXss.a
1721		LIBXT?=		${DESTDIR}/usr/X11R7/lib/libXt.a
1722		LIBXTST?=	${DESTDIR}/usr/X11R7/lib/libXtst.a
1723		LIBXV?=		${DESTDIR}/usr/X11R7/lib/libXv.a
1724		LIBXXF86DGA?=	${DESTDIR}/usr/X11R7/lib/libXxf86dga.a
1725		LIBXXF86MISC?=	${DESTDIR}/usr/X11R7/lib/libXxf86misc.a
1726		LIBXXF86VM?=	${DESTDIR}/usr/X11R7/lib/libXxf86vm.a
1727		LIBDPS?=	${DESTDIR}/usr/X11R7/lib/libdps.a
1728		LIBFNTSTUBS?=	${DESTDIR}/usr/X11R7/lib/libfntstubs.a
1729		LIBFONTCONFIG?=	${DESTDIR}/usr/X11R7/lib/libfontconfig.a
1730		LIBFONTENC?=	${DESTDIR}/usr/X11R7/lib/libfontenc.a
1731		LIBFREETYPE?=	${DESTDIR}/usr/X11R7/lib/libfreetype.a
1732		LIBLBXUTIL?=	${DESTDIR}/usr/X11R7/lib/liblbxutil.a
1733		LIBXKBFILE?=	${DESTDIR}/usr/X11R7/lib/libxkbfile.a
1734
1735SHAREDSTRINGS	If defined, a new .c.o rule is used that results in shared
1736		strings, using xstr(1). Note that this will not work with
1737		parallel makes.
1738
1739STRIPFLAG	The flag passed to the install program to cause the binary
1740		to be stripped.
1741
1742SUBDIR		A list of subdirectories that should be built as well.
1743		Each of the targets will execute the same target in the
1744		subdirectories.
1745
1746SCRIPTS		A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
1747		These are installed exactly like programs.
1748
1749SCRIPTSDIR	The location to install the scripts.  Each script can be
1750		installed to a separate path by setting SCRIPTSDIR_<script>.
1751
1752SCRIPTSNAME	The name that the above program will be installed as, if
1753		different from ${SCRIPTS}. These can be further specialized
1754		by setting SCRIPTSNAME_<script>.
1755
1756FILES		See description of <bsd.files.mk>.
1757
1758SHLINKDIR	Target directory for shared linker.  See description of
1759		<bsd.own.mk> for additional information about this variable.
1760
1761The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
1762if it exists, as well as the include file <bsd.man.mk>.
1763
1764Some simple examples:
1765
1766To build foo from foo.c with a manual page foo.1, use:
1767
1768	PROG=	foo
1769
1770	.include <bsd.prog.mk>
1771
1772To build foo from foo.c with a manual page foo.2, add the line:
1773
1774	MAN=	foo.2
1775
1776If foo does not have a manual page at all, add the line:
1777
1778	MKMAN=	no
1779
1780If foo has multiple source files, add the line:
1781
1782	SRCS=	a.c b.c c.c d.c
1783
1784
1785=-=-=-=-=   bsd.rpc.mk   =-=-=-=-=
1786
1787The include file <bsd.rpc.mk> contains a makefile fragment used to
1788construct source files built by rpcgen.
1789
1790The following macros may be defined in makefiles which include
1791<bsd.rpc.mk> in order to control which files get built and how they
1792are to be built:
1793
1794RPC_INCS:	construct .h file from .x file
1795RPC_XDRFILES:	construct _xdr.c from .x file
1796		(for marshalling/unmarshalling data types)
1797RPC_SVCFILES:	construct _svc.c from .x file
1798		(server-side stubs)
1799RPC_SVCFLAGS:	Additional flags passed to builds of RPC_SVCFILES.
1800
1801RPC_XDIR:	Directory containing .x/.h files
1802
1803
1804=-=-=-=-=   bsd.shlib.mk   =-=-=-=-=
1805
1806The include file <bsd.shlib.mk> computes parameters for shared library
1807installation and use.  It defines no targets.  <bsd.own.mk> MUST be
1808included before <bsd.shlib.mk>.
1809
1810<bsd.own.mk> sets the following variables, if they are not already defined
1811(defaults are in brackets):
1812
1813SHLIBINSTALLDIR	If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
1814		instead of ${LIBDIR} as the base path for shared library
1815		installation.  [/lib]
1816
1817SHLIBDIR	The path to USE_SHLIBDIR shared libraries to use when building
1818		a program.  [/lib for programs in /bin and /sbin, /usr/lib
1819		for all others.]
1820
1821_LIBSODIR	Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no",
1822		otherwise set to ${LIBDIR}
1823
1824SHLINKINSTALLDIR Base path for shared linker.  [/libexec]
1825
1826SHLINKDIR	Path to use for shared linker when building a program.
1827		[/libexec for programs in /bin and /sbin, /usr/libexec for
1828		all others.]
1829
1830
1831=-=-=-=-=   bsd.subdir.mk   =-=-=-=-=
1832
1833The include file <bsd.subdir.mk> contains the default targets for building
1834subdirectories.  It has the same eight targets as <bsd.prog.mk>: all,
1835clean, cleandir, depend, includes, install, lint, and tags.  It uses the
1836following variables:
1837
1838NOSUBDIR	If this variable is defined, then the SUBDIR variable
1839		will be ignored and subdirectories will not be processed.
1840
1841SUBDIR		For all of the directories listed in ${SUBDIR}, the
1842		specified directory will be visited and the target made.
1843
1844		As a special case, the use of a token .WAIT as an
1845		entry in SUBDIR acts as a synchronization barrier
1846		when multiple make jobs are run; subdirs before the
1847		.WAIT must complete before any subdirs after .WAIT are
1848		started.  See make(1) for some caveats on use of .WAIT
1849		and other special sources.
1850
1851
1852=-=-=-=-=   bsd.x11.mk   =-=-=-=-=
1853
1854The include file <bsd.x11.mk> contains parameters and targets for
1855cross-building X11 from ${X11SRCDIR.<package>}.  It should be included
1856after the general Makefile contents but before the include files such as
1857<bsd.prog.mk> and <bsd.lib.mk>.
1858
1859It provides the following targets:
1860	.man.1 .man.3 .man.4 .man.5 .man.7:
1861		If ${MAN} or ${PROG} is set and ${MKMAN} != "no",
1862		these rules convert from X11's manual page source
1863		into an mdoc.old source file.
1864
1865It sets the following variables:
1866
1867BINDIR			Set to ${X11BINDIR}.
1868			To override, define after including <bsd.x11.mk>
1869
1870LIBDIR			Set to ${X11USRLIBDIR}.
1871			To override, define after including <bsd.x11.mk>
1872
1873MANDIR			Set to ${X11MANDIR}.
1874			To override, define after including <bsd.x11.mk>
1875
1876CPPFLAGS		Appended with definitions to include from
1877			${DESTDIR}${X11INCDIR}
1878
1879LDFLAGS			Appended with definitions to link from
1880			${DESTDIR}${X11USRLIBDIR}
1881
1882X11FLAGS.CONNECTION	Equivalent to X11's CONNECTION_FLAGS.
1883
1884X11FLAGS.EXTENSION	Equivalent to X11's EXT_DEFINES.
1885
1886X11FLAGS.LOADABLE	Equivalent to X11's LOADABLE.
1887
1888X11FLAGS.OS_DEFINES	Equivalent to X11's OS_DEFINES.
1889
1890X11FLAGS.SERVER		Equivalent to X11's ServerDefines.
1891
1892X11FLAGS.THREADLIB	Equivalent to X11's THREADS_DEFINES for libraries.
1893
1894X11FLAGS.THREADS	Equivalent to X11's THREADS_DEFINES.
1895
1896X11FLAGS.VERSION	cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION.
1897
1898X11FLAGS.DIX		Equivalent to X11's DIX_DEFINES.
1899
1900X11TOOL_UNXCOMM		Commandline to convert `XCOMM' comments to `#'
1901
1902It uses the following variables:
1903
1904APPDEFS			List of app-default files to install.
1905
1906CPPSCRIPTS		List of files/scripts to run through cpp(1)
1907			and then ${X11TOOL_UNXCOMM}.  The source files
1908			have a `.cpp' suffix, the generated files do not.
1909
1910CPPSCRIPTFLAGS		Additional flags to cpp(1) when building CPPSCRIPTS.
1911
1912CPPSCRIPTFLAGS_<fn>	Additional flags to cpp(1) when building CPPSCRIPT <fn>.
1913
1914
1915=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1916
1917The following files are described here for completion, but they are not
1918supposed to be included directly from other Makefiles; they are used
1919internally by other system files.
1920
1921=-=-=-=-=   bsd.sys.mk   =-=-=-=-=
1922
1923The include file <bsd.sys.mk> is used by other system mk files and
1924it is not intended to be included standalone. It contains rules and
1925system build variables. It requires bsd.own.mk to be included first.
1926It contains overrides that are used when building the NetBSD source tree.
1927
1928The following variables control how various files are compiled/built.
1929(Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"):
1930
1931AR		Create, modify, and extract from archives.  [ar]
1932
1933ARFLAGS		Options to ${AR}.  [rl]
1934
1935AS		Assembler.  [as]
1936
1937AFLAGS		Options to ${CC} when compiling or linking .s or .S
1938		assembly source files.  []
1939
1940BUILDSEED	GCC uses random numbers when compiling C++ code.
1941		If this option is present, seed the random number
1942		generator based on the value, source file names and
1943		the output file name to make builds more deterministic.
1944		Additional information is available in the GCC
1945		documentation of -frandom-seed.
1946
1947CC		C compiler.  [cc]
1948
1949CFLAGS		Options to ${CC}.  [Usually -O or -O2]
1950
1951CPP		C Pre-Processor.  [cpp]
1952
1953CPPFLAGS	Options to ${CPP}.  []
1954
1955CPUFLAGS	Optimization flags for ${CC}.  []
1956
1957CXX		C++ compiler.  [c++]
1958
1959CXXFLAGS	Options to ${CXX}.  [${CFLAGS}]
1960
1961ELF2ECOFF	Convert ELF-format executable to ECOFF.  [elf2ecoff]
1962
1963FC		Fortran compiler.  [f77]
1964
1965FFLAGS		Options to {$FC}.  [-O]
1966
1967HOST_SH		Shell.	This must be an absolute path, because it may be
1968		substituted into "#!" lines in scripts.	 [/bin/sh]
1969
1970INSTALL		install(1) command.  [install]
1971
1972LEX		Lexical analyzer.  [lex]
1973
1974LFLAGS		Options to ${LEX}.  []
1975
1976LPREFIX		Symbol prefix for ${LEX} (see -P option in lex(1)) [yy]
1977
1978LD		Linker.  [ld]
1979
1980LDFLAGS		Options to ${CC} during the link process.  []
1981
1982LINT		C program verifier.  [lint]
1983
1984LINTFLAGS	Options to ${LINT}.  [-chapbxzgFS]
1985
1986LORDER		List dependencies for object files.  [lorder]
1987
1988MAKE		make(1).  [make]
1989
1990MKDEP		Construct Makefile dependency list.  [mkdep]
1991
1992MKDEPCXX	Construct Makefile dependency list for C++ files.  [mkdep]
1993
1994NM		List symbols from object files.  [nm]
1995
1996PC		Pascal compiler.  [pc]  (Not present)
1997
1998PFLAGS		Options to ${PC}.  []
1999
2000OBJC		Objective C compiler.  [${CC}]
2001
2002OBJCFLAGS	Options to ${OBJC}.  [${CFLAGS}]
2003
2004OBJCOPY		Copy and translate object files.  [objcopy]
2005
2006OBJCOPYLIBFLAGS	Flags to pass to objcopy when library objects are
2007		being built. [${.TARGET} =~ "*.po" ? -X : -x]
2008
2009OBJDUMP		Display information from object files.  [objdump]
2010
2011RANLIB		Generate index to archive.  [ranlib]
2012
2013READELF		Display information from ELF object files.  [readelf]
2014
2015SIZE		List section sizes and total size.  [size]
2016
2017STRINGS		Display printable character sequences in files.  [strings]
2018
2019STRIP		Discard symbols from object files.  [strip]
2020
2021TSORT		Topological sort of a directed graph.  [tsort -q]
2022
2023YACC		LALR(1) parser generator.  [yacc]
2024
2025YFLAGS		Options to ${YACC}.  []
2026
2027YHEADER		If defined, add "-d" to YFLAGS, and add dependencies
2028		from <file>.y to <file>.h and <file>.c, and add
2029		<foo>.h to CLEANFILES.
2030
2031YPREFIX		If defined, add "-p ${YPREFIX}" to YFLAGS.
2032
2033
2034Other variables of note (incomplete list):
2035
2036NOGCCERROR	If defined, prevents passing certain ${CFLAGS} to GCC
2037		that cause warnings to be fatal, such as:
2038			-Werror -Wa,--fatal-warnings
2039		(The latter being for as(1).)
2040
2041NOCLANGERROR	If defined and clang is used as C compiler, -Werror is not
2042		passed to it.
2043
2044WARNS		Crank up compiler warning options; the distinct levels are:
2045			WARNS=1
2046			WARNS=2
2047			WARNS=3
2048			WARNS=4
2049			WARNS=5
2050			WARNS=6
2051
2052=-=-=-=-=   bsd.host.mk  =-=-=-=-=
2053
2054This file is automatically included from bsd.own.mk. It contains settings
2055for all the HOST_* variables that are used in host programs and libraries.
2056
2057HOST_AR			The host archive processing command
2058
2059HOST_CC			The host c compiler
2060
2061HOST_CFLAGS		The host c compiler flags
2062
2063HOST_COMPILE.c		The host c compiler line with flags
2064
2065HOST_COMPILE.cc		The host c++ compiler line with flags
2066
2067HOST_CPP		The host c pre-processor
2068
2069HOST_CPPFLAGS		The cost c pre-processor flags
2070
2071HOST_CXX		The host c++ compiler
2072
2073HOST_CXXFLAGS		The host c++ compiler flags
2074
2075HOST_INSTALL_DIR	The host command to install a directory
2076
2077HOST_INSTALL_FILE	The host command to install a file
2078
2079HOST_INSTALL_SYMLINK	The host command to install a symlink
2080
2081HOST_LD			The host linker command
2082
2083HOST_LDFLAGS		The host linker flags
2084
2085HOST_LINK.c		The host c linker line with flags
2086
2087HOST_LINK.cc		The host c++ linker line with flags
2088
2089HOST_LN			The host command to link two files
2090
2091HOST_MKDEP		The host command to create dependencies for c programs
2092
2093HOST_MKDEPCXX		The host command to create dependencies for c++ programs
2094
2095HOST_OSTYPE		The host OSNAME-RELEASE-ARCH tupple
2096
2097HOST_RANLIB		The host command to create random access archives
2098
2099HOST_SH			The host Bourne shell interpreter name (absolute path)
2100
2101=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2102