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