release.sh: restore -jJAILDIR option
[minix.git] / share / mk / bsd.README
bloba1fc683d20c863800ff1e9f5de9cfd63ee2a1c61
1 #       $NetBSD: bsd.README,v 1.304 2012/10/02 04:53:11 jkoshy Exp $
2 #       @(#)bsd.README  8.2 (Berkeley) 4/2/94
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".
8 Note, this file is not intended to replace reading through the .mk
9 files for anything tricky.
11 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
13 RANDOM THINGS WORTH KNOWING:
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>".
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:
25         a:
26                 echo a
27         a:
28                 echo a number two
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:
33         a=      foo
34         a=      bar
36         b:
37                 echo ${a}
39 the command "make b" will echo "bar".  This is for compatibility with the
40 way the V7 make behaved.
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.)
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.
54 The variable DESTDIR works as before.  It's not set anywhere but will change
55 the tree where the file gets installed.
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.
61 There are various make variables used during the build.
63 Many variables support a (case sensitive) value of "no" or "yes",
64 and are tested with  ${VAR} == "no"  and  ${VAR} != "no" .
67 The basic rule for the variable naming scheme is as follows:
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.
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
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.
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.
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:
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.
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
116 MKATF           If "no", don't build libatf-c, libatf-c++ libraries associated
117                 with the Automated Testing Framework (ATF).
118                 Default: yes
120 MKBFD           Obsolete, use MKBINUTILS
122 MKBINUTILS      If "no", don't build binutils (gas, ld, etc and libbfd,
123                 libopcodes)
124                 Default: yes
126 MKBSDTAR        If "yes", use the libarchive based cpio and tar instead of
127                 the pax frontends.
128                 Default: no
130 MKCATPAGES      If "no", don't build or install the catman pages.
131                 Default: no
133 MKCOMPAT        If "no", don't build or install the src/compat.
134                 Default: yes on amd64/mips64/sparc64, no elsewhere.
136 MKCOMPLEX       If "no", don't build libm support for <complex.h>
137                 Default: yes
139 MKCRYPTO        If "no", no cryptography support will be built into the system,
140                 and also acts as "MKKERBEROS=no".
141                 Default: yes
143 MKCRYPTO_RC5    If not "no", RC5 support will be built into libcrypto_rc5
144                 Default: no
146 MKCVS           If "no", don't build or install cvs(1).
147                 Default: yes
149 MKDEBUG         If "no", don't build and install separate debugging symbols
150                 into /usr/libdata/debug.
151                 Default: no
153 MKDEBUGLIB      Build *_g.a debugging libraries, which are compiled
154                 with -DDEBUG.
155                 Default: no
157 MKDOC           If "no", don't build or install the documentation.
158                 Default: yes
160 MKDTRACE        If "no", do not build and install the kernel modules,
161                 utilities and libraries used to implement the dtrace(1)
162                 facility.
163                 Default: no
165 MKDYNAMICROOT   If "no", build programs in /bin and /sbin statically,
166                 don't install certain libraries in /lib, and don't
167                 install the shared linker into /libexec.
168                 Default: yes
170 MKEXTSRC        If not "no", 'make build' also descends into either src/extsrc
171                 to cross-build programs and libraries externally added by
172                 users, and automatically enables creation of those sets.
173                 Default: no
175 MKGCC           If "no", don't build gcc(1) or any of the GCC-related
176                 libraries (libgcc, libobjc, libstdc++).
177                 Default: yes
179 MKGCCCMDS       If "no", don't build gcc(1), but do build the GCC-related
180                 libraries (libgcc, libobjc, libstdc++).
181                 Default: yes
183 MKGDB           If "no", don't build gdb(1).
184                 Default: yes
186 MKHESIOD        If "no", disables building of Hesiod infrastructure
187                 (libraries and support programs).
188                 Default: yes
190 MKHOSTOBJ       If not "no", for programs intended to be run on the compile
191                 host, the name, release, and architecture of the host
192                 operating system will be suffixed to the name of the object
193                 directory created by "make obj".
194                 Default: no
196 MKHTML          If "no", don't build or install the HTML man pages.
197                 Default: yes
199 MKIEEEFP        If "no", don't add code for IEEE754/IEC60559 conformance.
200                 Has no effect on most platforms.
201                 Default: yes
203 MKSTRIPIDENT    Strip the RCS IDs from program binaries and shared libraries.
204                 Default: no
206 MKINET6         If "no", disables building of INET6 (IPv6) infrastructure
207                 (libraries and support programs).  This option must not be
208                 set to "no" if MKX11 is not "no".
209                 Default: yes
211 MKINFO          If "no", don't build or install Info documentation from
212                 Texinfo source files.
213                 Default: yes
215 MKIPFILTER      If "no", don't build or install the IP Filter programs and LKM.
216                 Default: yes
218 MKISCSI         If "no", don't build or install iSCSI library or applications
219                 (depends on libpthread.)
220                 Default: yes
222 MKKERBEROS      If "no", disables building of Kerberos v5
223                 infrastructure (libraries and support programs).
224                 Default: yes
226 MKKMOD          If "no", disables building of kernel modules.
227                 Default: yes
229 MKLDAP          If "no", disables building of LDAP infrastructure
230                 (libraries and support programs).
231                 Default: yes
233 MKLINKLIB       If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
234                 Also:
235                         - don't install the .a libraries
236                         - don't install _pic.a libraries on PIC systems
237                         - don't build .a libraries on PIC systems
238                         - don't install the .so symlink on ELF systems
239                 I.e, only install the shared library (and the .so.major
240                 symlink on ELF).
241                 Default: yes
243 MKLINT          If "no", don't build or install the lint libraries.
244                 Default: yes
246 MKLVM           If "no", don't build or install the logical volume manager
247                 and device mapper tools and libraries
248                 Default: yes
250 MKMAN           If "no", don't build or install the man or catman pages,
251                 and also acts as "MKCATPAGES=no MKHTML=no".
252                 Default: yes
254 MKMANDOC        If "yes", mandoc is built as tool and used to compile
255                 catman or html pages.  A directory can be exempted by
256                 defining NOMANDOC.  Individual man pages are exempted
257                 if NOMANDOC.${target} is set to "yes".
258                 Default: yes
260 MKMANZ          If not "no", compress manual pages at installation time.
261                 Default: no
263 MKMDNS          If "no", disables building of mDNS infrastructure
264                 (libraries and support programs).
265                 Default: yes
267 MKNLS           If "no", don't build or install the NLS files and locale
268                 definition files.
269                 Default: yes
271 MKNPF           If "no", don't build or install the NPF and its modules.
272                 Default: yes
274 MKOBJ           If "no", don't enable the rule which creates objdirs,
275                 and also acts as "MKOBJDIRS=no".
276                 Default: yes
278 MKOBJDIRS       If "no", don't create objdirs during a "make build".
279                 Default: no
281 MKPAM           If "no", disables building of PAM authentication
282                 infrastructure (libraries and support programs).
283                 Default: yes
285 MKPCC           If "no", don't build pcc(1) or any of the PCC-related
286                 libraries (libpcc, libpccsoftfloat).
287                 Default: no
289 MKPF            If "no", don't build or install the pf programs and LKM.
290                 Default: yes
292 MKPIC           If "no", don't build or install shared libraries, and
293                 also acts as "MKPICLIB=no"
294                 Default: yes (for MACHINE_ARCHs that support it)
296 MKPICINSTALL    If "no", don't install the *_pic.a libraries.
297                 Default: yes
299 MKPICLIB        If "no", don't build *_pic.a libraries, and build the
300                 shared object libraries from the .a libraries.
301                 A symlink is installed in ${DESTDIR}/usr/lib for the
302                 _pic.a library pointing to the .a library.
303                 Default: yes
305 MKPIE           If "no", create regular executables. Otherwise create
306                 PIE (Position Independent Executables).
307                 Default: no
309 MKPIGZGZIP      If "no", only install pigz as pigz, not gzip.
310                 Default: no
312 MKPOSTFIX       If "no", don't build or install postfix(1).
313                 Default: yes
315 MKPROFILE       If "no", don't build or install the profiling (*_p.a) libraries.
316                 Default: yes
318 MKREPRO         If "yes", create reproducable builds. This enables
319                 different switches to make two builds from the same source tree
320                 result in the same build results.
321                 Default: no
323 MKSHARE         If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
324                 MKMAN=no MKNLS=no".
325                 I.e, don't build catman pages, documentation, Info
326                 documentation, man pages, NLS files, ...
327                 Default: yes
329 MKSKEY          If "no", disables building of S/key authentication
330                 infrastructure (libraries and support programs).
331                 Default: yes
333 MKSOFTFLOAT     If not "no", build with options to enable the compiler to
334                 generate output containing library calls for floating
335                 point and possibly soft-float library support.
336                 Default: no
338 MKSTATICLIB     If "no", don't build or install the normal static (*.a)
339                 libraries.
340                 Default: yes
342 MKUNPRIVED      If not "no", don't set the owner/group/mode when installing
343                 files or directories, and keep a metadata log of what
344                 the owner/group/mode should be.  This allows a
345                 non-root "make install".
346                 Default: no
348 MKUPDATE        If not "no", 'make install' only installs targets that are
349                 more recently modified in the source directories that their
350                 installed counterparts.
351                 Default: no
353 MKX11           If not "no", depending on the value of ${X11FLAVOUR},
354                 'make build' also descends into either src/x11 (XFree86) or
355                 src/external/mit/xorg (modular Xorg) to cross-build X11 and
356                 automatically enables creation of X sets.
357                 Default: no
359 MKX11FONTS      If not "no", if ${X11FLAVOUR} is "Xorg", do not build or
360                 install the X fonts.  The xfont set is still created but
361                 will be empty.
362                 Default: yes
364 MKYP            If "no", disables building of YP (NIS)
365                 infrastructure (libraries and support programs).
366                 Default: yes
368 MKZFS           If "no", do not build and install utilities and libraries
369                 used to manage ZFS file system. Do not build zfs and solaris
370                 compatibility kernel modules.
371                 Default: yes on i386/amd64, no elsewhere.
373 MKRUMP          If "no", do not build and install rump related headers,
374                 libraries, and programs.
375                 Default: yes
377 USE_HESIOD      If "no", disables building Hesiod support into
378                 various system utilities/libraries that support it.
379                 If ${MKHESIOD} is "no", USE_HESIOD will also be
380                 forced to "no".
382 USE_INET6       If "no", disables building INET6 (IPv6) support into
383                 various system utilities/libraries that support it.
384                 If ${MKINET6} is "no", USE_INET6 will also be
385                 forced to "no".
387 USE_JEMALLOC    If "no", disables building the "jemalloc" allocator
388                 designed for improved performance with threaded
389                 applications.  The "phkmalloc" allocator as used up
390                 before NetBSD-5.0 will be substituted.
392 USE_KERBEROS    If "no", disables building Kerberos v5
393                 support into various system utilities/libraries that
394                 support it.  If ${MKKERBEROS} is "no", USE_KERBEROS
395                 will also be forced to "no".
397 USE_LDAP        If "no", disables building LDAP support into various
398                 system utilities/libraries that support it.
399                 If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
401 USE_PAM         If "no", disables building PAM authentication support
402                 into various system utilities/libraries that support it.
403                 If ${MKPAM} is "no", USE_PAM will also be forced to "no".
405 USE_SKEY        If "no", disables building S/key authentication
406                 support into various system utilities/libraries that
407                 support it.  If ${MKSKEY} is "no", USE_SKEY will
408                 also be forced to "no".
409                 Default: no
411 USE_SSP         If "no", disables GCC stack protection code, which
412                 detects stack overflows and aborts the program. The
413                 stack protection code imposes a performance penalty
414                 of about 5%.
415                 Default: "no", unless "USE_FORT" is set to "yes"
417 USE_FORT        If "yes" turns on substitute wrappers for commonly used
418                 functions that do not do bounds checking regularly, but
419                 they could in some cases by using the gcc
420                 __builtin_object_size() function to determine the buffer
421                 size where it is known and detect buffer overflows.
422                 These substitute functions are in /usr/include/ssp.
423                 Default: depends on the part of the source tree
425 USE_YP          If "no", disables building YP (NIS) support into
426                 various system utilities/libraries that support it.
427                 If ${MKYP} is "no", USE_YP will also be forced to "no".
429 USE_PIGZGZIP    If "no", use the host "gzip" program to compress things.
430                 Otherwise, build tools/pigz and use nbpigz to compress
431                 things.
432                 Default: "no".
434 X11FLAVOUR      Set to "Xorg" or "XFree86", depending on whether to build
435                 XFree86 or modular Xorg.  Only matters if MKX11!=no.
436                 Default: "Xorg" on amd64, i386, macppc, shark and sparc64,
437                 "XFree86" on everything else.
439 COPTS.lib<lib>
440 OBJCOPTS.lib<lib>
441 LDADD.lib<lib>
442 CPPFLAGS.lib<lib>
443 CXXFLAGS.lib<lib>
444 COPTS.<prog>
445 OBJCCOPTS.<prog>
446 LDADD.<prog>
447 CPPFLAGS.<prog>
448 CXXFLAGS.<prog> These provide a way to specify additions to the associated
449                 variables in a way that applies only to a particular library
450                 or program.  <lib> corresponds to the LIB variable set in
451                 the library's makefile.  <prog> corresponds to either PROG
452                 or PROG_CXX (if set).  For example, if COPTS.libcrypto is
453                 set to "-g", "-g" will be added to COPTS only when compiling
454                 the crypto library.
456 The active compiler is selected using the following variables:
457 AVAILABLE_COMPILER
458                 List of available compiler suites.  Processed in order
459                 for selecting the active compiler for each frontend.
460 HAVE_PCC        If defined, PCC is present and enabled.
461 HAVE_LLVM       If defined, LLVM/Clang is present and enabled.
462 UNSUPPORTED_COMPILER.xxx
463                 If defined, the support for compiler "xxx" is disabled.
465 For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist:
466 ACTIVE_CC       Active compile suite for the CC frontend.
467 SUPPORTED_CC    Compile suite with support for the CC frontend.
468 TOOL_CC.xxx     Path to the CC frontend for compiler "xxx"
470 =-=-=-=-=   sys.mk   =-=-=-=-=
472 The include file <sys.mk> has the default rules for all makes, in the BSD
473 environment or otherwise.  You probably don't want to touch this file.
475 =-=-=-=-=   bsd.own.mk   =-=-=-=-=
477 The include file <bsd.own.mk> contains source tree configuration parameters,
478 such as the owners, groups, etc. for both manual pages and binaries, and
479 a few global "feature configuration" parameters.
481 It has no targets.
483 To get system-specific configuration parameters, <bsd.own.mk> will try to
484 include the file specified by the "MAKECONF" variable.  If MAKECONF is not
485 set, or no such file exists, the system make configuration file, /etc/mk.conf
486 is included.  These files may define any of the variables described below.
488 <bsd.own.mk> sets the following variables, if they are not already defined
489 (defaults are in brackets):
491 NETBSDSRCDIR    Top of the NetBSD source tree.
492                 If _SRC_TOP_ != "", that will be used as the default,
493                 otherwise BSDSRCDIR will be used as the default.
494                 Various makefiles within the NetBSD source tree will
495                 use this to reference the top level of the source tree.
497 _SRC_TOP_       Top of the system source tree, as determined by <bsd.own.mk>
498                 based on the presence of tools/ and build.sh.  This variable
499                 is "internal" to <bsd.own.mk>, although its value is only
500                 determined once and then propagated to all sub-makes.
502 BSDSRCDIR       The real path to the system sources, so that 'make obj'
503                 will work correctly.  [/usr/src]
505 BSDOBJDIR       The real path to the system 'obj' tree, so that 'make obj'
506                 will work correctly.  [/usr/obj]
508 BINGRP          Binary group.  [wheel]
510 BINOWN          Binary owner.  [root]
512 BINMODE         Binary mode.  [555]
514 NONBINMODE      Mode for non-executable files.  [444]
516 MANDIR          Base path for manual installation.  [/usr/share/man/cat]
518 MANGRP          Manual group.  [wheel]
520 MANOWN          Manual owner.  [root]
522 MANMODE         Manual mode.  [${NONBINMODE}]
524 MANINSTALL      Manual installation type.  Space separated list:
525                         catinstall, htmlinstall, maninstall
526                 Default value derived from MKCATPAGES and MKHTML.
528 LDSTATIC        Control program linking; if set blank, link everything
529                 dynamically.  If set to "-static", link everything statically.
530                 If not set, programs link according to their makefile.
532 LIBDIR          Base path for library installation.  [/usr/lib]
534 LINTLIBDIR      Base path for lint(1) library installation.  [/usr/libdata/lint]
536 LIBGRP          Library group.  [${BINGRP}]
538 LIBOWN          Library owner.  [${BINOWN}]
540 LIBMODE         Library mode.  [${NONBINMODE}]
542 DOCDIR          Base path for system documentation (e.g. PSD, USD, etc.)
543                 installation.  [/usr/share/doc]
545 HTMLDOCDIR      Base path for html system documentation installation.
546                 [/usr/share/doc/html]
548 DOCGRP          Documentation group.  [wheel]
550 DOCOWN          Documentation owner.  [root]
552 DOCMODE         Documentation mode.  [${NONBINMODE}]
554 NLSDIR          Base path for Native Language Support files installation.
555                 [/usr/share/nls]
557 NLSGRP          Native Language Support files group.  [wheel]
559 NLSOWN          Native Language Support files owner.  [root]
561 NLSMODE         Native Language Support files mode.  [${NONBINMODE}]
563 X11SRCDIR       The path to the xsrc tree.  [${NETBSDSRCDIR}/../xsrc,
564                 if that exists; otherwise /usr/xsrc]
566 X11SRCDIR.xc    The path to the (old) X11 xc src tree.  [${X11SRCDIR}/xfree/xc]
568 X11SRCDIR.local The path to the local X11 src tree.  [${X11SRCDIR}/local]
570 X11SRCDIR.lib<package>
571 X11SRCDIR.<package>
572                 The path to the xorg src tree for the specificed package>.
573                 [${X11SRCDIR}/external/mit/xorg/<package>/dist]
575 X11ROOTDIR      Root directory of the X11 installation.  [/usr/X11R6 or
576                 [/usr/X11R7]
578 X11BINDIR       X11 bin directory.  [${X11ROOTDIR}/bin]
580 X11FONTDIR      X11 font directory.  [${X11ROOTDIR}/lib/X11/fonts]
582 X11INCDIR       X11 include directory.  [${X11ROOTDIR}/include]
584 X11LIBDIR       X11 lib/x11 (config) directory.  [${X11ROOTDIR}/lib/X11]
586 X11MANDIR       X11 manual directory.  [${X11ROOTDIR}/man]
588 X11USRLIBDIR    X11 library directory.  [${X11ROOTDIR}/lib]
590 STRIPFLAG       The flag passed to the install program to cause the binary
591                 to be stripped.  This is to be used when building your
592                 own install script so that the entire system can be made
593                 stripped/not-stripped using a single knob.  []
595 COPY            The flag passed to the install program to cause the binary
596                 to be copied rather than moved.  This is to be used when
597                 building our own install script so that the entire system
598                 can either be installed with copies, or with moves using
599                 a single knob.  [-c]
601 MAKEDIRTARGET dir target [params]
602                 Runs "cd $${dir} && ${MAKE} [params] $${target}",
603                 displaying a "pretty" message whilst doing so.
605 RELEASEMACHINEDIR
606                 Subdirectory used below RELEASEDIR when building
607                 a release.  [${MACHINE}]
609 RELEASEMACHINE  Subdirectory or path component used for the following
610                 paths:
611                         distrib/${RELEASEMACHINE}
612                         distrib/notes/${RELEASEMACHINE}
613                         etc/etc.${RELEASEMACHINE}
614                 Used when building a release.  [${MACHINE}]
616 Additionally, the following variables may be set by <bsd.own.mk> or in a
617 make configuration file to modify the behavior of the system build
618 process (default values are in brackets along with comments, if set by
619 <bsd.own.mk>):
621 USETOOLS        Indicates whether the tools specified by ${TOOLDIR} should
622                 be used as part of a build in progress.
623                 Supported values:
625                 yes     Use the tools from TOOLDIR.
626                         Must be set to this if cross-compiling.
628                 no      Do not use the tools from TOOLDIR, but refuse to
629                         build native compilation tool components that are
630                         version-specific for that tool.
632                 never   Do not use the tools from TOOLDIR, even when
633                         building native tool components.  This is similar to
634                         the traditional NetBSD build method, but does not
635                         verify that the compilation tools in use are
636                         up-to-date enough in order to build the tree
637                         successfully.  This may cause build or runtime
638                         problems when building the whole NetBSD source tree.
640                 Default: "yes" if building all or part of a whole NetBSD
641                 source tree (detected automatically); "no" otherwise
642                 (to preserve traditional semantics of the <bsd.*.mk>
643                 make(1) include files).
645 OBJECT_FMT      Object file format.  [set to "ELF" on architectures that
646                 use ELF -- currently all architectures].
648 TOOLCHAIN_MISSING
649                 If not "no", this indicates that the platform being built
650                 does not have a working in-tree toolchain.  If the
651                 ${MACHINE_ARCH} in question falls into this category,
652                 TOOLCHAIN_MISSING is conditionally assigned the value "yes".
653                 Otherwise, the variable is unconditionally assigned the
654                 value "no".
655                 If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are
656                 unconditionally assigned the value "no".
658 EXTERNAL_TOOLCHAIN
659                 This variable is not directly set by <bsd.own.mk>, but
660                 including <bsd.own.mk> is the canonical way to gain
661                 access to this variable.  The variable should be defined
662                 either in the user's environment or in the user's mk.conf
663                 file.  If defined, this variable indicates the root of
664                 an external toolchain which will be used to build the
665                 tree.  For example, if a platform is a ${TOOLCHAIN_MISSING}
666                 platform, EXTERNAL_TOOLCHAIN can be used to re-enable the
667                 cross-compile framework.
669                 If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally
670                 assigned the value "no", since the external version of the
671                 compiler may not be able to build the library components of
672                 the in-tree compiler.
674                 NOTE: This variable is not yet used in as many places as
675                 it should be.  Expect the exact semantics of this variable
676                 to change in the short term as parts of the cross-compile
677                 framework continue to be cleaned up.
679 The following variables are defined to commands to perform the
680 appropriate operation, with the default in [brackets].  Note that
681 the defaults change if USETOOLS == "yes":
683 TOOL_AMIGAAOUT2BB       aout to Amiga bootblock converter.  [amiga-aout2bb]
685 TOOL_AMIGAELF2BB        ELF to Amiga bootblock converter.  [amiga-elf2bb]
687 TOOL_AMIGATXLT          Amige assembly language format translator.  [amiga-txlt]
689 TOOL_ASN1_COMPILE       ASN1 compiler.  [asn1_compile]
691 TOOL_AWK                Pattern-directed scanning/processing language.  [awk]
693 TOOL_CAP_MKDB           Create capability database.  [cap_mkdb]
695 TOOL_CAT                Concatenate and print files.  [cat]
697 TOOL_CKSUM              Display file checksums.  [cksum]
699 TOOL_COMPILE_ET         Error table compiler.  [compile_et]
701 TOOL_CONFIG             Build kernel compilation directories.  [config]
703 TOOL_CRUNCHGEN          Generate crunched binary build environment.  [crunchgen]
705 TOOL_CTAGS              Create a tags file.  [ctags]
707 TOOL_DB                 Manipulate db(3) databases.  [db]
709 TOOL_DISKLABEL          Read and write disk pack label.  [disklabel]
711 TOOL_EQN                Format equations for groff.  [eqn]
713 TOOL_FDISK              MS-DOS partition maintenance program.  [fdisk]
715 TOOL_FGEN               IEEE 1275 Open Firmware FCode Tokenizer.  [fgen]
717 TOOL_GENASSYM           Generate constants for assembly files.  [genassym]
719 TOOL_GENCAT             Generate NLS message catalogs.  [gencat]
721 TOOL_GMAKE              GNU make utility.  [gmake]
723 TOOL_GREP               Print lines matching a pattern.  [grep]
725 TOOL_GROFF              Front end for groff document formatting system.  [groff]
727 TOOL_HEXDUMP            Ascii, decimal, hexadecimal, octal dump.  [hexdump]
729 TOOL_HP300MKBOOT        Make bootable image for hp300.  [hp300-mkboot]
731 TOOL_HP700MKBOOT        Make bootable image for hp700.  [hp700-mkboot]
733 TOOL_INDXBIB            Make bibliographic database's inverted index.  [indxbib]
735 TOOL_INSTALLBOOT        Install disk bootstrap software.  [installboot]
737 TOOL_INSTALL_INFO       Update info/dir entries.  [install-info]
739 TOOL_JOIN               Relational database operator.  [join]
741 TOOL_M4                 M4 macro language processor.  [m4]
743 TOOL_MACPPCFIXCOFF      Fix up xcoff headers for macppc.  [macppc-fixcoff]
745 TOOL_MAKEFS             Create file system image from directory tree.  [makefs]
747 TOOL_MAKEINFO           Translate Texinfo documents.  [makeinfo]
749 TOOL_MAKEWHATIS         Create a whatis.db database.  [makewhatis]
751 TOOL_MDSETIMAGE         Set kernel RAM disk image.  [mdsetimage]
753 TOOL_MENUC              Menu compiler.  [menuc]
755 TOOL_MIPSELF2ECOFF      Convert ELF-format executable to ECOFF for mips.
756                         [mips-elf2ecoff]
758 TOOL_MKCSMAPPER         Make charset mapping table.  [mkcsmapper]
760 TOOL_MKESDB             Make encoding scheme database.  [mkesdb]
762 TOOL_MKLOCALE           Make LC_CTYPE locale files.  [mklocale]
764 TOOL_MKMAGIC            Create database for file(1).  [file]
766 TOOL_MKTEMP             Make (unique) temporary file name.  [mktemp]
768 TOOL_MSGC               Simple message list compiler.  [msgc]
770 TOOL_MTREE              Map a directory hierarchy.  [mtree]
772 TOOL_PAX                Manipulate file archives and copy directories.  [pax]
774 TOOL_PIC                Compile pictures for groff.  [pic]
776 TOOL_PIGZ               Parallel compressor.  [pigz]
778 TOOL_POWERPCMKBOOTIMAGE Make bootable image for powerpc.  [powerpc-mkbootimage]
780 TOOL_PWD_MKDB           Generate the password databases.  [pwd_mkdb]
782 TOOL_REFER              Preprocess bibliographic references for groff.  [refer]
784 TOOL_ROFF_ASCII         Generate ASCII groff output.  [nroff]
786 TOOL_ROFF_DVI           Generate DVI groff output.  [${TOOL_GROFF} -Tdvi]
788 TOOL_ROFF_HTML          Generate HTML groff output.
789                         [${TOOL_GROFF} -Tlatin1 -mdoc2html]
791 TOOL_ROFF_PS            Generate PS groff output.  [${TOOL_GROFF} -Tps]
793 TOOL_ROFF_RAW           Generate "raw" groff output.  [${TOOL_GROFF} -Z]
795 TOOL_RPCGEN             Remote Procedure Call (RPC) protocol compiler.  [rpcgen]
797 TOOL_SED                Stream editor.  [sed]
799 TOOL_SOELIM             Eliminate .so's from groff input.  [soelim]
801 TOOL_SPARKCRC           Generate a crc suitable for use in a sparkive file.
802                         [sparkcrc]
804 TOOL_STAT               Display file status.  [stat]
806 TOOL_STRFILE            Create a random access file for storing strings.
807                         [strfile]
809 TOOL_SUNLABEL           Read or modify a SunOS disk label.  [sunlabel]
811 TOOL_TBL                Format tables for groff.  [tbl]
813 TOOL_UUDECODE           Uudecode a binary file.  [uudecode]
815 TOOL_VGRIND             Grind nice listings of programs.  [vgrind -f]
817 TOOL_ZIC                Time zone compiler.  [zic]
819 <bsd.own.mk> is generally useful when building your own Makefiles so that
820 they use the same default owners etc. as the rest of the tree.
823 =-=-=-=-=   bsd.clean.mk   =-=-=-=-=
825 The include file <bsd.clean.mk> defines the clean and cleandir
826 targets.  It uses the following variables:
828 CLEANFILES      Files to remove for both the clean and cleandir targets.
830 CLEANDIRFILES   Files to remove for the cleandir target, but not for
831                 the clean target.
833 MKCLEANSRC      Controls whether or not the clean and cleandir targets
834                 will delete files from both the object directory,
835                 ${.OBJDIR}, and the source directory, ${.CURDIR}.
837                 If MKCLEANSRC is set to "no", then the file names in
838                 CLEANFILES or CLEANDIRFILES are interpreted relative
839                 to the object directory, ${.OBJDIR}.  This is the
840                 traditional behaviour.
842                 If MKCLEANSRC is set to "yes", then the file deletion
843                 is performed relative to both the object directory,
844                 ${.OBJDIR}, and the source directory, ${.CURDIR}.  (This
845                 has no effect if ${.OBJDIR} is the same as ${.CURDIR}.)
846                 Deleting files from ${.CURDIR} is intended to remove
847                 stray output files that had been left in the source
848                 directory by an earlier build that did not use object
849                 directories.
851                 The default is MKCLEANSRC=yes.  If you always build with
852                 separate object directories, and you are sure that there
853                 are no stray files in the source directories, then you
854                 may set MKCLEANSRC=no to save some time.
856 MKCLEANVERIFY   Controls whether or not the clean and cleandir targets
857                 will verify that files have been deleted.
859                 If MKCLEANVERIFY is set to "no", then the files will
860                 be deleted using a "rm -f" command, and its success or
861                 failure will be ignored.
863                 If MKCLEANVERIFY is set to "yes", then the success of
864                 the "rm -f" command will be verified using an "ls"
865                 command.
867                 The default is MKCLEANVERIFY=yes.  If you are sure that
868                 there will be no problems caused by file permissions,
869                 read-only file systems, or the like, then you may set
870                 MKCLEANVERIFY=no to save some time.
872 To use the clean and cleandir targets defined in <bsd.clean.mk>, other
873 Makefiles or bsd.*.mk files should append file names to the CLEANFILES
874 or CLEANDIRFILES variables.  For example:
876             CLEANFILES+= a.out
877             CLEANDIRFILES+= .depend
879             .include <bsd.clean.mk>
882 =-=-=-=-=   bsd.dep.mk   =-=-=-=-=
884 The include file <bsd.dep.mk> contains the default targets for building
885 .depend files.  It creates .d files from entries in SRCS and DPSRCS
886 that are C, C++, or Objective C source files, and builds .depend from the
887 .d files.  All other files in SRCS and all of DPSRCS will be used as
888 dependencies for the .d files.  In order for this to function correctly,
889 it should be .included after all other .mk files and directives that may
890 modify SRCS or DPSRCS.  It uses the following variables:
892 SRCS            List of source files to build the program.
894 DPSRCS          List of source files which are needed for generating
895                 dependencies, but are not needed in ${SRCS}.
898 =-=-=-=-=   bsd.files.mk   =-=-=-=-=
900 The include file <bsd.files.mk> handles the FILES variables and is included
901 from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables:
903 FILES           The list of files to install.
905 CONFIGFILES     Similar semantics to FILES, except that the files
906                 are installed by the `configinstall' target,
907                 not the `install' target.
908                 The FILES* variables documented below also apply.
910 FILESOWN        File owner.  [${BINOWN}]
912 FILESGRP        File group.  [${BINGRP}]
914 FILESMODE       File mode.  [${NONBINMODE}]
916 FILESDIR        The location to install the files.
918 FILESNAME       Optional name to install each file as.
920 FILESOWN_<fn>   File owner of the specific file <fn>.
922 FILESGRP_<fn>   File group of the specific file <fn>.
924 FILESMODE_<fn>  File mode of the specific file <fn>.
926 FILESDIR_<fn>   The location to install the specific file <fn>.
928 FILESNAME_<fn>  Optional name to install <fn> as.
930 FILESBUILD      If this variable is defined, then its value will be
931                 used as the default for all FILESBUILD_<fn> variables.
932                 Otherwise, the default will be "no".
934 FILESBUILD_<fn> A value different from "no" will add the file to the list of
935                 targets to be built by `realall'.  Users of that variable
936                 should provide a target to build the file.
939 BUILDSYMLINKS   List of two word items:
940                         lnsrc lntgt
941                 For each lnsrc item, create a symlink named lntgt.
942                 The lntgt symlinks are removed by the cleandir target.
944 UUDECODE_FILES  List of files which are stored as <file>.uue in the source
945                 tree. Each one will be decoded with ${TOOL_UUDECODE}.
946                 The source files have a `.uue' suffix, the generated files do
947                 not.
949 UUDECODE_FILES_RENAME_<fn>
950                 Rename the output from the decode to the provided name.
951                 
952                 *NOTE: These files are simply decoded, with no install or other
953                        rule applying implicitly except being added to the clean
954                        target.
956 =-=-=-=-=   bsd.gcc.mk   =-=-=-=-=
958 The include file <bsd.gcc.mk> computes various parameters related to GCC
959 support libraries.  It defines no targets.  <bsd.own.mk> MUST be included
960 before <bsd.gcc.mk>.
962 The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each
963 of which need to know where to find certain GCC support libraries.
965 The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable,
966 which is generally set by the user.  If EXTERNAL_TOOLCHAIN it set, then
967 the compiler is asked where to find the support libraries, otherwise the
968 support libraries are found in ${DESTDIR}/usr/lib.
970 <bsd.gcc.mk> sets the following variables:
972 _GCC_CRTBEGIN   The full path name to crtbegin.o.
974 _GCC_CRTBEGINS  The full path name to crtbeginS.o.
976 _GCC_CRTEND     The full path name to crtend.o.
978 _GCC_CRTENDS    The full path name to crtendS.o.
980 _GCC_LIBGCCDIR  The directory where libgcc.a is located.
983 =-=-=-=-=   bsd.inc.mk   =-=-=-=-=
985 The include file <bsd.inc.mk> defines the includes target and uses the
986 variables:
988 INCS            The list of include files.
990 INCSDIR         The location to install the include files.
992 INCSNAME        Target name of the include file, if only one; same as
993                 FILESNAME, but for include files.
995 INCSYMLINKS     Similar to SYMLINKS in <bsd.links.mk>, except that these
996                 are installed in the 'includes' target and not the
997                 (much later) 'install' target.
999 INCSNAME_<file> The name file <file> should be installed as, if not <file>,
1000                 same as FILESNAME_<file>, but for include files.
1003 =-=-=-=-=   bsd.info.mk   =-=-=-=-=
1005 The include file <bsd.info.mk> is used to generate and install GNU Info
1006 documentation from respective Texinfo source files.  It defines three
1007 implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
1008 following variables:
1010 TEXINFO         List of Texinfo source files.  Info documentation will
1011                 consist of single files with the extension replaced by
1012                 .info.
1014 INFOFLAGS       Flags to pass to makeinfo.  []
1017 =-=-=-=-=   bsd.kernobj.mk   =-=-=-=-=
1019 The include file <bsd.kernobj.mk> defines variables related to the
1020 location of kernel sources and object directories.
1022 KERNSRCDIR      Is the location of the top of the kernel src.
1023                 [${_SRC_TOP_}/sys]
1025 KERNARCHDIR     Is the location of the machine dependent kernel sources.
1026                 [arch/${MACHINE}]
1028 KERNCONFDIR     Is where the configuration files for kernels are found.
1029                 [${KERNSRCDIR}/${KERNARCHDIR}/conf]
1031 KERNOBJDIR      Is the kernel build directory.  The kernel GENERIC for
1032                 instance will be compiled in ${KERNOBJDIR}/GENERIC.
1033                 The default value is
1034                 ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile
1035                 if it exists or the target 'obj' is being made.
1036                 Otherwise the default is
1037                 ${KERNSRCDIR}/${KERNARCHDIR}/compile.
1039 It is important that Makefiles (such as those under src/distrib) that
1040 wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR}
1041 rather than make assumptions about the location of the compiled kernel.
1044 =-=-=-=-=   bsd.kinc.mk   =-=-=-=-=
1046 The include file <bsd.kinc.mk> defines the many targets (includes,
1047 subdirectories, etc.), and is used by kernel makefiles to handle
1048 include file installation.  It is intended to be included alone, by
1049 kernel Makefiles.  It uses similar variables to <bsd.inc.mk>.
1050 Please see <bsd.kinc.mk> for more details, and keep the documentation
1051 in that file up to date.
1054 =-=-=-=-=   bsd.lib.mk   =-=-=-=-=
1056 The include file <bsd.lib.mk> has support for building libraries.  It has
1057 the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
1058 includes, install, lint, and tags.  Additionally, it has a checkver target
1059 which checks for installed shared object libraries whose version is greater
1060 that the version of the source. It has a limited number of suffixes,
1061 consistent with the current needs of the BSD tree.  <bsd.lib.mk> includes
1062 <bsd.shlib.mk> to get shared library parameters.
1064 It sets/uses the following variables:
1066 LIB             The name of the library to build.
1068 LIBDIR          Target directory for libraries.
1070 MKARZERO        Normally, ar(1) sets the timestamps, uid, gid and
1071                 permissions in files inside its archives to those of
1072                 the file it was fed. This leads to non-reproduceable
1073                 builds. If MKARZERO is set to "yes" (default is "no")
1074                 then the "D" flag is passed to ar, causing the
1075                 timestamp, uid and gid to be zeroed and the file
1076                 permissions to be set to 644. This allows .a files
1077                 from different builds to be bit identical.
1079 SHLIBINSTALLDIR Target directory for shared libraries if ${USE_SHLIBDIR}
1080                 is not "no".
1082 SHLIB_MAJOR
1083 SHLIB_MINOR
1084 SHLIB_TEENY     Major, minor, and teeny version numbers of shared library
1086 USE_SHLIBDIR    If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR}
1087                 as the path to install shared libraries to.
1088                 USE_SHLIBDIR must be defined before <bsd.own.mk> is included.
1089                 Default: no
1091 LIBISMODULE     If not "no", install as ${LIB}.so (without the "lib" prefix),
1092                 and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no
1093                 MKPROFILE=no MKSTATICLIB=no".
1094                 Default: no
1096 LIBISPRIVATE    If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no
1097                 MKPROFILE=no", and don't install the (.a) library.
1098                 This is useful for "build only" helper libraries.
1099                 Default: no
1101 LIBISCXX        If not "no", Use ${CXX} instead of ${CC} to link
1102                 shared libraries.
1103                 This is useful for C++ libraries.
1104                 Default: no
1106 LINTLIBDIR      Target directory for lint libraries.
1108 LIBGRP          Library group.
1110 LIBOWN          Library owner.
1112 LIBMODE         Library mode.
1114 LDADD           Additional loader objects.
1116 MAN             The manual pages to be installed (use a .1 - .9 suffix).
1118 NOCHECKVER_<library>
1119 NOCHECKVER      If set, disables checking for installed shared object
1120                 libraries with versions greater than the source.  A
1121                 particular library name, without the "lib" prefix, may
1122                 be appended to the variable name to disable the check for
1123                 only that library.
1125 SRCS            List of source files to build the library.  Suffix types
1126                 .s, .c, and .f are supported.  Note, .s files are preferred
1127                 to .c files of the same name.  (This is not the default for
1128                 versions of make.)
1130 LIBDPLIBS       A list of the tuples:
1131                         libname  path-to-srcdir-of-libname
1133                 For each tuple;
1134                      *  LIBDO.libname contains the .OBJDIR of the library
1135                         `libname', and if it is not set it is determined
1136                         from the srcdir and added to MAKEOVERRIDES (the
1137                         latter is to allow for build time optimization).
1138                      *  LDADD gets  -L${LIBDO.libname} -llibname    added.
1139                      *  DPADD gets  ${LIBDO.libname}/liblibname.so  or
1140                                     ${LIBDO.libname}/liblibname.a   added.
1142                 This variable may be used for individual libraries, as
1143                 well as in parent directories to cache common libraries
1144                 as a build-time optimization.
1146 The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
1147 if it exists, as well as the include file <bsd.man.mk>.
1149 It has rules for building profiled objects; profiled libraries are
1150 built by default.
1152 Libraries are ranlib'd when made.
1155 =-=-=-=-=   bsd.links.mk   =-=-=-=-=
1157 The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
1158 and is included from from <bsd.lib.mk> and <bsd.prog.mk>.
1160 LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log
1161 is used. The defaults may be modified by other bsd.*.mk files which
1162 include bsd.links.mk.  In the future, these variables may be replaced
1163 by a method for explicitly recording hard links in a metadata log.
1165 LINKS           The list of hard links, consisting of pairs of paths:
1166                         source-file target-file
1167                 ${DESTDIR} is prepended to both paths before linking.
1168                 For example, to link /bin/test and /bin/[, use:
1169                         LINKS=/bin/test /bin/[
1171 CONFIGLINKS     Similar semantics to LINKS, except that the links
1172                 are installed by the `configinstall' target,
1173                 not the `install' target.
1175 SYMLINKS        The list of symbolic links, consisting of pairs of paths:
1176                         source-file target-file
1177                 ${DESTDIR} is only prepended to target-file before linking.
1178                 For example, to symlink /usr/bin/tar to /bin/tar resulting
1179                 in ${DESTDIR}/usr/bin/tar -> /bin/tar:
1180                         SYMLINKS=/bin/tar /usr/bin/tar
1182 CONFIGSYMLINKS  Similar semantics to SYMLINKS, except that the symbolic links
1183                 are installed by the `configinstall' target,
1184                 not the `install' target.
1186 LINKSOWN        Link owner.  [${BINOWN}]
1188 LINKSGRP        Link group.  [${BINGRP}]
1190 LINKSMODE       Link mode.  [${NONBINMODE}]
1192 LINKSOWN_<fn>   Link owner of the specific file <fn>.
1194 LINKSGRP_<fn>   Link group of the specific file <fn>.
1196 LINKSMODE_<fn>  Link mode of the specific file <fn>.
1199 =-=-=-=-=   bsd.man.mk   =-=-=-=-=
1201 The include file <bsd.man.mk> handles installing manual pages and their
1202 links.
1204 It has a three targets:
1206         catinstall:
1207                 Install the preformatted manual pages and their links.
1208         htmlinstall:
1209                 Install the HTML manual pages and their links.
1210         maninstall:
1211                 Install the manual page sources and their links.
1213 It sets/uses the following variables:
1215 MANDIR          Base path for manual installation.
1217 MANGRP          Manual group.
1219 MANOWN          Manual owner.
1221 MANMODE         Manual mode.
1223 MANSUBDIR       Subdirectory under the manual page section, i.e. "/vax"
1224                 or "/tahoe" for machine specific manual pages.
1226 MAN             The manual pages to be installed (use a .1 - .9 suffix).
1228 MLINKS          List of manual page links (using a .1 - .9 suffix).  The
1229                 linked-to file must come first, the linked file second,
1230                 and there may be multiple pairs.
1232 The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
1233 it exists.
1236 =-=-=-=-=   bsd.obj.mk   =-=-=-=-=
1238 The include file <bsd.obj.mk> defines targets related to the creation
1239 and use of separated object and source directories.
1241 If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses
1242 ${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if
1243 it exists.  Otherwise make(1) looks for the existence of a
1244 subdirectory (or a symlink to a directory) of the source directory
1245 into which built targets should be placed.  If an environment variable
1246 named MAKEOBJDIR is set, make(1) uses its value as the name of the
1247 object directory; failing that, make first looks for a subdirectory
1248 named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj".
1250 Object directories are not created automatically by make(1) if they
1251 don't exist; you need to run a separate "make obj".  (This will happen
1252 during a top-level build if "MKOBJDIRS" is set to a value other than
1253 "no").  When the source directory is a subdirectory of ${BSDSRCDIR} --
1254 and this is determined by a simple string prefix comparison -- object
1255 directories are created in a separate object directory tree, and a
1256 symlink to the object directory in that tree is created in the source
1257 directory; otherwise, "make obj" assumes that you're not in the main
1258 source tree and that it's not safe to use a separate object tree.
1260 Several variables used by <bsd.obj.mk> control exactly what
1261 directories and links get created during a "make obj":
1263 MAKEOBJDIR      If set, this is the component name of the object
1264                 directory.
1266 OBJMACHINE      If this is set but MAKEOBJDIR is not set, creates
1267                 object directories or links named "obj.${MACHINE}";
1268                 otherwise, just creates ones named "obj".
1270 USR_OBJMACHINE  If set, and the current directory is a subdirectory of
1271                 ${BSDSRCDIR}, create object directory in the
1272                 corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
1273                 otherwise, create it in the corresponding subdirectory
1274                 of ${BSDOBJDIR}
1276 BUILDID         If set, the contents of this variable are appended
1277                 to the object directory name.  If OBJMACHINE is also
1278                 set, ".${BUILDID}" is added after ".${MACHINE}".
1281 =-=-=-=-=   bsd.prog.mk   =-=-=-=-=
1283 The include file <bsd.prog.mk> handles building programs from one or
1284 more source files, along with their manual pages.  It has a limited number
1285 of suffixes, consistent with the current needs of the BSD tree.
1286 <bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters.
1288 It has eight targets:
1290         all:
1291                 build the program and its manual page.  This also
1292                 creates a GDB initialization file (.gdbinit) in
1293                 the objdir.  The .gdbinit file sets the shared library
1294                 prefix to ${DESTDIR} to facilitate cross-debugging.
1295         clean:
1296                 remove the program, any object files and the files a.out,
1297                 Errs, errs, mklog, and ${PROG}.core.
1298         cleandir:
1299                 remove all of the files removed by the target clean, as
1300                 well as .depend, tags, and any manual pages.
1301                 `distclean' is a synonym for `cleandir'.
1302         depend:
1303                 make the dependencies for the source files, and store
1304                 them in the file .depend.
1305         includes:
1306                 install any header files.
1307         install:
1308                 install the program and its manual pages; if the Makefile
1309                 does not itself define the target install, the targets
1310                 beforeinstall and afterinstall may also be used to cause
1311                 actions immediately before and after the install target
1312                 is executed.
1313         lint:
1314                 run lint on the source files
1315         tags:
1316                 create a tags file for the source files.
1318 It sets/uses the following variables:
1320 BINGRP          Binary group.
1322 BINOWN          Binary owner.
1324 BINMODE         Binary mode.
1326 CLEANDIRFILES   Additional files to remove for the cleandir target.
1328 CLEANFILES      Additional files to remove for the clean and cleandir targets.
1330 COPTS           Additional flags to the compiler when creating C objects.
1332 COPTS.<fn>      Additional flags to the compiler when creating the
1333                 C objects for <fn>.
1334                 For <fn>.[ly], "<fn>.c" must be used.
1336 CPUFLAGS        Additional flags to the compiler/assembler to select
1337                 CPU instruction set options, CPU tuning options, etc.
1339 CPUFLAGS.<fn>   Additional flags to the compiler/assembler for <fn>.
1340                 For <fn>.[ly], "<fn>.c" must be used.
1342 CPPFLAGS        Additional flags to the C pre-processor.
1344 CPPFLAGS.<fn>   Additional flags to the C pre-processor for <fn>.
1345                 For <fn>.[ly], "<fn>.c" must be used.
1347 GDBINIT         List of GDB initialization files to add to "source"
1348                 directives in the .gdbinit file that is created in the
1349                 objdir.
1351 LDADD           Additional loader objects.  Usually used for libraries.
1352                 For example, to load with the compatibility and utility
1353                 libraries, use:
1355                         LDADD+=-lutil -lcompat
1357 LDFLAGS         Additional linker flags (passed to ${CC} during link).
1359 LINKS           See <bsd.links.mk>
1361 OBJCOPTS        Additional flags to the compiler when creating ObjC objects.
1363 OBJCOPTS.<fn>   Additional flags to the compiler when creating the
1364                 ObjC objects for <fn>.
1365                 For <fn>.[ly], "<fn>.c" must be used.
1367 SYMLINKS        See <bsd.links.mk>
1369 MAN             Manual pages (should end in .1 - .9).  If no MAN variable is
1370                 defined, "MAN=${PROG}.1" is assumed.
1372 PAXCTL_FLAGS    If defined, run paxctl(1) on the program binary after link
1373                 time, with the value of this variable as args to paxctl(1).
1375 PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS.
1377 PROG            The name of the program to build.  If not supplied, nothing
1378                 is built.
1380 PROG_CXX        If defined, the name of the program to build.  Also
1381                 causes <bsd.prog.mk> to link the program with the C++
1382                 compiler rather than the C compiler.  PROG_CXX overrides
1383                 the value of PROG if PROG is also set.
1385 PROGNAME        The name that the above program will be installed as, if
1386                 different from ${PROG}.
1388 SRCS            List of source files to build the program.  If SRCS is not
1389                 defined, it's assumed to be ${PROG}.c.
1391 DPSRCS          List of source files which are needed for generating
1392                 dependencies, but are not needed in ${SRCS}.
1394 DPADD           Additional dependencies for the program.  Usually used for
1395                 libraries.  For example, to depend on the compatibility and
1396                 utility libraries use:
1398                         DPADD+=${LIBCOMPAT} ${LIBUTIL}
1400                 The following system libraries are predefined for DPADD:
1402                 LIBARCHIVE?=    ${DESTDIR}/usr/lib/libarchive.a
1403                 LIBASN1?=       ${DESTDIR}/usr/lib/libasn1.a
1404                 LIBATF_C?=      ${DESTDIR}/usr/lib/libatf-c.a
1405                 LIBATF_CXX?=    ${DESTDIR}/usr/lib/libatf-c++.a
1406                 LIBBIND9?=      ${DESTDIR}/usr/lib/libbind9.a
1407                 LIBBLUETOOTH?=  ${DESTDIR}/usr/lib/libbluetooth.a
1408                 LIBBSDMALLOC?=  ${DESTDIR}/usr/lib/libbsdmalloc.a
1409                 LIBBZ2?=        ${DESTDIR}/usr/lib/libbz2.a
1410                 LIBC?=          ${DESTDIR}/usr/lib/libc.a
1411                 LIBCOMPAT?=     ${DESTDIR}/usr/lib/libcompat.a
1412                 LIBCOM_ERR?=    ${DESTDIR}/usr/lib/libcom_err.a
1413                 LIBCRT0?=       ${DESTDIR}/usr/lib/crt0.o
1414                 LIBCRYPT?=      ${DESTDIR}/usr/lib/libcrypt.a
1415                 LIBCRYPTO?=     ${DESTDIR}/usr/lib/libcrypto.a
1416                 LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a
1417                 LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a
1418                 LIBCRYPTO_RC5?= ${DESTDIR}/usr/lib/libcrypto_rc5.a
1419                 LIBCURSES?=     ${DESTDIR}/usr/lib/libcurses.a
1420                 LIBC_PIC?=      ${DESTDIR}/usr/lib/libc_pic.a
1421                 LIBDBM?=        ${DESTDIR}/usr/lib/libdbm.a
1422                 LIBDES?=        ${DESTDIR}/usr/lib/libdes.a
1423                 LIBDNS?=        ${DESTDIR}/usr/lib/libdns.a
1424                 LIBEDIT?=       ${DESTDIR}/usr/lib/libedit.a
1425                 LIBEVENT?=      ${DESTDIR}/usr/lib/libevent.a
1426                 LIBEXPAT?=      ${DESTDIR}/usr/lib/libexpat.a
1427                 LIBFETCH?=      ${DESTDIR}/usr/lib/libfetch.a
1428                 LIBFORM?=       ${DESTDIR}/usr/lib/libform.a
1429                 LIBFL?=         ${DESTDIR}/usr/lib/libfl.a
1430                 LIBG2C?=        ${DESTDIR}/usr/lib/libg2c.a
1431                 LIBGCC?=        ${DESTDIR}/usr/lib/libgcc.a
1432                 LIBGNUMALLOC?=  ${DESTDIR}/usr/lib/libgnumalloc.a
1433                 LIBGSSAPI?=     ${DESTDIR}/usr/lib/libgssapi.a
1434                 LIBHDB?=        ${DESTDIR}/usr/lib/libhdb.a
1435                 LIBHEIMBASE?=   ${DESTDIR}/usr/lib/libheimbase.a
1436                 LIBHEIMNTLM?=   ${DESTDIR}/usr/lib/libheimntlm.a
1437                 LIBHX500?=      ${DESTDIR}/usr/lib/libhx500.a
1438                 LIBINTL?=       ${DESTDIR}/usr/lib/libintl.a
1439                 LIBIPSEC?=      ${DESTDIR}/usr/lib/libipsec.a
1440                 LIBISC?=        ${DESTDIR}/usr/lib/libisc.a
1441                 LIBISCCC?=      ${DESTDIR}/usr/lib/libisccc.a
1442                 LIBISCFG?=      ${DESTDIR}/usr/lib/libiscfg.a
1443                 LIBKADM5CLNT?=  ${DESTDIR}/usr/lib/libkadm5clnt.a
1444                 LIBKADM5SRV?=   ${DESTDIR}/usr/lib/libkadm5srv.a
1445                 LIBKAFS?=       ${DESTDIR}/usr/lib/libkafs.a
1446                 LIBKRB5?=       ${DESTDIR}/usr/lib/libkrb5.a
1447                 LIBKVM?=        ${DESTDIR}/usr/lib/libkvm.a
1448                 LIBL?=          ${DESTDIR}/usr/lib/libl.a
1449                 LIBLBER?=       ${DESTDIR}/usr/lib/liblber.a
1450                 LIBLDAP?=       ${DESTDIR}/usr/lib/libldap.a
1451                 LIBLDAP_R?=     ${DESTDIR}/usr/lib/libldap_r.a
1452                 LIBLUA?=        ${DESTDIR}/usr/lib/liblua.a
1453                 LIBLWRES?=      ${DESTDIR}/usr/lib/liblwres.a
1454                 LIBM?=          ${DESTDIR}/usr/lib/libm.a
1455                 LIBMAGIC?=      ${DESTDIR}/usr/lib/libmagic.a
1456                 LIBMENU?=       ${DESTDIR}/usr/lib/libmenu.a
1457                 LIBOBJC?=       ${DESTDIR}/usr/lib/libobjc.a
1458                 LIBOSSAUDIO?=   ${DESTDIR}/usr/lib/libossaudio.a
1459                 LIBPAM?=        ${DESTDIR}/usr/lib/libpam.a
1460                 LIBPCAP?=       ${DESTDIR}/usr/lib/libpcap.a
1461                 LIBPCI?=        ${DESTDIR}/usr/lib/libpci.a
1462                 LIBPMC?=        ${DESTDIR}/usr/lib/libpmc.a
1463                 LIBPOSIX?=      ${DESTDIR}/usr/lib/libposix.a
1464                 LIBPTHREAD?=    ${DESTDIR}/usr/lib/libpthread.a
1465                 LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a
1466                 LIBPUFFS?=      ${DESTDIR}/usr/lib/libpuffs.a
1467                 LIBQUOTA?=      ${DESTDIR}/usr/lib/libquota.a
1468                 LIBRADIUS?=     ${DESTDIR}/usr/lib/libradius.a
1469                 LIBRESOLV?=     ${DESTDIR}/usr/lib/libresolv.a
1470                 LIBRMT?=        ${DESTDIR}/usr/lib/librmt.a
1471                 LIBROKEN?=      ${DESTDIR}/usr/lib/libroken.a
1472                 LIBRPCSVC?=     ${DESTDIR}/usr/lib/librpcsvc.a
1473                 LIBRT?=         ${DESTDIR}/usr/lib/librt.a
1474                 LIBRUMP?=       ${DESTDIR}/usr/lib/librump.a
1475                 LIBRUMPFS_CD9660FS?=${DESTDIR}/usr/lib/librumpfs_cd9660fs.a
1476                 LIBRUMPFS_EFS?= ${DESTDIR}/usr/lib/librumpfs_efs.a
1477                 LIBRUMPFS_EXT2FS?=${DESTDIR}/usr/lib/librumpfs_ext2fs.a
1478                 LIBRUMPFS_FFS?= ${DESTDIR}/usr/lib/librumpfs_ffs.a
1479                 LIBRUMPFS_HFS?= ${DESTDIR}/usr/lib/librumpfs_hfs.a
1480                 LIBRUMPFS_LFS?= ${DESTDIR}/usr/lib/librumpfs_lfs.a
1481                 LIBRUMPFS_MSDOSFS?=${DESTDIR}/usr/lib/librumpfs_msdosfs.a
1482                 LIBRUMPFS_NFS?= ${DESTDIR}/usr/lib/librumpfs_nfs.a
1483                 LIBRUMPFS_NTFS?=${DESTDIR}/usr/lib/librumpfs_ntfs.a
1484                 LIBRUMPFS_SYSPUFFS?=${DESTDIR}/usr/lib/librumpfs_syspuffs.a
1485                 LIBRUMPFS_TMPFS?=${DESTDIR}/usr/lib/librumpfs_tmpfs.a
1486                 LIBRUMPFS_UDF?= ${DESTDIR}/usr/lib/librumpfs_udf.a
1487                 LIBRUMPFS_UFS?= ${DESTDIR}/usr/lib/librumpfs_ufs.a
1488                 LIBRUMPUSER?=   ${DESTDIR}/usr/lib/librumpuser.a
1489                 LIBSASLC?=      ${DESTDIR}/usr/lib/libsaslc.a
1490                 LIBSKEY?=       ${DESTDIR}/usr/lib/libskey.a
1491                 LIBSL?=         ${DESTDIR}/usr/lib/libsl.a
1492                 LIBSQLITE3?=    ${DESTDIR}/usr/lib/libsqlite3.a
1493                 LIBSS?=         ${DESTDIR}/usr/lib/libss.a
1494                 LIBSSH?=        ${DESTDIR}/usr/lib/libssh.a
1495                 LIBSSL?=        ${DESTDIR}/usr/lib/libssl.a
1496                 LIBSSP?=        ${DESTDIR}/usr/lib/libssp.a
1497                 LIBSTDCXX?=     ${DESTDIR}/usr/lib/libstdc++.a
1498                 LIBSUPCXX?=     ${DESTDIR}/usr/lib/libsupc++.a
1499                 LIBTERMINFO?=   ${DESTDIR}/usr/lib/libterminfo.a
1500                 LIBTRE?=        ${DESTDIR}/usr/lib/libtre.a
1501                 LIBUSBHID?=     ${DESTDIR}/usr/lib/libusbhid.a
1502                 LIBUTIL?=       ${DESTDIR}/usr/lib/libutil.a
1503                 LIBWIND?=       ${DESTDIR}/usr/lib/libwind.a
1504                 LIBWRAP?=       ${DESTDIR}/usr/lib/libwrap.a
1505                 LIBY?=          ${DESTDIR}/usr/lib/liby.a
1506                 LIBZ?=          ${DESTDIR}/usr/lib/libz.a
1508                 The following X-Windows libraries are predefined for DPADD:
1510                 LIBFS?=         ${DESTDIR}/usr/X11R7/lib/libFS.a
1511                 LIBGL?=         ${DESTDIR}/usr/X11R7/lib/libGL.a
1512                 LIBGLU?=        ${DESTDIR}/usr/X11R7/lib/libGLU.a
1513                 LIBICE?=        ${DESTDIR}/usr/X11R7/lib/libICE.a
1514                 LIBSM?=         ${DESTDIR}/usr/X11R7/lib/libSM.a
1515                 LIBX11?=        ${DESTDIR}/usr/X11R7/lib/libX11.a
1516                 LIBXTRAP?=      ${DESTDIR}/usr/X11R7/lib/libXTrap.a
1517                 LIBXAU?=        ${DESTDIR}/usr/X11R7/lib/libXau.a
1518                 LIBXAW?=        ${DESTDIR}/usr/X11R7/lib/libXaw.a
1519                 LIBXDMCP?=      ${DESTDIR}/usr/X11R7/lib/libXdmcp.a
1520                 LIBXEXT?=       ${DESTDIR}/usr/X11R7/lib/libXext.a
1521                 LIBXFONT?=      ${DESTDIR}/usr/X11R7/lib/libXfont.a
1522                 LIBXFT?=        ${DESTDIR}/usr/X11R7/lib/libXft.a
1523                 LIBXI?=         ${DESTDIR}/usr/X11R7/lib/libXi.a
1524                 LIBXINERAMA?=   ${DESTDIR}/usr/X11R7/lib/libXinerama.a
1525                 LIBXMU?=        ${DESTDIR}/usr/X11R7/lib/libXmu.a
1526                 LIBXMUU?=       ${DESTDIR}/usr/X11R7/lib/libXmuu.a
1527                 LIBXPM?=        ${DESTDIR}/usr/X11R7/lib/libXpm.a
1528                 LIBXRANDR?=     ${DESTDIR}/usr/X11R7/lib/libXrandr.a
1529                 LIBXRENDER?=    ${DESTDIR}/usr/X11R7/lib/libXrender.a
1530                 LIBXSS?=        ${DESTDIR}/usr/X11R7/lib/libXss.a
1531                 LIBXT?=         ${DESTDIR}/usr/X11R7/lib/libXt.a
1532                 LIBXTST?=       ${DESTDIR}/usr/X11R7/lib/libXtst.a
1533                 LIBXV?=         ${DESTDIR}/usr/X11R7/lib/libXv.a
1534                 LIBXXF86DGA?=   ${DESTDIR}/usr/X11R7/lib/libXxf86dga.a
1535                 LIBXXF86MISC?=  ${DESTDIR}/usr/X11R7/lib/libXxf86misc.a
1536                 LIBXXF86VM?=    ${DESTDIR}/usr/X11R7/lib/libXxf86vm.a
1537                 LIBDPS?=        ${DESTDIR}/usr/X11R7/lib/libdps.a
1538                 LIBFNTSTUBS?=   ${DESTDIR}/usr/X11R7/lib/libfntstubs.a
1539                 LIBFONTCACHE?=  ${DESTDIR}/usr/X11R7/lib/libfontcache.a
1540                 LIBFONTCONFIG?= ${DESTDIR}/usr/X11R7/lib/libfontconfig.a
1541                 LIBFONTENC?=    ${DESTDIR}/usr/X11R7/lib/libfontenc.a
1542                 LIBFREETYPE?=   ${DESTDIR}/usr/X11R7/lib/libfreetype.a
1543                 LIBLBXUTIL?=    ${DESTDIR}/usr/X11R7/lib/liblbxutil.a
1544                 LIBXKBFILE?=    ${DESTDIR}/usr/X11R7/lib/libxkbfile.a
1546 SHAREDSTRINGS   If defined, a new .c.o rule is used that results in shared
1547                 strings, using xstr(1). Note that this will not work with
1548                 parallel makes.
1550 STRIPFLAG       The flag passed to the install program to cause the binary
1551                 to be stripped.
1553 SUBDIR          A list of subdirectories that should be built as well.
1554                 Each of the targets will execute the same target in the
1555                 subdirectories.
1557 SCRIPTS         A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
1558                 These are installed exactly like programs.
1560 SCRIPTSDIR      The location to install the scripts.  Each script can be
1561                 installed to a separate path by setting SCRIPTSDIR_<script>.
1563 SCRIPTSNAME     The name that the above program will be installed as, if
1564                 different from ${SCRIPTS}. These can be further specialized
1565                 by setting SCRIPTSNAME_<script>.
1567 FILES           See description of <bsd.files.mk>.
1569 SHLINKDIR       Target directory for shared linker.  See description of
1570                 <bsd.own.mk> for additional information about this variable.
1572 The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
1573 if it exists, as well as the include file <bsd.man.mk>.
1575 Some simple examples:
1577 To build foo from foo.c with a manual page foo.1, use:
1579         PROG=   foo
1581         .include <bsd.prog.mk>
1583 To build foo from foo.c with a manual page foo.2, add the line:
1585         MAN=    foo.2
1587 If foo does not have a manual page at all, add the line:
1589         MKMAN=  no
1591 If foo has multiple source files, add the line:
1593         SRCS=   a.c b.c c.c d.c
1596 =-=-=-=-=   bsd.rpc.mk   =-=-=-=-=
1598 The include file <bsd.rpc.mk> contains a makefile fragment used to
1599 construct source files built by rpcgen.
1601 The following macros may be defined in makefiles which include
1602 <bsd.rpc.mk> in order to control which files get built and how they
1603 are to be built:
1605 RPC_INCS:       construct .h file from .x file
1606 RPC_XDRFILES:   construct _xdr.c from .x file
1607                 (for marshalling/unmarshalling data types)
1608 RPC_SVCFILES:   construct _svc.c from .x file
1609                 (server-side stubs)
1610 RPC_SVCFLAGS:   Additional flags passed to builds of RPC_SVCFILES.
1612 RPC_XDIR:       Directory containing .x/.h files
1615 =-=-=-=-=   bsd.shlib.mk   =-=-=-=-=
1617 The include file <bsd.shlib.mk> computes parameters for shared library
1618 installation and use.  It defines no targets.  <bsd.own.mk> MUST be
1619 included before <bsd.shlib.mk>.
1621 <bsd.own.mk> sets the following variables, if they are not already defined
1622 (defaults are in brackets):
1624 SHLIBINSTALLDIR If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
1625                 instead of ${LIBDIR} as the base path for shared library
1626                 installation.  [/lib]
1628 SHLIBDIR        The path to USE_SHLIBDIR shared libraries to use when building
1629                 a program.  [/lib for programs in /bin and /sbin, /usr/lib
1630                 for all others.]
1632 _LIBSODIR       Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no",
1633                 otherwise set to ${LIBDIR}
1635 SHLINKINSTALLDIR Base path for shared linker.  [/libexec]
1637 SHLINKDIR       Path to use for shared linker when building a program.
1638                 [/libexec for programs in /bin and /sbin, /usr/libexec for
1639                 all others.]
1642 =-=-=-=-=   bsd.subdir.mk   =-=-=-=-=
1644 The include file <bsd.subdir.mk> contains the default targets for building
1645 subdirectories.  It has the same eight targets as <bsd.prog.mk>: all,
1646 clean, cleandir, depend, includes, install, lint, and tags.  It uses the
1647 following variables:
1649 NOSUBDIR        If this variable is defined, then the SUBDIR variable
1650                 will be ignored and subdirectories will not be processed.
1652 SUBDIR          For all of the directories listed in ${SUBDIR}, the
1653                 specified directory will be visited and the target made.
1655                 As a special case, the use of a token .WAIT as an
1656                 entry in SUBDIR acts as a synchronization barrier
1657                 when multiple make jobs are run; subdirs before the
1658                 .WAIT must complete before any subdirs after .WAIT are
1659                 started.  See make(1) for some caveats on use of .WAIT
1660                 and other special sources.
1663 =-=-=-=-=   bsd.sys.mk   =-=-=-=-=
1665 The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
1666 <bsd.lib.mk>.  It contains overrides that are used when building
1667 the NetBSD source tree.
1669 The following variables control how various files are compiled/built.
1670 (Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"):
1672 AR              Create, modify, and extract from archives.  [ar]
1674 ARFLAGS         Options to ${AR}.  [rl]
1676 AS              Assembler.  [as]
1678 AFLAGS          Options to ${CC} when compiling or linking .s or .S
1679                 assembly source files.  []
1681 BUILDSEED       GCC uses random numbers when compiling C++ code.
1682                 If this option is present, seed the random number
1683                 generator based on the value, source file names and
1684                 the output file name to make builds more deterministic.
1685                 Additional information is available in the GCC
1686                 documentation of -frandom-seed.
1688 CC              C compiler.  [cc]
1690 CFLAGS          Options to ${CC}.  [Usually -O or -O2]
1692 CPP             C Pre-Processor.  [cpp]
1694 CPPFLAGS        Options to ${CPP}.  []
1696 CPUFLAGS        Optimization flags for ${CC}.  []
1698 CXX             C++ compiler.  [c++]
1700 CXXFLAGS        Options to ${CXX}.  [${CFLAGS}]
1702 ELF2ECOFF       Convert ELF-format executable to ECOFF.  [elf2ecoff]
1704 FC              Fortran compiler.  [f77]
1706 FFLAGS          Options to {$FC}.  [-O]
1708 HOST_SH         Shell.  This must be an absolute path, because it may be
1709                 substituted into "#!" lines in scripts.  [/bin/sh]
1711 INSTALL         install(1) command.  [install]
1713 LEX             Lexical analyzer.  [lex]
1715 LFLAGS          Options to ${LEX}.  []
1717 LPREFIX         Symbol prefix for ${LEX} (see -P option in lex(1)) [yy]
1719 LD              Linker.  [ld]
1721 LDFLAGS         Options to ${CC} during the link process.  []
1723 LINT            C program verifier.  [lint]
1725 LINTFLAGS       Options to ${LINT}.  [-chapbxzFS]
1727 LORDER          List dependencies for object files.  [lorder]
1729 MAKE            make(1).  [make]
1731 MKDEP           Construct Makefile dependency list.  [mkdep]
1733 NM              List symbols from object files.  [nm]
1735 PC              Pascal compiler.  [pc]  (Not present)
1737 PFLAGS          Options to ${PC}.  []
1739 OBJC            Objective C compiler.  [${CC}]
1741 OBJCFLAGS       Options to ${OBJC}.  [${CFLAGS}]
1743 OBJCOPY         Copy and translate object files.  [objcopy]
1745 OBJCOPYLIBFLAGS Flags to pass to objcopy when library objects are
1746                 being built. [${.TARGET} =~ "*.po" ? -X : -x]
1748 OBJDUMP         Display information from object files.  [objdump]
1750 RANLIB          Generate index to archive.  [ranlib]
1752 SIZE            List section sizes and total size.  [size]
1754 STRIP           Discard symbols from object files.  [strip]
1756 TSORT           Topological sort of a directed graph.  [tsort -q]
1758 YACC            LALR(1) parser generator.  [yacc]
1760 YFLAGS          Options to ${YACC}.  []
1762 YHEADER         If defined, add "-d" to YFLAGS, and add dependencies
1763                 from <file>.y to <file>.h and <file>.c, and add
1764                 <foo>.h to CLEANFILES.
1766 YPREFIX         If defined, add "-p ${YPREFIX}" to YFLAGS.
1769 Other variables of note (incomplete list):
1771 NOGCCERROR      If defined, prevents passing certain ${CFLAGS} to GCC
1772                 that cause warnings to be fatal, such as:
1773                         -Werror -Wa,--fatal-warnings
1774                 (The latter being for as(1).)
1776 NOCLANGERROR    If defined and clang is used as C compiler, -Werror is not
1777                 passed to it.
1779 WARNS           Crank up compiler warning options; the distinct levels are:
1780                         WARNS=1
1781                         WARNS=2
1782                         WARNS=3
1783                         WARNS=4
1784                         WARNS=5
1786 =-=-=-=-=   bsd.x11.mk   =-=-=-=-=
1788 The include file <bsd.x11.mk> contains parameters and targets for
1789 cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}.
1790 It should be included after the general Makefile contents but before
1791 the include files such as <bsd.prog.mk> and <bsd.lib.mk>.
1793 It provides the following targets:
1794         .man.1 .man.3 .man.4 .man.5 .man.7:
1795                 If ${MAN} or ${PROG} is set and ${MKMAN} != "no",
1796                 these rules convert from X11's manual page source
1797                 into an mdoc.old source file.
1799 It sets the following variables:
1801 BINDIR                  Set to ${X11BINDIR}.
1802                         To override, define after including <bsd.x11.mk>
1804 LIBDIR                  Set to ${X11USRLIBDIR}.
1805                         To override, define after including <bsd.x11.mk>
1807 MANDIR                  Set to ${X11MANDIR}.
1808                         To override, define after including <bsd.x11.mk>
1810 CPPFLAGS                Appended with definitions to include from
1811                         ${DESTDIR}${X11INCDIR}
1813 LDFLAGS                 Appended with definitions to link from
1814                         ${DESTDIR}${X11USRLIBDIR}
1816 X11FLAGS.CONNECTION     Equivalent to X11's CONNECTION_FLAGS.
1818 X11FLAGS.EXTENSION      Equivalent to X11's EXT_DEFINES.
1820 X11FLAGS.LOADABLE       Equivalent to X11's LOADABLE.
1822 X11FLAGS.OS_DEFINES     Equivalent to X11's OS_DEFINES.
1824 X11FLAGS.SERVER         Equivalent to X11's ServerDefines.
1826 X11FLAGS.THREADLIB      Equivalent to X11's THREADS_DEFINES for libraries.
1828 X11FLAGS.THREADS        Equivalent to X11's THREADS_DEFINES.
1830 X11FLAGS.VERSION        cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION.
1832 X11FLAGS.DIX            Equivalent to X11's DIX_DEFINES.
1834 X11TOOL_UNXCOMM         Commandline to convert `XCOMM' comments to `#'
1836 It uses the following variables:
1838 APPDEFS                 List of app-default files to install.
1840 CPPSCRIPTS              List of files/scripts to run through cpp(1)
1841                         and then ${X11TOOL_UNXCOMM}.  The source files
1842                         have a `.cpp' suffix, the generated files do not.
1844 CPPSCRIPTFLAGS          Additional flags to cpp(1) when building CPPSCRIPTS.
1846 CPPSCRIPTFLAGS_<fn>     Additional flags to cpp(1) when building CPPSCRIPT <fn>.
1849 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=