Home | History | only in mk
Up to higher level directory
NameDateSize
bsd.dep.mk18-Apr-20042.1K
bsd.doc.mk16-Mar-20061.5K
bsd.endian.mk09-Jan-2008799
bsd.files.mk26-Aug-20083.2K
bsd.gcc.mk27-Jun-2003736
bsd.hostlib.mk10-Jun-20041.2K
bsd.hostprog.mk30-Jul-20084.1K
bsd.inc.mk16-Mar-20061.4K
bsd.info.mk16-Mar-20062.1K
bsd.init.mk28-Jul-2003355
bsd.kernobj.mk11-Oct-2003955
bsd.kinc.mk16-Mar-20062.2K
bsd.klinks.mk30-Jul-20081.6K
bsd.kmod.mk25-Aug-20083.2K
bsd.kmodule.mk25-Aug-20082.6K
bsd.lib.mk17-Aug-200819.8K
bsd.links.mk11-Sep-20061.9K
bsd.man.mk27-Aug-20086.7K
bsd.nls.mk16-Mar-20061.3K
bsd.obj.mk11-Dec-20072.6K
bsd.own.mk27-Aug-200823.7K
bsd.prog.mkToday12K
bsd.README27-Aug-200850.2K
bsd.rpc.mk12-May-20041.4K
bsd.shlib.mk29-Aug-2007833
bsd.subdir.mk13-Apr-2004930
bsd.sys.mk25-Aug-20086.5K
bsd.test.mk01-May-20081.2K
bsd.x11.mk04-Aug-20086.6K
Makefile02-May-2008617
sys.mk05-Aug-20084.8K

bsd.README

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