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