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