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