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