tools/llvm: Do not build with symbols
[minix3.git] / share / mk / bsd.README
blob907440e6ec96956f5d848dbe366bc4f2a864b6c0
1 #       $NetBSD: bsd.README,v 1.322 2013/11/11 10:24:53 joerg 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 MKCOMPLEX       If "no", don't build libm support for <complex.h>
140                 Default: yes
142 MKCRYPTO        If "no", no cryptography support will be built into the system,
143                 and also acts as "MKKERBEROS=no".
144                 Default: yes
146 MKCRYPTO_RC5    If not "no", RC5 support will be built into libcrypto_rc5
147                 Default: no
149 MKCVS           If "no", don't build or install cvs(1).
150                 Default: yes
152 MKDEBUG         If "no", don't build and install separate debugging symbols
153                 into /usr/libdata/debug.
154                 Default: no
156 MKDEBUGLIB      Build *_g.a debugging libraries, which are compiled
157                 with -DDEBUG.
158                 Default: no
160 MKDEPINCLUDES   If "yes" issue .include statements in the .depend file
161                 instead of inlining the contents of the .d files. Useful
162                 when stale dependencies are present, to list the exact
163                 files that need refreshing. It is off by default because
164                 it is possibly slower.
165                 Default "no"
167 MKDOC           If "no", don't build or install the documentation.
168                 Default: yes
170 MKDTRACE        If "no", do not build and install the kernel modules,
171                 utilities and libraries used to implement the dtrace(1)
172                 facility.
173                 Default: no
175 MKDYNAMICROOT   If "no", build programs in /bin and /sbin statically,
176                 don't install certain libraries in /lib, and don't
177                 install the shared linker into /libexec.
178                 Default: yes
180 MKEXTSRC        If not "no", 'make build' also descends into either src/extsrc
181                 to cross-build programs and libraries externally added by
182                 users, and automatically enables creation of those sets.
183                 Default: no
185 MKGCC           If "no", don't build gcc(1) or any of the GCC-related
186                 libraries (libgcc, libobjc, libstdc++).
187                 Default: yes
189 MKGCCCMDS       If "no", don't build gcc(1), but do build the GCC-related
190                 libraries (libgcc, libobjc, libstdc++).
191                 Default: yes
193 MKGDB           If "no", don't build gdb(1).
194                 Default: yes
196 MKHESIOD        If "no", disables building of Hesiod infrastructure
197                 (libraries and support programs).
198                 Default: yes
200 MKHOSTOBJ       If not "no", for programs intended to be run on the compile
201                 host, the name, release, and architecture of the host
202                 operating system will be suffixed to the name of the object
203                 directory created by "make obj".
204                 Default: no
206 MKHTML          If "no", don't build or install the HTML man pages.
207                 Default: yes
209 MKIEEEFP        If "no", don't add code for IEEE754/IEC60559 conformance.
210                 Has no effect on most platforms.
211                 Default: yes
213 MKSTRIPIDENT    Strip the RCS IDs from program binaries and shared libraries.
214                 Default: no
216 MKINET6         If "no", disables building of INET6 (IPv6) infrastructure
217                 (libraries and support programs).  This option must not be
218                 set to "no" if MKX11 is not "no".
219                 Default: yes
221 MKINFO          If "no", don't build or install Info documentation from
222                 Texinfo source files.
223                 Default: yes
225 MKIPFILTER      If "no", don't build or install the IP Filter programs and LKM.
226                 Default: yes
228 MKISCSI         If "no", don't build or install iSCSI library or applications
229                 (depends on libpthread.)
230                 Default: yes
232 MKKERBEROS      If "no", disables building of Kerberos v5
233                 infrastructure (libraries and support programs).
234                 Default: yes
236 MKKMOD          If "no", disables building of kernel modules.
237                 Default: yes
239 MKKYUA          If "no", don't build Kyua nor its dependent library Lutok.
240                 Note that setting this to "no" does not disable the build of
241                 the NetBSD test suite itself; the build of the tests is
242                 controlled by the MKATF knob.
243                 Default: no (until the import is done and validated)
245 MKLDAP          If "no", disables building of LDAP infrastructure
246                 (libraries and support programs).
247                 Default: yes
249 MKLIBCXX        If not "no", build and install libc++.
250                 Default: no
252 MKLIBSTDCXX     If not "no", build and install libstdc++.
253                 Default: yes
255 MKLINKLIB       If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no".
256                 Also:
257                         - don't install the .a libraries
258                         - don't install _pic.a libraries on PIC systems
259                         - don't build .a libraries on PIC systems
260                         - don't install the .so symlink on ELF systems
261                 I.e, only install the shared library (and the .so.major
262                 symlink on ELF).
263                 Default: yes
265 MKLINT          If "no", don't build or install the lint libraries.
266                 Default: yes
268 MKLVM           If "no", don't build or install the logical volume manager
269                 and device mapper tools and libraries
270                 Default: yes
272 MKMAN           If "no", don't build or install the man or catman pages,
273                 and also acts as "MKCATPAGES=no MKHTML=no".
274                 Default: yes
276 MKMANDOC        If "yes", mandoc is built as tool and used to compile
277                 catman or html pages.  A directory can be exempted by
278                 defining NOMANDOC.  Individual man pages are exempted
279                 if NOMANDOC.${target} is set to "yes".
280                 Default: yes
282 MKMANZ          If not "no", compress manual pages at installation time.
283                 Default: no
285 MKMDNS          If "no", disables building of mDNS infrastructure
286                 (libraries and support programs).
287                 Default: yes
289 MKNLS           If "no", don't build or install the NLS files and locale
290                 definition files.
291                 Default: yes
293 MKNPF           If "no", don't build or install the NPF and its modules.
294                 Default: yes
296 MKOBJ           If "no", don't enable the rule which creates objdirs,
297                 and also acts as "MKOBJDIRS=no".
298                 Default: yes
300 MKOBJDIRS       If "no", don't create objdirs during a "make build".
301                 Default: no
303 MKPAM           If "no", disables building of PAM authentication
304                 infrastructure (libraries and support programs).
305                 Default: yes
307 MKPCC           If "no", don't build pcc(1) or any of the PCC-related
308                 libraries (libpcc, libpccsoftfloat).
309                 Default: no
311 MKPF            If "no", don't build or install the pf programs and LKM.
312                 Default: yes
314 MKPIC           If "no", don't build or install shared libraries, and
315                 also acts as "MKPICLIB=no"
316                 Default: yes (for MACHINE_ARCHs that support it)
318 MKPICINSTALL    If "no", don't install the *_pic.a libraries.
319                 Default: yes
321 MKPICLIB        If "no", don't build *_pic.a libraries, and build the
322                 shared object libraries from the .a libraries.
323                 A symlink is installed in ${DESTDIR}/usr/lib for the
324                 _pic.a library pointing to the .a library.
325                 Default: yes
327 MKPIE           If "no", create regular executables. Otherwise create
328                 PIE (Position Independent Executables).
329                 Default: no
331 MKPIGZGZIP      If "no", only install pigz as pigz, not gzip.
332                 Default: no
334 MKPOSTFIX       If "no", don't build or install postfix(1).
335                 Default: yes
337 MKPROFILE       If "no", don't build or install the profiling (*_p.a) libraries.
338                 Default: yes
340 MKREPRO         If "yes", create reproducable builds. This enables
341                 different switches to make two builds from the same source tree
342                 result in the same build results.
343                 Default: no
345 MKSHARE         If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no
346                 MKMAN=no MKNLS=no".
347                 I.e, don't build catman pages, documentation, Info
348                 documentation, man pages, NLS files, ...
349                 Default: yes
351 MKSKEY          If "no", disables building of S/key authentication
352                 infrastructure (libraries and support programs).
353                 Default: yes
355 MKSLJIT         If "no", disables building of sljit (stack-less platform
356                 independent JIT compiler) private library and tests.
357                 Default: yes on amd64, i386 and sparc, no elsewhere.
359 MKSOFTFLOAT     If not "no", build with options to enable the compiler to
360                 generate output containing library calls for floating
361                 point and possibly soft-float library support.
362                 Default: no
364 MKSTATICLIB     If "no", don't build or install the normal static (*.a)
365                 libraries.
366                 Default: yes
368 MKTPM           If "no" then don't build the Trusted Platform Module
369                 infrastructure.
370                 Default: no
372 MKUNPRIVED      If not "no", don't set the owner/group/mode when installing
373                 files or directories, and keep a metadata log of what
374                 the owner/group/mode should be.  This allows a
375                 non-root "make install".
376                 Default: no
378 MKUPDATE        If not "no", 'make install' only installs targets that are
379                 more recently modified in the source directories that their
380                 installed counterparts.
381                 Default: no
383 MKX11           If not "no", depending on the value of ${X11FLAVOUR},
384                 'make build' also descends into either src/x11 (XFree86) or
385                 src/external/mit/xorg (modular Xorg) to cross-build X11 and
386                 automatically enables creation of X sets.
387                 Default: no
389 MKX11FONTS      If not "no", if ${X11FLAVOUR} is "Xorg", do not build or
390                 install the X fonts.  The xfont set is still created but
391                 will be empty.
392                 Default: yes
394 MKX11MOTIF:     If "yes" and ${X11FLAVOUR} is "Xorg", build the native X11
395                 libGLw with Motif stubs.  If Motif is not installed in the
396                 default location /usr/pkg, the location can be specified
397                 using the X11MOTIFPATH variable.
398                 Default: no
400 MKYP            If "no", disables building of YP (NIS)
401                 infrastructure (libraries and support programs).
402                 Default: yes
404 MKZFS           If "no", do not build and install utilities and libraries
405                 used to manage ZFS file system. Do not build zfs and solaris
406                 compatibility kernel modules.
407                 Default: yes on i386/amd64, no elsewhere.
409 MKRUMP          If "no", do not build and install rump related headers,
410                 libraries, and programs.
411                 Default: yes
413 USE_HESIOD      If "no", disables building Hesiod support into
414                 various system utilities/libraries that support it.
415                 If ${MKHESIOD} is "no", USE_HESIOD will also be
416                 forced to "no".
418 USE_INET6       If "no", disables building INET6 (IPv6) support into
419                 various system utilities/libraries that support it.
420                 If ${MKINET6} is "no", USE_INET6 will also be
421                 forced to "no".
423 USE_JEMALLOC    If "no", disables building the "jemalloc" allocator
424                 designed for improved performance with threaded
425                 applications.  The "phkmalloc" allocator as used up
426                 before NetBSD-5.0 will be substituted.
428 USE_KERBEROS    If "no", disables building Kerberos v5
429                 support into various system utilities/libraries that
430                 support it.  If ${MKKERBEROS} is "no", USE_KERBEROS
431                 will also be forced to "no".
433 USE_LDAP        If "no", disables building LDAP support into various
434                 system utilities/libraries that support it.
435                 If ${MKLDAP} is "no", USE_LDAP will also be forced to "no".
437 USE_PAM         If "no", disables building PAM authentication support
438                 into various system utilities/libraries that support it.
439                 If ${MKPAM} is "no", USE_PAM will also be forced to "no".
441 USE_SKEY        If "no", disables building S/key authentication
442                 support into various system utilities/libraries that
443                 support it.  If ${MKSKEY} is "no", USE_SKEY will
444                 also be forced to "no".
445                 Default: no
447 USE_SSP         If "no", disables GCC stack protection code, which
448                 detects stack overflows and aborts the program. The
449                 stack protection code imposes a performance penalty
450                 of about 5%.
451                 Default: "no", unless "USE_FORT" is set to "yes"
453 USE_FORT        If "yes" turns on substitute wrappers for commonly used
454                 functions that do not do bounds checking regularly, but
455                 they could in some cases by using the gcc
456                 __builtin_object_size() function to determine the buffer
457                 size where it is known and detect buffer overflows.
458                 These substitute functions are in /usr/include/ssp.
459                 Default: depends on the part of the source tree
461 USE_YP          If "no", disables building YP (NIS) support into
462                 various system utilities/libraries that support it.
463                 If ${MKYP} is "no", USE_YP will also be forced to "no".
465 USE_PIGZGZIP    If "no", use the host "gzip" program to compress things.
466                 Otherwise, build tools/pigz and use nbpigz to compress
467                 things.
468                 Default: "no".
470 X11FLAVOUR      Set to "Xorg" or "XFree86", depending on whether to build
471                 XFree86 or modular Xorg.  Only matters if MKX11!=no.
472                 Default: "Xorg" on amd64, i386, macppc, shark and sparc64,
473                 "XFree86" on everything else.
475 COPTS.lib<lib>
476 OBJCOPTS.lib<lib>
477 LDADD.lib<lib>
478 CPPFLAGS.lib<lib>
479 CXXFLAGS.lib<lib>
480 COPTS.<prog>
481 OBJCCOPTS.<prog>
482 LDADD.<prog>
483 CPPFLAGS.<prog>
484 CXXFLAGS.<prog> These provide a way to specify additions to the associated
485                 variables in a way that applies only to a particular library
486                 or program.  <lib> corresponds to the LIB variable set in
487                 the library's makefile.  <prog> corresponds to either PROG
488                 or PROG_CXX (if set).  For example, if COPTS.libcrypto is
489                 set to "-g", "-g" will be added to COPTS only when compiling
490                 the crypto library.
492 The active compiler is selected using the following variables:
493 AVAILABLE_COMPILER
494                 List of available compiler suites.  Processed in order
495                 for selecting the active compiler for each frontend.
496 HAVE_PCC        If defined, PCC is present and enabled.
497 HAVE_LLVM       If defined, LLVM/Clang is present and enabled.
498 UNSUPPORTED_COMPILER.xxx
499                 If defined, the support for compiler "xxx" is disabled.
501 For the frontends (CC, CPP, CXX, FC and OBJC) the following variables exist:
502 ACTIVE_CC       Active compile suite for the CC frontend.
503 SUPPORTED_CC    Compile suite with support for the CC frontend.
504 TOOL_CC.xxx     Path to the CC frontend for compiler "xxx"
506 =-=-=-=-=   sys.mk   =-=-=-=-=
508 The include file <sys.mk> has the default rules for all makes, in the BSD
509 environment or otherwise.  You probably don't want to touch this file.
511 =-=-=-=-=   bsd.own.mk   =-=-=-=-=
513 The include file <bsd.own.mk> contains source tree configuration parameters,
514 such as the owners, groups, etc. for both manual pages and binaries, and
515 a few global "feature configuration" parameters.
517 It has no targets.
519 To get system-specific configuration parameters, <bsd.own.mk> will try to
520 include the file specified by the "MAKECONF" variable.  If MAKECONF is not
521 set, or no such file exists, the system make configuration file, /etc/mk.conf
522 is included.  These files may define any of the variables described below.
524 <bsd.own.mk> sets the following variables, if they are not already defined
525 (defaults are in brackets):
527 NETBSDSRCDIR    Top of the NetBSD source tree.
528                 If _SRC_TOP_ != "", that will be used as the default,
529                 otherwise BSDSRCDIR will be used as the default.
530                 Various makefiles within the NetBSD source tree will
531                 use this to reference the top level of the source tree.
533 _SRC_TOP_       Top of the system source tree, as determined by <bsd.own.mk>
534                 based on the presence of tools/ and build.sh.  This variable
535                 is "internal" to <bsd.own.mk>, although its value is only
536                 determined once and then propagated to all sub-makes.
538 _NETBSD_VERSION_DEPENDS
539                 A list of files which contain information about
540                 the version of the NetBSD being built.  This is
541                 defined only if the current directory appears
542                 to be inside a NetBSD source tree.  The list of
543                 files includes ${NETBSDSRCDIR}/sys/sys/param.h
544                 (which contains the kernel version number),
545                 ${NETBSDSRCDIR}/sys/conf/newvers.sh and
546                 ${NETBSDSRCDIR}/sys/conf/osrelease.sh (which
547                 interpret the information in sys/sys/param.h), and
548                 ${_SRC_TOP_OBJ_}/params (which is an optional file,
549                 created by "make build" in ${_SRC_TOP_}/Makefile,
550                 containing all the variables that may influence the
551                 build).
553                 Targets that depend on the NetBSD version, or on
554                 variables defined at build time, can declare a
555                 dependency on ${_NETBSD_VERSION_DEPENDS}, like this:
557                         version.c: ${_NETBSD_VERSION_DEPENDS}
558                                 commands to create version.c
560 BSDSRCDIR       The real path to the system sources, so that 'make obj'
561                 will work correctly.  [/usr/src]
563 BSDOBJDIR       The real path to the system 'obj' tree, so that 'make obj'
564                 will work correctly.  [/usr/obj]
566 BINGRP          Binary group.  [wheel]
568 BINOWN          Binary owner.  [root]
570 BINMODE         Binary mode.  [555]
572 NONBINMODE      Mode for non-executable files.  [444]
574 MANDIR          Base path for manual installation.  [/usr/share/man/cat]
576 MANGRP          Manual group.  [wheel]
578 MANOWN          Manual owner.  [root]
580 MANMODE         Manual mode.  [${NONBINMODE}]
582 MANINSTALL      Manual installation type.  Space separated list:
583                         catinstall, htmlinstall, maninstall
584                 Default value derived from MKCATPAGES and MKHTML.
586 LDSTATIC        Control program linking; if set blank, link everything
587                 dynamically.  If set to "-static", link everything statically.
588                 If not set, programs link according to their makefile.
590 LIBDIR          Base path for library installation.  [/usr/lib]
592 LINTLIBDIR      Base path for lint(1) library installation.  [/usr/libdata/lint]
594 LIBGRP          Library group.  [${BINGRP}]
596 LIBOWN          Library owner.  [${BINOWN}]
598 LIBMODE         Library mode.  [${NONBINMODE}]
600 DOCDIR          Base path for system documentation (e.g. PSD, USD, etc.)
601                 installation.  [/usr/share/doc]
603 HTMLDOCDIR      Base path for html system documentation installation.
604                 [/usr/share/doc/html]
606 DOCGRP          Documentation group.  [wheel]
608 DOCOWN          Documentation owner.  [root]
610 DOCMODE         Documentation mode.  [${NONBINMODE}]
612 NLSDIR          Base path for Native Language Support files installation.
613                 [/usr/share/nls]
615 NLSGRP          Native Language Support files group.  [wheel]
617 NLSOWN          Native Language Support files owner.  [root]
619 NLSMODE         Native Language Support files mode.  [${NONBINMODE}]
621 X11SRCDIR       The path to the xsrc tree.  [${NETBSDSRCDIR}/../xsrc,
622                 if that exists; otherwise /usr/xsrc]
624 X11SRCDIR.xc    The path to the (old) X11 xc src tree.  [${X11SRCDIR}/xfree/xc]
626 X11SRCDIR.local The path to the local X11 src tree.  [${X11SRCDIR}/local]
628 X11SRCDIR.lib<package>
629 X11SRCDIR.<package>
630                 The path to the xorg src tree for the specificed package>.
631                 [${X11SRCDIR}/external/mit/xorg/<package>/dist]
633 X11ROOTDIR      Root directory of the X11 installation.  [/usr/X11R6 or
634                 [/usr/X11R7]
636 X11BINDIR       X11 bin directory.  [${X11ROOTDIR}/bin]
638 X11FONTDIR      X11 font directory.  [${X11ROOTDIR}/lib/X11/fonts]
640 X11INCDIR       X11 include directory.  [${X11ROOTDIR}/include]
642 X11LIBDIR       X11 lib/x11 (config) directory.  [${X11ROOTDIR}/lib/X11]
644 X11MANDIR       X11 manual directory.  [${X11ROOTDIR}/man]
646 X11USRLIBDIR    X11 library directory.  [${X11ROOTDIR}/lib]
648 STRIPFLAG       The flag passed to the install program to cause the binary
649                 to be stripped.  This is to be used when building your
650                 own install script so that the entire system can be made
651                 stripped/not-stripped using a single knob.  []
653 COPY            The flag passed to the install program to cause the binary
654                 to be copied rather than moved.  This is to be used when
655                 building our own install script so that the entire system
656                 can either be installed with copies, or with moves using
657                 a single knob.  [-c]
659 MAKEDIRTARGETENV
660                 Environment variables passed to the child make process
661                 invoked by MAKEDIRTARGET.
663 MAKEDIRTARGET dir target [params]
664                 Runs "cd $${dir} && ${MAKE} [params] $${target}",
665                 displaying a "pretty" message whilst doing so.
667 RELEASEMACHINEDIR
668                 Subdirectory used below RELEASEDIR when building
669                 a release.  [${MACHINE}]
671 RELEASEMACHINE  Subdirectory or path component used for the following
672                 paths:
673                         distrib/${RELEASEMACHINE}
674                         distrib/notes/${RELEASEMACHINE}
675                         etc/etc.${RELEASEMACHINE}
676                 Used when building a release.  [${MACHINE}]
678 Additionally, the following variables may be set by <bsd.own.mk> or in a
679 make configuration file to modify the behavior of the system build
680 process (default values are in brackets along with comments, if set by
681 <bsd.own.mk>):
683 USETOOLS        Indicates whether the tools specified by ${TOOLDIR} should
684                 be used as part of a build in progress.
685                 Supported values:
687                 yes     Use the tools from TOOLDIR.
688                         Must be set to this if cross-compiling.
690                 no      Do not use the tools from TOOLDIR, but refuse to
691                         build native compilation tool components that are
692                         version-specific for that tool.
694                 never   Do not use the tools from TOOLDIR, even when
695                         building native tool components.  This is similar to
696                         the traditional NetBSD build method, but does not
697                         verify that the compilation tools in use are
698                         up-to-date enough in order to build the tree
699                         successfully.  This may cause build or runtime
700                         problems when building the whole NetBSD source tree.
702                 Default: "yes" if building all or part of a whole NetBSD
703                 source tree (detected automatically); "no" otherwise
704                 (to preserve traditional semantics of the <bsd.*.mk>
705                 make(1) include files).
707 OBJECT_FMT      Object file format.  [set to "ELF" on architectures that
708                 use ELF -- currently all architectures].
710 TOOLCHAIN_MISSING
711                 If not "no", this indicates that the platform being built
712                 does not have a working in-tree toolchain.  If the
713                 ${MACHINE_ARCH} in question falls into this category,
714                 TOOLCHAIN_MISSING is conditionally assigned the value "yes".
715                 Otherwise, the variable is unconditionally assigned the
716                 value "no".
717                 If not "no", ${MKBINUTILS}, ${MKGCC}, and ${MKGDB} are
718                 unconditionally assigned the value "no".
720 EXTERNAL_TOOLCHAIN
721                 This variable is not directly set by <bsd.own.mk>, but
722                 including <bsd.own.mk> is the canonical way to gain
723                 access to this variable.  The variable should be defined
724                 either in the user's environment or in the user's mk.conf
725                 file.  If defined, this variable indicates the root of
726                 an external toolchain which will be used to build the
727                 tree.  For example, if a platform is a ${TOOLCHAIN_MISSING}
728                 platform, EXTERNAL_TOOLCHAIN can be used to re-enable the
729                 cross-compile framework.
731                 If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally
732                 assigned the value "no", since the external version of the
733                 compiler may not be able to build the library components of
734                 the in-tree compiler.
736                 NOTE: This variable is not yet used in as many places as
737                 it should be.  Expect the exact semantics of this variable
738                 to change in the short term as parts of the cross-compile
739                 framework continue to be cleaned up.
741 The following variables are defined to commands to perform the
742 appropriate operation, with the default in [brackets].  Note that
743 the defaults change if USETOOLS == "yes":
745 TOOL_AMIGAAOUT2BB       aout to Amiga bootblock converter.  [amiga-aout2bb]
747 TOOL_AMIGAELF2BB        ELF to Amiga bootblock converter.  [amiga-elf2bb]
749 TOOL_AMIGATXLT          Amige assembly language format translator.  [amiga-txlt]
751 TOOL_ASN1_COMPILE       ASN1 compiler.  [asn1_compile]
753 TOOL_AWK                Pattern-directed scanning/processing language.  [awk]
755 TOOL_CAP_MKDB           Create capability database.  [cap_mkdb]
757 TOOL_CAT                Concatenate and print files.  [cat]
759 TOOL_CKSUM              Display file checksums.  [cksum]
761 TOOL_COMPILE_ET         Error table compiler.  [compile_et]
763 TOOL_CONFIG             Build kernel compilation directories.  [config]
765 TOOL_CRUNCHGEN          Generate crunched binary build environment.  [crunchgen]
767 TOOL_CTAGS              Create a tags file.  [ctags]
769 TOOL_DB                 Manipulate db(3) databases.  [db]
771 TOOL_DISKLABEL          Read and write disk pack label.  [disklabel]
773 TOOL_EQN                Format equations for groff.  [eqn]
775 TOOL_FDISK              MS-DOS partition maintenance program.  [fdisk]
777 TOOL_FGEN               IEEE 1275 Open Firmware FCode Tokenizer.  [fgen]
779 TOOL_GENASSYM           Generate constants for assembly files.  [genassym]
781 TOOL_GENCAT             Generate NLS message catalogs.  [gencat]
783 TOOL_GMAKE              GNU make utility.  [gmake]
785 TOOL_GREP               Print lines matching a pattern.  [grep]
787 TOOL_GROFF              Front end for groff document formatting system.  [groff]
789 TOOL_HEXDUMP            Ascii, decimal, hexadecimal, octal dump.  [hexdump]
791 TOOL_HP300MKBOOT        Make bootable image for hp300.  [hp300-mkboot]
793 TOOL_HP700MKBOOT        Make bootable image for hp700.  [hp700-mkboot]
795 TOOL_INDXBIB            Make bibliographic database's inverted index.  [indxbib]
797 TOOL_INSTALLBOOT        Install disk bootstrap software.  [installboot]
799 TOOL_INSTALL_INFO       Update info/dir entries.  [install-info]
801 TOOL_JOIN               Relational database operator.  [join]
803 TOOL_M4                 M4 macro language processor.  [m4]
805 TOOL_MACPPCFIXCOFF      Fix up xcoff headers for macppc.  [macppc-fixcoff]
807 TOOL_MAKEFS             Create file system image from directory tree.  [makefs]
809 TOOL_MAKEINFO           Translate Texinfo documents.  [makeinfo]
811 TOOL_MAKEWHATIS         Create a whatis.db database.  [makewhatis]
813 TOOL_MDSETIMAGE         Set kernel RAM disk image.  [mdsetimage]
815 TOOL_MENUC              Menu compiler.  [menuc]
817 TOOL_MIPSELF2ECOFF      Convert ELF-format executable to ECOFF for mips.
818                         [mips-elf2ecoff]
820 TOOL_MKCSMAPPER         Make charset mapping table.  [mkcsmapper]
822 TOOL_MKESDB             Make encoding scheme database.  [mkesdb]
824 TOOL_MKLOCALE           Make LC_CTYPE locale files.  [mklocale]
826 TOOL_MKMAGIC            Create database for file(1).  [file]
828 TOOL_MKNOD              Make device special file.  [mknod]
830 TOOL_MKTEMP             Make (unique) temporary file name.  [mktemp]
832 TOOL_MSGC               Simple message list compiler.  [msgc]
834 TOOL_MTREE              Map a directory hierarchy.  [mtree]
836 TOOL_PAX                Manipulate file archives and copy directories.  [pax]
838 TOOL_PIC                Compile pictures for groff.  [pic]
840 TOOL_PIGZ               Parallel compressor.  [pigz]
842 TOOL_POWERPCMKBOOTIMAGE Make bootable image for powerpc.  [powerpc-mkbootimage]
844 TOOL_PWD_MKDB           Generate the password databases.  [pwd_mkdb]
846 TOOL_REFER              Preprocess bibliographic references for groff.  [refer]
848 TOOL_ROFF_ASCII         Generate ASCII groff output.  [nroff]
850 TOOL_ROFF_DVI           Generate DVI groff output.  [${TOOL_GROFF} -Tdvi]
852 TOOL_ROFF_HTML          Generate HTML groff output.
853                         [${TOOL_GROFF} -Tlatin1 -mdoc2html]
855 TOOL_ROFF_PS            Generate PS groff output.  [${TOOL_GROFF} -Tps]
857 TOOL_ROFF_RAW           Generate "raw" groff output.  [${TOOL_GROFF} -Z]
859 TOOL_RPCGEN             Remote Procedure Call (RPC) protocol compiler.  [rpcgen]
861 TOOL_SED                Stream editor.  [sed]
863 TOOL_SOELIM             Eliminate .so's from groff input.  [soelim]
865 TOOL_SPARKCRC           Generate a crc suitable for use in a sparkive file.
866                         [sparkcrc]
868 TOOL_STAT               Display file status.  [stat]
870 TOOL_STRFILE            Create a random access file for storing strings.
871                         [strfile]
873 TOOL_SUNLABEL           Read or modify a SunOS disk label.  [sunlabel]
875 TOOL_TBL                Format tables for groff.  [tbl]
877 TOOL_UUDECODE           Uudecode a binary file.  [uudecode]
879 TOOL_VGRIND             Grind nice listings of programs.  [vgrind -f]
881 TOOL_ZIC                Time zone compiler.  [zic]
883 <bsd.own.mk> is generally useful when building your own Makefiles so that
884 they use the same default owners etc. as the rest of the tree.
887 =-=-=-=-=   bsd.clean.mk   =-=-=-=-=
889 The include file <bsd.clean.mk> defines the clean and cleandir
890 targets.  It uses the following variables:
892 CLEANFILES      Files to remove for both the clean and cleandir targets.
894 CLEANDIRFILES   Files to remove for the cleandir target, but not for
895                 the clean target.
897 MKCLEANSRC      Controls whether or not the clean and cleandir targets
898                 will delete files from both the object directory,
899                 ${.OBJDIR}, and the source directory, ${.CURDIR}.
901                 If MKCLEANSRC is set to "no", then the file names in
902                 CLEANFILES or CLEANDIRFILES are interpreted relative
903                 to the object directory, ${.OBJDIR}.  This is the
904                 traditional behaviour.
906                 If MKCLEANSRC is set to "yes", then the file deletion
907                 is performed relative to both the object directory,
908                 ${.OBJDIR}, and the source directory, ${.CURDIR}.  (This
909                 has no effect if ${.OBJDIR} is the same as ${.CURDIR}.)
910                 Deleting files from ${.CURDIR} is intended to remove
911                 stray output files that had been left in the source
912                 directory by an earlier build that did not use object
913                 directories.
915                 The default is MKCLEANSRC=yes.  If you always build with
916                 separate object directories, and you are sure that there
917                 are no stray files in the source directories, then you
918                 may set MKCLEANSRC=no to save some time.
920 MKCLEANVERIFY   Controls whether or not the clean and cleandir targets
921                 will verify that files have been deleted.
923                 If MKCLEANVERIFY is set to "no", then the files will
924                 be deleted using a "rm -f" command, and its success or
925                 failure will be ignored.
927                 If MKCLEANVERIFY is set to "yes", then the success of
928                 the "rm -f" command will be verified using an "ls"
929                 command.
931                 The default is MKCLEANVERIFY=yes.  If you are sure that
932                 there will be no problems caused by file permissions,
933                 read-only file systems, or the like, then you may set
934                 MKCLEANVERIFY=no to save some time.
936 To use the clean and cleandir targets defined in <bsd.clean.mk>, other
937 Makefiles or bsd.*.mk files should append file names to the CLEANFILES
938 or CLEANDIRFILES variables.  For example:
940             CLEANFILES+= a.out
941             CLEANDIRFILES+= .depend
943             .include <bsd.clean.mk>
945 The files listed in CLEANFILES and CLEANDIRFILES must not be
946 directories, because the potential risk from running "rm -rf" commands
947 in bsd.clean.mk is considered too great.  If you want to recursively
948 delete a directory as part of "make clean" or "make cleandir" then you
949 need to provide your own target.
951 =-=-=-=-=   bsd.dep.mk   =-=-=-=-=
953 The include file <bsd.dep.mk> contains the default targets for building
954 .depend files.  It creates .d files from entries in SRCS and DPSRCS
955 that are C, C++, or Objective C source files, and builds .depend from the
956 .d files.  All other files in SRCS and all of DPSRCS will be used as
957 dependencies for the .d files.  In order for this to function correctly,
958 it should be .included after all other .mk files and directives that may
959 modify SRCS or DPSRCS.  It uses the following variables:
961 SRCS            List of source files to build the program.
963 DPSRCS          List of source files which are needed for generating
964                 dependencies, but are not needed in ${SRCS}.
967 =-=-=-=-=   bsd.files.mk   =-=-=-=-=
969 The include file <bsd.files.mk> handles the FILES variables and is included
970 from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables:
972 FILES           The list of files to install.
974 CONFIGFILES     Similar semantics to FILES, except that the files
975                 are installed by the `configinstall' target,
976                 not the `install' target.
977                 The FILES* variables documented below also apply.
979 FILESOWN        File owner.  [${BINOWN}]
981 FILESGRP        File group.  [${BINGRP}]
983 FILESMODE       File mode.  [${NONBINMODE}]
985 FILESDIR        The location to install the files.
987 FILESNAME       Optional name to install each file as.
989 FILESOWN_<fn>   File owner of the specific file <fn>.
991 FILESGRP_<fn>   File group of the specific file <fn>.
993 FILESMODE_<fn>  File mode of the specific file <fn>.
995 FILESDIR_<fn>   The location to install the specific file <fn>.
997 FILESNAME_<fn>  Optional name to install <fn> as.
999 FILESBUILD      If this variable is defined, then its value will be
1000                 used as the default for all FILESBUILD_<fn> variables.
1001                 Otherwise, the default will be "no".
1003 FILESBUILD_<fn> A value different from "no" will add the file to the list of
1004                 targets to be built by `realall'.  Users of that variable
1005                 should provide a target to build the file.
1008 BUILDSYMLINKS   List of two word items:
1009                         lnsrc lntgt
1010                 For each lnsrc item, create a symlink named lntgt.
1011                 The lntgt symlinks are removed by the cleandir target.
1013 UUDECODE_FILES  List of files which are stored as <file>.uue in the source
1014                 tree. Each one will be decoded with ${TOOL_UUDECODE}.
1015                 The source files have a `.uue' suffix, the generated files do
1016                 not.
1018 UUDECODE_FILES_RENAME_<fn>
1019                 Rename the output from the decode to the provided name.
1020                 
1021                 *NOTE: These files are simply decoded, with no install or other
1022                        rule applying implicitly except being added to the clean
1023                        target.
1025 =-=-=-=-=   bsd.gcc.mk   =-=-=-=-=
1027 The include file <bsd.gcc.mk> computes various parameters related to GCC
1028 support libraries.  It defines no targets.  <bsd.own.mk> MUST be included
1029 before <bsd.gcc.mk>.
1031 The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each
1032 of which need to know where to find certain GCC support libraries.
1034 The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable,
1035 which is generally set by the user.  If EXTERNAL_TOOLCHAIN it set, then
1036 the compiler is asked where to find the support libraries, otherwise the
1037 support libraries are found in ${DESTDIR}/usr/lib.
1039 <bsd.gcc.mk> sets the following variables:
1041 _GCC_CRTBEGIN   The full path name to crtbegin.o.
1043 _GCC_CRTBEGINS  The full path name to crtbeginS.o.
1045 _GCC_CRTEND     The full path name to crtend.o.
1047 _GCC_CRTENDS    The full path name to crtendS.o.
1049 _GCC_LIBGCCDIR  The directory where libgcc.a is located.
1052 =-=-=-=-=   bsd.inc.mk   =-=-=-=-=
1054 The include file <bsd.inc.mk> defines the includes target and uses the
1055 variables:
1057 INCS            The list of include files.
1059 INCSDIR         The location to install the include files.
1061 INCSNAME        Target name of the include file, if only one; same as
1062                 FILESNAME, but for include files.
1064 INCSYMLINKS     Similar to SYMLINKS in <bsd.links.mk>, except that these
1065                 are installed in the 'includes' target and not the
1066                 (much later) 'install' target.
1068 INCSNAME_<file> The name file <file> should be installed as, if not <file>,
1069                 same as FILESNAME_<file>, but for include files.
1072 =-=-=-=-=   bsd.info.mk   =-=-=-=-=
1074 The include file <bsd.info.mk> is used to generate and install GNU Info
1075 documentation from respective Texinfo source files.  It defines three
1076 implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
1077 following variables:
1079 TEXINFO         List of Texinfo source files.  Info documentation will
1080                 consist of single files with the extension replaced by
1081                 .info.
1083 INFOFLAGS       Flags to pass to makeinfo.  []
1086 =-=-=-=-=   bsd.kernobj.mk   =-=-=-=-=
1088 The include file <bsd.kernobj.mk> defines variables related to the
1089 location of kernel sources and object directories.
1091 KERNSRCDIR      Is the location of the top of the kernel src.
1092                 [${_SRC_TOP_}/sys]
1094 KERNARCHDIR     Is the location of the machine dependent kernel sources.
1095                 [arch/${MACHINE}]
1097 KERNCONFDIR     Is where the configuration files for kernels are found.
1098                 [${KERNSRCDIR}/${KERNARCHDIR}/conf]
1100 KERNOBJDIR      Is the kernel build directory.  The kernel GENERIC for
1101                 instance will be compiled in ${KERNOBJDIR}/GENERIC.
1102                 The default value is
1103                 ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile
1104                 if it exists or the target 'obj' is being made.
1105                 Otherwise the default is
1106                 ${KERNSRCDIR}/${KERNARCHDIR}/compile.
1108 It is important that Makefiles (such as those under src/distrib) that
1109 wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR}
1110 rather than make assumptions about the location of the compiled kernel.
1113 =-=-=-=-=   bsd.kinc.mk   =-=-=-=-=
1115 The include file <bsd.kinc.mk> defines the many targets (includes,
1116 subdirectories, etc.), and is used by kernel makefiles to handle
1117 include file installation.  It is intended to be included alone, by
1118 kernel Makefiles.  It uses similar variables to <bsd.inc.mk>.
1119 Please see <bsd.kinc.mk> for more details, and keep the documentation
1120 in that file up to date.
1123 =-=-=-=-=   bsd.lib.mk   =-=-=-=-=
1125 The include file <bsd.lib.mk> has support for building libraries.  It has
1126 the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
1127 includes, install, lint, and tags.  Additionally, it has a checkver target
1128 which checks for installed shared object libraries whose version is greater
1129 that the version of the source. It has a limited number of suffixes,
1130 consistent with the current needs of the BSD tree.  <bsd.lib.mk> includes
1131 <bsd.shlib.mk> to get shared library parameters.
1133 It sets/uses the following variables:
1135 LIB             The name of the library to build.
1137 LIBDIR          Target directory for libraries.
1139 MKARZERO        Normally, ar(1) sets the timestamps, uid, gid and
1140                 permissions in files inside its archives to those of
1141                 the file it was fed. This leads to non-reproduceable
1142                 builds. If MKARZERO is set to "yes" (default is "no")
1143                 then the "D" flag is passed to ar, causing the
1144                 timestamp, uid and gid to be zeroed and the file
1145                 permissions to be set to 644. This allows .a files
1146                 from different builds to be bit identical.
1148 SHLIBINSTALLDIR Target directory for shared libraries if ${USE_SHLIBDIR}
1149                 is not "no".
1151 SHLIB_MAJOR
1152 SHLIB_MINOR
1153 SHLIB_TEENY     Major, minor, and teeny version numbers of shared library
1155 USE_SHLIBDIR    If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR}
1156                 as the path to install shared libraries to.
1157                 USE_SHLIBDIR must be defined before <bsd.own.mk> is included.
1158                 Default: no
1160 LIBISMODULE     If not "no", install as ${LIB}.so (without the "lib" prefix),
1161                 and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no
1162                 MKPROFILE=no MKSTATICLIB=no".
1163                 Default: no
1165 LIBISPRIVATE    If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no
1166                 MKPROFILE=no", and don't install the (.a) library.
1167                 This is useful for "build only" helper libraries.
1168                 Default: no
1170 LIBISCXX        If not "no", Use ${CXX} instead of ${CC} to link
1171                 shared libraries.
1172                 This is useful for C++ libraries.
1173                 Default: no
1175 LINTLIBDIR      Target directory for lint libraries.
1177 LIBGRP          Library group.
1179 LIBOWN          Library owner.
1181 LIBMODE         Library mode.
1183 LDADD           Additional loader objects.
1185 MAN             The manual pages to be installed (use a .1 - .9 suffix).
1187 NOCHECKVER_<library>
1188 NOCHECKVER      If set, disables checking for installed shared object
1189                 libraries with versions greater than the source.  A
1190                 particular library name, without the "lib" prefix, may
1191                 be appended to the variable name to disable the check for
1192                 only that library.
1194 SRCS            List of source files to build the library.  Suffix types
1195                 .s, .c, and .f are supported.  Note, .s files are preferred
1196                 to .c files of the same name.  (This is not the default for
1197                 versions of make.)
1199 LIBDPLIBS       A list of the tuples:
1200                         libname  path-to-srcdir-of-libname
1202                 For each tuple;
1203                      *  LIBDO.libname contains the .OBJDIR of the library
1204                         `libname', and if it is not set it is determined
1205                         from the srcdir and added to MAKEOVERRIDES (the
1206                         latter is to allow for build time optimization).
1207                      *  LDADD gets  -L${LIBDO.libname} -llibname    added.
1208                      *  DPADD gets  ${LIBDO.libname}/liblibname.so  or
1209                                     ${LIBDO.libname}/liblibname.a   added.
1211                 The special value "_external" for LIBDO.lib makes the
1212                 build system to assume the library comes from outside
1213                 of the NetBSD source tree and only causes -llibname
1214                 to be added to LDADD.
1216                 This variable may be used for individual libraries, as
1217                 well as in parent directories to cache common libraries
1218                 as a build-time optimization.
1220 The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
1221 if it exists, as well as the include file <bsd.man.mk>.
1223 It has rules for building profiled objects; profiled libraries are
1224 built by default.
1226 Libraries are ranlib'd when made.
1229 =-=-=-=-=   bsd.links.mk   =-=-=-=-=
1231 The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
1232 and is included from from <bsd.lib.mk> and <bsd.prog.mk>.
1234 LINKSOWN, LINKSGRP, and LINKSMODE, are relevant only if a metadata log
1235 is used. The defaults may be modified by other bsd.*.mk files which
1236 include bsd.links.mk.  In the future, these variables may be replaced
1237 by a method for explicitly recording hard links in a metadata log.
1239 LINKS           The list of hard links, consisting of pairs of paths:
1240                         source-file target-file
1241                 ${DESTDIR} is prepended to both paths before linking.
1242                 For example, to link /bin/test and /bin/[, use:
1243                         LINKS=/bin/test /bin/[
1245 CONFIGLINKS     Similar semantics to LINKS, except that the links
1246                 are installed by the `configinstall' target,
1247                 not the `install' target.
1249 SYMLINKS        The list of symbolic links, consisting of pairs of paths:
1250                         source-file target-file
1251                 ${DESTDIR} is only prepended to target-file before linking.
1252                 For example, to symlink /usr/bin/tar to /bin/tar resulting
1253                 in ${DESTDIR}/usr/bin/tar -> /bin/tar:
1254                         SYMLINKS=/bin/tar /usr/bin/tar
1256 CONFIGSYMLINKS  Similar semantics to SYMLINKS, except that the symbolic links
1257                 are installed by the `configinstall' target,
1258                 not the `install' target.
1260 LINKSOWN        Link owner.  [${BINOWN}]
1262 LINKSGRP        Link group.  [${BINGRP}]
1264 LINKSMODE       Link mode.  [${NONBINMODE}]
1266 LINKSOWN_<fn>   Link owner of the specific file <fn>.
1268 LINKSGRP_<fn>   Link group of the specific file <fn>.
1270 LINKSMODE_<fn>  Link mode of the specific file <fn>.
1273 =-=-=-=-=   bsd.man.mk   =-=-=-=-=
1275 The include file <bsd.man.mk> handles installing manual pages and their
1276 links.
1278 It has a three targets:
1280         catinstall:
1281                 Install the preformatted manual pages and their links.
1282         htmlinstall:
1283                 Install the HTML manual pages and their links.
1284         maninstall:
1285                 Install the manual page sources and their links.
1287 It sets/uses the following variables:
1289 MANDIR          Base path for manual installation.
1291 MANGRP          Manual group.
1293 MANOWN          Manual owner.
1295 MANMODE         Manual mode.
1297 MANSUBDIR       Subdirectory under the manual page section, i.e. "/vax"
1298                 or "/tahoe" for machine specific manual pages.
1300 MAN             The manual pages to be installed (use a .1 - .9 suffix).
1302 MLINKS          List of manual page links (using a .1 - .9 suffix).  The
1303                 linked-to file must come first, the linked file second,
1304                 and there may be multiple pairs.
1306 The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
1307 it exists.
1310 =-=-=-=-=   bsd.obj.mk   =-=-=-=-=
1312 The include file <bsd.obj.mk> defines targets related to the creation
1313 and use of separated object and source directories.
1315 If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses
1316 ${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if
1317 it exists.  Otherwise make(1) looks for the existence of a
1318 subdirectory (or a symlink to a directory) of the source directory
1319 into which built targets should be placed.  If an environment variable
1320 named MAKEOBJDIR is set, make(1) uses its value as the name of the
1321 object directory; failing that, make first looks for a subdirectory
1322 named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj".
1324 Object directories are not created automatically by make(1) if they
1325 don't exist; you need to run a separate "make obj".  (This will happen
1326 during a top-level build if "MKOBJDIRS" is set to a value other than
1327 "no").  When the source directory is a subdirectory of ${BSDSRCDIR} --
1328 and this is determined by a simple string prefix comparison -- object
1329 directories are created in a separate object directory tree, and a
1330 symlink to the object directory in that tree is created in the source
1331 directory; otherwise, "make obj" assumes that you're not in the main
1332 source tree and that it's not safe to use a separate object tree.
1334 Several variables used by <bsd.obj.mk> control exactly what
1335 directories and links get created during a "make obj":
1337 MAKEOBJDIR      If set, this is the component name of the object
1338                 directory.
1340 OBJMACHINE      If this is set but MAKEOBJDIR is not set, creates
1341                 object directories or links named "obj.${MACHINE}";
1342                 otherwise, just creates ones named "obj".
1344 USR_OBJMACHINE  If set, and the current directory is a subdirectory of
1345                 ${BSDSRCDIR}, create object directory in the
1346                 corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
1347                 otherwise, create it in the corresponding subdirectory
1348                 of ${BSDOBJDIR}
1350 BUILDID         If set, the contents of this variable are appended
1351                 to the object directory name.  If OBJMACHINE is also
1352                 set, ".${BUILDID}" is added after ".${MACHINE}".
1355 =-=-=-=-=   bsd.prog.mk   =-=-=-=-=
1357 The include file <bsd.prog.mk> handles building programs from one or
1358 more source files, along with their manual pages.  It has a limited number
1359 of suffixes, consistent with the current needs of the BSD tree.
1360 <bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters.
1362 It has eight targets:
1364         all:
1365                 build the program and its manual page.  This also
1366                 creates a GDB initialization file (.gdbinit) in
1367                 the objdir.  The .gdbinit file sets the shared library
1368                 prefix to ${DESTDIR} to facilitate cross-debugging.
1369         clean:
1370                 remove the program, any object files and the files a.out,
1371                 Errs, errs, mklog, and ${PROG}.core.
1372         cleandir:
1373                 remove all of the files removed by the target clean, as
1374                 well as .depend, tags, and any manual pages.
1375                 `distclean' is a synonym for `cleandir'.
1376         depend:
1377                 make the dependencies for the source files, and store
1378                 them in the file .depend.
1379         includes:
1380                 install any header files.
1381         install:
1382                 install the program and its manual pages; if the Makefile
1383                 does not itself define the target install, the targets
1384                 beforeinstall and afterinstall may also be used to cause
1385                 actions immediately before and after the install target
1386                 is executed.
1387         lint:
1388                 run lint on the source files
1389         tags:
1390                 create a tags file for the source files.
1392 It sets/uses the following variables:
1394 BINGRP          Binary group.
1396 BINOWN          Binary owner.
1398 BINMODE         Binary mode.
1400 CLEANDIRFILES   Additional files to remove for the cleandir target.
1402 CLEANFILES      Additional files to remove for the clean and cleandir targets.
1404 COPTS           Additional flags to the compiler when creating C objects.
1406 COPTS.<fn>      Additional flags to the compiler when creating the
1407                 C objects for <fn>.
1408                 For <fn>.[ly], "<fn>.c" must be used.
1410 CPUFLAGS        Additional flags to the compiler/assembler to select
1411                 CPU instruction set options, CPU tuning options, etc.
1413 CPUFLAGS.<fn>   Additional flags to the compiler/assembler for <fn>.
1414                 For <fn>.[ly], "<fn>.c" must be used.
1416 CPPFLAGS        Additional flags to the C pre-processor.
1418 CPPFLAGS.<fn>   Additional flags to the C pre-processor for <fn>.
1419                 For <fn>.[ly], "<fn>.c" must be used.
1421 GDBINIT         List of GDB initialization files to add to "source"
1422                 directives in the .gdbinit file that is created in the
1423                 objdir.
1425 LDADD           Additional loader objects.  Usually used for libraries.
1426                 For example, to load with the compatibility and utility
1427                 libraries, use:
1429                         LDADD+=-lutil -lcompat
1431 LDFLAGS         Additional linker flags (passed to ${CC} during link).
1433 LINKS           See <bsd.links.mk>
1435 OBJCOPTS        Additional flags to the compiler when creating ObjC objects.
1437 OBJCOPTS.<fn>   Additional flags to the compiler when creating the
1438                 ObjC objects for <fn>.
1439                 For <fn>.[ly], "<fn>.c" must be used.
1441 SYMLINKS        See <bsd.links.mk>
1443 MAN             Manual pages (should end in .1 - .9).  If no MAN variable is
1444                 defined, "MAN=${PROG}.1" is assumed.
1446 PAXCTL_FLAGS    If defined, run paxctl(1) on the program binary after link
1447                 time, with the value of this variable as args to paxctl(1).
1449 PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS.
1451 PROG            The name of the program to build.  If not supplied, nothing
1452                 is built.
1454 PROG_CXX        If defined, the name of the program to build.  Also
1455                 causes <bsd.prog.mk> to link the program with the C++
1456                 compiler rather than the C compiler.  PROG_CXX overrides
1457                 the value of PROG if PROG is also set.
1459 PROGNAME        The name that the above program will be installed as, if
1460                 different from ${PROG}.
1462 SRCS            List of source files to build the program.  If SRCS is not
1463                 defined, it's assumed to be ${PROG}.c.
1465 DPSRCS          List of source files which are needed for generating
1466                 dependencies, but are not needed in ${SRCS}.
1468 DPADD           Additional dependencies for the program.  Usually used for
1469                 libraries.  For example, to depend on the compatibility and
1470                 utility libraries use:
1472                         DPADD+=${LIBCOMPAT} ${LIBUTIL}
1474                 The following system libraries are predefined for DPADD:
1476                 LIBARCHIVE?=    ${DESTDIR}/usr/lib/libarchive.a
1477                 LIBASN1?=       ${DESTDIR}/usr/lib/libasn1.a
1478                 LIBATF_C?=      ${DESTDIR}/usr/lib/libatf-c.a
1479                 LIBATF_CXX?=    ${DESTDIR}/usr/lib/libatf-c++.a
1480                 LIBBIND9?=      ${DESTDIR}/usr/lib/libbind9.a
1481                 LIBBLUETOOTH?=  ${DESTDIR}/usr/lib/libbluetooth.a
1482                 LIBBSDMALLOC?=  ${DESTDIR}/usr/lib/libbsdmalloc.a
1483                 LIBBZ2?=        ${DESTDIR}/usr/lib/libbz2.a
1484                 LIBC?=          ${DESTDIR}/usr/lib/libc.a
1485                 LIBCOMPAT?=     ${DESTDIR}/usr/lib/libcompat.a
1486                 LIBCOM_ERR?=    ${DESTDIR}/usr/lib/libcom_err.a
1487                 LIBCRT0?=       ${DESTDIR}/usr/lib/crt0.o
1488                 LIBCRTI?=       ${DESTDIR}/usr/lib/crti.o
1489                 LIBCRYPT?=      ${DESTDIR}/usr/lib/libcrypt.a
1490                 LIBCRYPTO?=     ${DESTDIR}/usr/lib/libcrypto.a
1491                 LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a
1492                 LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a
1493                 LIBCRYPTO_RC5?= ${DESTDIR}/usr/lib/libcrypto_rc5.a
1494                 LIBCURSES?=     ${DESTDIR}/usr/lib/libcurses.a
1495                 LIBC_PIC?=      ${DESTDIR}/usr/lib/libc_pic.a
1496                 LIBDBM?=        ${DESTDIR}/usr/lib/libdbm.a
1497                 LIBDES?=        ${DESTDIR}/usr/lib/libdes.a
1498                 LIBDNS?=        ${DESTDIR}/usr/lib/libdns.a
1499                 LIBEDIT?=       ${DESTDIR}/usr/lib/libedit.a
1500                 LIBEVENT?=      ${DESTDIR}/usr/lib/libevent.a
1501                 LIBEVENT_OPENSSL?=      ${DESTDIR}/usr/lib/libevent_openssl.a
1502                 LIBEVENT_PTHREADS?=     ${DESTDIR}/usr/lib/libevent_pthreads.a
1503                 LIBEXPAT?=      ${DESTDIR}/usr/lib/libexpat.a
1504                 LIBFETCH?=      ${DESTDIR}/usr/lib/libfetch.a
1505                 LIBFORM?=       ${DESTDIR}/usr/lib/libform.a
1506                 LIBFL?=         ${DESTDIR}/usr/lib/libfl.a
1507                 LIBG2C?=        ${DESTDIR}/usr/lib/libg2c.a
1508                 LIBGCC?=        ${DESTDIR}/usr/lib/libgcc.a
1509                 LIBGNUMALLOC?=  ${DESTDIR}/usr/lib/libgnumalloc.a
1510                 LIBGSSAPI?=     ${DESTDIR}/usr/lib/libgssapi.a
1511                 LIBHDB?=        ${DESTDIR}/usr/lib/libhdb.a
1512                 LIBHEIMBASE?=   ${DESTDIR}/usr/lib/libheimbase.a
1513                 LIBHEIMNTLM?=   ${DESTDIR}/usr/lib/libheimntlm.a
1514                 LIBHX500?=      ${DESTDIR}/usr/lib/libhx500.a
1515                 LIBINTL?=       ${DESTDIR}/usr/lib/libintl.a
1516                 LIBIPSEC?=      ${DESTDIR}/usr/lib/libipsec.a
1517                 LIBISC?=        ${DESTDIR}/usr/lib/libisc.a
1518                 LIBISCCC?=      ${DESTDIR}/usr/lib/libisccc.a
1519                 LIBISCFG?=      ${DESTDIR}/usr/lib/libiscfg.a
1520                 LIBKADM5CLNT?=  ${DESTDIR}/usr/lib/libkadm5clnt.a
1521                 LIBKADM5SRV?=   ${DESTDIR}/usr/lib/libkadm5srv.a
1522                 LIBKAFS?=       ${DESTDIR}/usr/lib/libkafs.a
1523                 LIBKRB5?=       ${DESTDIR}/usr/lib/libkrb5.a
1524                 LIBKVM?=        ${DESTDIR}/usr/lib/libkvm.a
1525                 LIBL?=          ${DESTDIR}/usr/lib/libl.a
1526                 LIBLBER?=       ${DESTDIR}/usr/lib/liblber.a
1527                 LIBLDAP?=       ${DESTDIR}/usr/lib/libldap.a
1528                 LIBLDAP_R?=     ${DESTDIR}/usr/lib/libldap_r.a
1529                 LIBLUA?=        ${DESTDIR}/usr/lib/liblua.a
1530                 LIBLUTOK?=      ${DESTDIR}/usr/lib/liblutok.a
1531                 LIBLWRES?=      ${DESTDIR}/usr/lib/liblwres.a
1532                 LIBM?=          ${DESTDIR}/usr/lib/libm.a
1533                 LIBMAGIC?=      ${DESTDIR}/usr/lib/libmagic.a
1534                 LIBMENU?=       ${DESTDIR}/usr/lib/libmenu.a
1535                 LIBOBJC?=       ${DESTDIR}/usr/lib/libobjc.a
1536                 LIBOSSAUDIO?=   ${DESTDIR}/usr/lib/libossaudio.a
1537                 LIBPAM?=        ${DESTDIR}/usr/lib/libpam.a
1538                 LIBPCAP?=       ${DESTDIR}/usr/lib/libpcap.a
1539                 LIBPCI?=        ${DESTDIR}/usr/lib/libpci.a
1540                 LIBPMC?=        ${DESTDIR}/usr/lib/libpmc.a
1541                 LIBPOSIX?=      ${DESTDIR}/usr/lib/libposix.a
1542                 LIBPTHREAD?=    ${DESTDIR}/usr/lib/libpthread.a
1543                 LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a
1544                 LIBPUFFS?=      ${DESTDIR}/usr/lib/libpuffs.a
1545                 LIBQUOTA?=      ${DESTDIR}/usr/lib/libquota.a
1546                 LIBRADIUS?=     ${DESTDIR}/usr/lib/libradius.a
1547                 LIBRESOLV?=     ${DESTDIR}/usr/lib/libresolv.a
1548                 LIBRMT?=        ${DESTDIR}/usr/lib/librmt.a
1549                 LIBROKEN?=      ${DESTDIR}/usr/lib/libroken.a
1550                 LIBRPCSVC?=     ${DESTDIR}/usr/lib/librpcsvc.a
1551                 LIBRT?=         ${DESTDIR}/usr/lib/librt.a
1552                 LIBRUMP?=       ${DESTDIR}/usr/lib/librump.a
1553                 LIBRUMPFS_CD9660FS?=${DESTDIR}/usr/lib/librumpfs_cd9660fs.a
1554                 LIBRUMPFS_EFS?= ${DESTDIR}/usr/lib/librumpfs_efs.a
1555                 LIBRUMPFS_EXT2FS?=${DESTDIR}/usr/lib/librumpfs_ext2fs.a
1556                 LIBRUMPFS_FFS?= ${DESTDIR}/usr/lib/librumpfs_ffs.a
1557                 LIBRUMPFS_HFS?= ${DESTDIR}/usr/lib/librumpfs_hfs.a
1558                 LIBRUMPFS_LFS?= ${DESTDIR}/usr/lib/librumpfs_lfs.a
1559                 LIBRUMPFS_MSDOSFS?=${DESTDIR}/usr/lib/librumpfs_msdosfs.a
1560                 LIBRUMPFS_NFS?= ${DESTDIR}/usr/lib/librumpfs_nfs.a
1561                 LIBRUMPFS_NTFS?=${DESTDIR}/usr/lib/librumpfs_ntfs.a
1562                 LIBRUMPFS_SYSPUFFS?=${DESTDIR}/usr/lib/librumpfs_syspuffs.a
1563                 LIBRUMPFS_TMPFS?=${DESTDIR}/usr/lib/librumpfs_tmpfs.a
1564                 LIBRUMPFS_UDF?= ${DESTDIR}/usr/lib/librumpfs_udf.a
1565                 LIBRUMPFS_UFS?= ${DESTDIR}/usr/lib/librumpfs_ufs.a
1566                 LIBRUMPUSER?=   ${DESTDIR}/usr/lib/librumpuser.a
1567                 LIBSASLC?=      ${DESTDIR}/usr/lib/libsaslc.a
1568                 LIBSKEY?=       ${DESTDIR}/usr/lib/libskey.a
1569                 LIBSL?=         ${DESTDIR}/usr/lib/libsl.a
1570                 LIBSQLITE3?=    ${DESTDIR}/usr/lib/libsqlite3.a
1571                 LIBSS?=         ${DESTDIR}/usr/lib/libss.a
1572                 LIBSSH?=        ${DESTDIR}/usr/lib/libssh.a
1573                 LIBSSL?=        ${DESTDIR}/usr/lib/libssl.a
1574                 LIBSSP?=        ${DESTDIR}/usr/lib/libssp.a
1575                 LIBSTDCXX?=     ${DESTDIR}/usr/lib/libstdc++.a
1576                 LIBSUPCXX?=     ${DESTDIR}/usr/lib/libsupc++.a
1577                 LIBTERMINFO?=   ${DESTDIR}/usr/lib/libterminfo.a
1578                 LIBTRE?=        ${DESTDIR}/usr/lib/libtre.a
1579                 LIBUSBHID?=     ${DESTDIR}/usr/lib/libusbhid.a
1580                 LIBUTIL?=       ${DESTDIR}/usr/lib/libutil.a
1581                 LIBWIND?=       ${DESTDIR}/usr/lib/libwind.a
1582                 LIBWRAP?=       ${DESTDIR}/usr/lib/libwrap.a
1583                 LIBY?=          ${DESTDIR}/usr/lib/liby.a
1584                 LIBZ?=          ${DESTDIR}/usr/lib/libz.a
1586                 The following X-Windows libraries are predefined for DPADD:
1588                 LIBFS?=         ${DESTDIR}/usr/X11R7/lib/libFS.a
1589                 LIBGL?=         ${DESTDIR}/usr/X11R7/lib/libGL.a
1590                 LIBGLU?=        ${DESTDIR}/usr/X11R7/lib/libGLU.a
1591                 LIBICE?=        ${DESTDIR}/usr/X11R7/lib/libICE.a
1592                 LIBSM?=         ${DESTDIR}/usr/X11R7/lib/libSM.a
1593                 LIBX11?=        ${DESTDIR}/usr/X11R7/lib/libX11.a
1594                 LIBX11_XCB?=    ${DESTDIR}/usr/X11R7/lib/libX11-xcb.a
1595                 LIBXTRAP?=      ${DESTDIR}/usr/X11R7/lib/libXTrap.a
1596                 LIBXAU?=        ${DESTDIR}/usr/X11R7/lib/libXau.a
1597                 LIBXAW?=        ${DESTDIR}/usr/X11R7/lib/libXaw.a
1598                 LIBXCB?=        ${DESTDIR}/usr/X11R7/lib/libxcb.a
1599                 LIBXDMCP?=      ${DESTDIR}/usr/X11R7/lib/libXdmcp.a
1600                 LIBXEXT?=       ${DESTDIR}/usr/X11R7/lib/libXext.a
1601                 LIBXFONT?=      ${DESTDIR}/usr/X11R7/lib/libXfont.a
1602                 LIBXFT?=        ${DESTDIR}/usr/X11R7/lib/libXft.a
1603                 LIBXI?=         ${DESTDIR}/usr/X11R7/lib/libXi.a
1604                 LIBXINERAMA?=   ${DESTDIR}/usr/X11R7/lib/libXinerama.a
1605                 LIBXMU?=        ${DESTDIR}/usr/X11R7/lib/libXmu.a
1606                 LIBXMUU?=       ${DESTDIR}/usr/X11R7/lib/libXmuu.a
1607                 LIBXPM?=        ${DESTDIR}/usr/X11R7/lib/libXpm.a
1608                 LIBXRANDR?=     ${DESTDIR}/usr/X11R7/lib/libXrandr.a
1609                 LIBXRENDER?=    ${DESTDIR}/usr/X11R7/lib/libXrender.a
1610                 LIBXSS?=        ${DESTDIR}/usr/X11R7/lib/libXss.a
1611                 LIBXT?=         ${DESTDIR}/usr/X11R7/lib/libXt.a
1612                 LIBXTST?=       ${DESTDIR}/usr/X11R7/lib/libXtst.a
1613                 LIBXV?=         ${DESTDIR}/usr/X11R7/lib/libXv.a
1614                 LIBXXF86DGA?=   ${DESTDIR}/usr/X11R7/lib/libXxf86dga.a
1615                 LIBXXF86MISC?=  ${DESTDIR}/usr/X11R7/lib/libXxf86misc.a
1616                 LIBXXF86VM?=    ${DESTDIR}/usr/X11R7/lib/libXxf86vm.a
1617                 LIBDPS?=        ${DESTDIR}/usr/X11R7/lib/libdps.a
1618                 LIBFNTSTUBS?=   ${DESTDIR}/usr/X11R7/lib/libfntstubs.a
1619                 LIBFONTCACHE?=  ${DESTDIR}/usr/X11R7/lib/libfontcache.a
1620                 LIBFONTCONFIG?= ${DESTDIR}/usr/X11R7/lib/libfontconfig.a
1621                 LIBFONTENC?=    ${DESTDIR}/usr/X11R7/lib/libfontenc.a
1622                 LIBFREETYPE?=   ${DESTDIR}/usr/X11R7/lib/libfreetype.a
1623                 LIBLBXUTIL?=    ${DESTDIR}/usr/X11R7/lib/liblbxutil.a
1624                 LIBXKBFILE?=    ${DESTDIR}/usr/X11R7/lib/libxkbfile.a
1626 SHAREDSTRINGS   If defined, a new .c.o rule is used that results in shared
1627                 strings, using xstr(1). Note that this will not work with
1628                 parallel makes.
1630 STRIPFLAG       The flag passed to the install program to cause the binary
1631                 to be stripped.
1633 SUBDIR          A list of subdirectories that should be built as well.
1634                 Each of the targets will execute the same target in the
1635                 subdirectories.
1637 SCRIPTS         A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
1638                 These are installed exactly like programs.
1640 SCRIPTSDIR      The location to install the scripts.  Each script can be
1641                 installed to a separate path by setting SCRIPTSDIR_<script>.
1643 SCRIPTSNAME     The name that the above program will be installed as, if
1644                 different from ${SCRIPTS}. These can be further specialized
1645                 by setting SCRIPTSNAME_<script>.
1647 FILES           See description of <bsd.files.mk>.
1649 SHLINKDIR       Target directory for shared linker.  See description of
1650                 <bsd.own.mk> for additional information about this variable.
1652 The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
1653 if it exists, as well as the include file <bsd.man.mk>.
1655 Some simple examples:
1657 To build foo from foo.c with a manual page foo.1, use:
1659         PROG=   foo
1661         .include <bsd.prog.mk>
1663 To build foo from foo.c with a manual page foo.2, add the line:
1665         MAN=    foo.2
1667 If foo does not have a manual page at all, add the line:
1669         MKMAN=  no
1671 If foo has multiple source files, add the line:
1673         SRCS=   a.c b.c c.c d.c
1676 =-=-=-=-=   bsd.rpc.mk   =-=-=-=-=
1678 The include file <bsd.rpc.mk> contains a makefile fragment used to
1679 construct source files built by rpcgen.
1681 The following macros may be defined in makefiles which include
1682 <bsd.rpc.mk> in order to control which files get built and how they
1683 are to be built:
1685 RPC_INCS:       construct .h file from .x file
1686 RPC_XDRFILES:   construct _xdr.c from .x file
1687                 (for marshalling/unmarshalling data types)
1688 RPC_SVCFILES:   construct _svc.c from .x file
1689                 (server-side stubs)
1690 RPC_SVCFLAGS:   Additional flags passed to builds of RPC_SVCFILES.
1692 RPC_XDIR:       Directory containing .x/.h files
1695 =-=-=-=-=   bsd.shlib.mk   =-=-=-=-=
1697 The include file <bsd.shlib.mk> computes parameters for shared library
1698 installation and use.  It defines no targets.  <bsd.own.mk> MUST be
1699 included before <bsd.shlib.mk>.
1701 <bsd.own.mk> sets the following variables, if they are not already defined
1702 (defaults are in brackets):
1704 SHLIBINSTALLDIR If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR}
1705                 instead of ${LIBDIR} as the base path for shared library
1706                 installation.  [/lib]
1708 SHLIBDIR        The path to USE_SHLIBDIR shared libraries to use when building
1709                 a program.  [/lib for programs in /bin and /sbin, /usr/lib
1710                 for all others.]
1712 _LIBSODIR       Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no",
1713                 otherwise set to ${LIBDIR}
1715 SHLINKINSTALLDIR Base path for shared linker.  [/libexec]
1717 SHLINKDIR       Path to use for shared linker when building a program.
1718                 [/libexec for programs in /bin and /sbin, /usr/libexec for
1719                 all others.]
1722 =-=-=-=-=   bsd.subdir.mk   =-=-=-=-=
1724 The include file <bsd.subdir.mk> contains the default targets for building
1725 subdirectories.  It has the same eight targets as <bsd.prog.mk>: all,
1726 clean, cleandir, depend, includes, install, lint, and tags.  It uses the
1727 following variables:
1729 NOSUBDIR        If this variable is defined, then the SUBDIR variable
1730                 will be ignored and subdirectories will not be processed.
1732 SUBDIR          For all of the directories listed in ${SUBDIR}, the
1733                 specified directory will be visited and the target made.
1735                 As a special case, the use of a token .WAIT as an
1736                 entry in SUBDIR acts as a synchronization barrier
1737                 when multiple make jobs are run; subdirs before the
1738                 .WAIT must complete before any subdirs after .WAIT are
1739                 started.  See make(1) for some caveats on use of .WAIT
1740                 and other special sources.
1743 =-=-=-=-=   bsd.sys.mk   =-=-=-=-=
1745 The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
1746 <bsd.lib.mk>.  It contains overrides that are used when building
1747 the NetBSD source tree.
1749 The following variables control how various files are compiled/built.
1750 (Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"):
1752 AR              Create, modify, and extract from archives.  [ar]
1754 ARFLAGS         Options to ${AR}.  [rl]
1756 AS              Assembler.  [as]
1758 AFLAGS          Options to ${CC} when compiling or linking .s or .S
1759                 assembly source files.  []
1761 BUILDSEED       GCC uses random numbers when compiling C++ code.
1762                 If this option is present, seed the random number
1763                 generator based on the value, source file names and
1764                 the output file name to make builds more deterministic.
1765                 Additional information is available in the GCC
1766                 documentation of -frandom-seed.
1768 CC              C compiler.  [cc]
1770 CFLAGS          Options to ${CC}.  [Usually -O or -O2]
1772 CPP             C Pre-Processor.  [cpp]
1774 CPPFLAGS        Options to ${CPP}.  []
1776 CPUFLAGS        Optimization flags for ${CC}.  []
1778 CXX             C++ compiler.  [c++]
1780 CXXFLAGS        Options to ${CXX}.  [${CFLAGS}]
1782 ELF2ECOFF       Convert ELF-format executable to ECOFF.  [elf2ecoff]
1784 FC              Fortran compiler.  [f77]
1786 FFLAGS          Options to {$FC}.  [-O]
1788 HOST_SH         Shell.  This must be an absolute path, because it may be
1789                 substituted into "#!" lines in scripts.  [/bin/sh]
1791 INSTALL         install(1) command.  [install]
1793 LEX             Lexical analyzer.  [lex]
1795 LFLAGS          Options to ${LEX}.  []
1797 LPREFIX         Symbol prefix for ${LEX} (see -P option in lex(1)) [yy]
1799 LD              Linker.  [ld]
1801 LDFLAGS         Options to ${CC} during the link process.  []
1803 LINT            C program verifier.  [lint]
1805 LINTFLAGS       Options to ${LINT}.  [-chapbxzFS]
1807 LORDER          List dependencies for object files.  [lorder]
1809 MAKE            make(1).  [make]
1811 MKDEP           Construct Makefile dependency list.  [mkdep]
1813 MKDEPCXX        Construct Makefile dependency list for C++ files.  [mkdep]
1815 NM              List symbols from object files.  [nm]
1817 PC              Pascal compiler.  [pc]  (Not present)
1819 PFLAGS          Options to ${PC}.  []
1821 OBJC            Objective C compiler.  [${CC}]
1823 OBJCFLAGS       Options to ${OBJC}.  [${CFLAGS}]
1825 OBJCOPY         Copy and translate object files.  [objcopy]
1827 OBJCOPYLIBFLAGS Flags to pass to objcopy when library objects are
1828                 being built. [${.TARGET} =~ "*.po" ? -X : -x]
1830 OBJDUMP         Display information from object files.  [objdump]
1832 RANLIB          Generate index to archive.  [ranlib]
1834 SIZE            List section sizes and total size.  [size]
1836 STRIP           Discard symbols from object files.  [strip]
1838 TSORT           Topological sort of a directed graph.  [tsort -q]
1840 YACC            LALR(1) parser generator.  [yacc]
1842 YFLAGS          Options to ${YACC}.  []
1844 YHEADER         If defined, add "-d" to YFLAGS, and add dependencies
1845                 from <file>.y to <file>.h and <file>.c, and add
1846                 <foo>.h to CLEANFILES.
1848 YPREFIX         If defined, add "-p ${YPREFIX}" to YFLAGS.
1851 Other variables of note (incomplete list):
1853 NOGCCERROR      If defined, prevents passing certain ${CFLAGS} to GCC
1854                 that cause warnings to be fatal, such as:
1855                         -Werror -Wa,--fatal-warnings
1856                 (The latter being for as(1).)
1858 NOCLANGERROR    If defined and clang is used as C compiler, -Werror is not
1859                 passed to it.
1861 WARNS           Crank up compiler warning options; the distinct levels are:
1862                         WARNS=1
1863                         WARNS=2
1864                         WARNS=3
1865                         WARNS=4
1866                         WARNS=5
1868 =-=-=-=-=   bsd.x11.mk   =-=-=-=-=
1870 The include file <bsd.x11.mk> contains parameters and targets for
1871 cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}.
1872 It should be included after the general Makefile contents but before
1873 the include files such as <bsd.prog.mk> and <bsd.lib.mk>.
1875 It provides the following targets:
1876         .man.1 .man.3 .man.4 .man.5 .man.7:
1877                 If ${MAN} or ${PROG} is set and ${MKMAN} != "no",
1878                 these rules convert from X11's manual page source
1879                 into an mdoc.old source file.
1881 It sets the following variables:
1883 BINDIR                  Set to ${X11BINDIR}.
1884                         To override, define after including <bsd.x11.mk>
1886 LIBDIR                  Set to ${X11USRLIBDIR}.
1887                         To override, define after including <bsd.x11.mk>
1889 MANDIR                  Set to ${X11MANDIR}.
1890                         To override, define after including <bsd.x11.mk>
1892 CPPFLAGS                Appended with definitions to include from
1893                         ${DESTDIR}${X11INCDIR}
1895 LDFLAGS                 Appended with definitions to link from
1896                         ${DESTDIR}${X11USRLIBDIR}
1898 X11FLAGS.CONNECTION     Equivalent to X11's CONNECTION_FLAGS.
1900 X11FLAGS.EXTENSION      Equivalent to X11's EXT_DEFINES.
1902 X11FLAGS.LOADABLE       Equivalent to X11's LOADABLE.
1904 X11FLAGS.OS_DEFINES     Equivalent to X11's OS_DEFINES.
1906 X11FLAGS.SERVER         Equivalent to X11's ServerDefines.
1908 X11FLAGS.THREADLIB      Equivalent to X11's THREADS_DEFINES for libraries.
1910 X11FLAGS.THREADS        Equivalent to X11's THREADS_DEFINES.
1912 X11FLAGS.VERSION        cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION.
1914 X11FLAGS.DIX            Equivalent to X11's DIX_DEFINES.
1916 X11TOOL_UNXCOMM         Commandline to convert `XCOMM' comments to `#'
1918 It uses the following variables:
1920 APPDEFS                 List of app-default files to install.
1922 CPPSCRIPTS              List of files/scripts to run through cpp(1)
1923                         and then ${X11TOOL_UNXCOMM}.  The source files
1924                         have a `.cpp' suffix, the generated files do not.
1926 CPPSCRIPTFLAGS          Additional flags to cpp(1) when building CPPSCRIPTS.
1928 CPPSCRIPTFLAGS_<fn>     Additional flags to cpp(1) when building CPPSCRIPT <fn>.
1931 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=