bsd.README revision 1.221
1# $NetBSD: bsd.README,v 1.221 2008/08/28 07:53:53 mrg 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 8Note, this file is not intended to replace reading through the .mk 9files for anything tricky. 10 11=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 12 13RANDOM THINGS WORTH KNOWING: 14 15The files are simply C-style #include files, and pretty much behave like 16you'd expect. The syntax is slightly different in that a single '.' is 17used instead of the hash mark, i.e. ".include <bsd.prog.mk>". 18 19One difference that will save you lots of debugging time is that inclusion 20of the file is normally done at the *end* of the Makefile. The reason for 21this is because .mk files often modify variables and behavior based on the 22values of variables set in the Makefile. To make this work, remember that 23the FIRST target found is the target that is used, i.e. if the Makefile has: 24 25 a: 26 echo a 27 a: 28 echo a number two 29 30the command "make a" will echo "a". To make things confusing, the SECOND 31variable assignment is the overriding one, i.e. if the Makefile has: 32 33 a= foo 34 a= bar 35 36 b: 37 echo ${a} 38 39the command "make b" will echo "bar". This is for compatibility with the 40way the V7 make behaved. 41 42It's fairly difficult to make the BSD .mk files work when you're building 43multiple programs in a single directory. It's a lot easier to split up the 44programs than to deal with the problem. Most of the agony comes from making 45the "obj" directory stuff work right, not because we switched to a new version 46of make. So, don't get mad at us, figure out a better way to handle multiple 47architectures so we can quit using the symbolic link stuff. (Imake doesn't 48count.) 49 50The file .depend in the source directory is expected to contain dependencies 51for the source files. This file is read automatically by make after reading 52the Makefile. 53 54The variable DESTDIR works as before. It's not set anywhere but will change 55the tree where the file gets installed. 56 57The profiled libraries are no longer built in a different directory than 58the regular libraries. A new suffix, ".po", is used to denote a profiled 59object, and ".so" denotes a shared (position-independent) object. 60 61There are various make variables used during the build. 62 63Many variables support a (case sensitive) value of "no" or "yes", 64and are tested with ${VAR} == "no" and ${VAR} != "no" . 65 66 67The basic rule for the variable naming scheme is as follows: 68 69MKxxx Can be set to "no" to disable functionality, or 70 "yes" to enable it. 71 Usually defaults to "yes", although some variables 72 default to "no". 73 Due to make(1) implementation issues, if a temporary 74 command-line override of a mk.conf or <bsd.own.mk> 75 setting is required whilst still honoring a particular 76 Makefile's setting of MKxxx, use 77 env MKxxx=value make 78 instead of 79 make MKxxx=value 80 81NOxxx If defined, disables a feature. 82 Not intended for users. 83 This is to allow Makefiles to disable functionality 84 that they don't support (such as missing man pages). 85 NOxxx variables must be defined before <bsd.own.mk> 86 is included. 87 88The following variables that control how things are made/installed that 89are not set by default. These should not be set by Makefiles; they're for 90the user to define in MAKECONF (see <bsd.own.mk>, below) or on the make(1) 91command line: 92 93BUILD If defined, 'make install' checks that the targets in the 94 source directories are up-to-date and remakes them if they 95 are out of date, instead of blindly trying to install 96 out of date or non-existent targets. 97 98MAKEVERBOSE Control how "verbose" the standard make(1) rules are. 99 Default: 2 100 Supported values: 101 0 Minimal output ("quiet") 102 1 Describe what is occurring 103 2 Describe what is occurring and echo the actual command 104 105 106MKATF If "no", don't build libatf-c, libatf-c++ libraries associated 107 with the Automated Testing Framework (ATF). 108 Default: yes 109 110MKBFD If "no", don't build libbfd, libiberty, or any of the things 111 that depend on them (binutils/gas/ld, gdb, dbsym, mdsetimage). 112 Default: yes 113 114MKCATPAGES If "no", don't build or install the catman pages. 115 Default: yes 116 117MKCOMPLEX If "no", don't build libm support for <complex.h> 118 Default: yes 119 120MKCRYPTO If "no", no cryptography support will be built into the system, 121 and also acts as "MKKERBEROS=no". 122 Default: yes 123 124MKCRYPTO_IDEA If not "no", IDEA support will be built into libcrypto_idea.a. 125 Default: no 126 127MKCRYPTO_MDC2 If not "no", MDC2 support will be built into libcrypto_mdc2.a 128 Default: no 129 130MKCRYPTO_RC5 If not "no", RC5 support will be built into libcrypto_rc5.a. 131 Default: no 132 133MKCVS If "no", don't build or install cvs(1). 134 Default: yes 135 136MKDEBUG If "no", don't build and install separate debugging symbols 137 into /usr/libdata/debug. 138 Default: no 139 140MKDEBUGLIB Build *_g.a debugging libraries, which are compiled 141 with -DDEBUG. 142 Default: no 143 144MKDOC If "no", don't build or install the documentation. 145 Default: yes 146 147MKDYNAMICROOT If "no", build programs in /bin and /sbin statically, 148 don't install certain libraries in /lib, and don't 149 install the shared linker into /libexec. 150 Default: yes 151 152MKGCC If "no", don't build gcc(1) or any of the GCC-related 153 libraries (libgcc, libobjc, libstdc++). 154 Default: yes 155 156MKGCCCMDS If "no", don't build gcc(1), but do build the GCC-related 157 libraries (libgcc, libobjc, libstdc++). 158 Default: yes 159 160MKGDB If "no", don't build gdb(1). 161 Default: yes 162 163MKHESIOD If "no", disables building of Hesiod infrastructure 164 (libraries and support programs). 165 Default: yes 166 167MKHOSTOBJ If not "no", for programs intended to be run on the compile 168 host, the name, release, and architecture of the host 169 operating system will be suffixed to the name of the object 170 directory created by "make obj". 171 Default: no 172 173MKHTML If "no", don't build or install the html man pages. 174 Default: no 175 176MKIEEEFP If "no", don't add code for IEEE754/IEC60559 conformance. 177 Has no effect on most platforms. 178 Default: yes 179 180MKINET6 If "no", disables building of INET6 (IPv6) infrastructure 181 (libraries and support programs). 182 Default: yes 183 184MKINFO If "no", don't build or install Info documentation from 185 Texinfo source files. 186 Default: yes 187 188MKIPFILTER If "no", don't build or install the IP Filter programs and LKM. 189 Default: yes 190 191MKISCSI If "no", don't build or install iSCSI library or applications 192 (depends on libpthread.) 193 Default: yes 194 195MKKERBEROS If "no", disables building of Kerberos v5 196 infrastructure (libraries and support programs). 197 Default: yes 198 199MKLDAP If "no", disables building of LDAP infrastructure 200 (libraries and support programs). 201 Default: yes 202 203MKLINKLIB If "no", act as "MKLINT=no MKPICINSTALL=no MKPROFILE=no". 204 Also: 205 - don't install the .a libraries 206 - don't install _pic.a libraries on PIC systems 207 - don't build .a libraries on PIC systems 208 - don't install the .so symlink on ELF systems 209 I.e, only install the shared library (and the .so.major 210 symlink on ELF). 211 Default: yes 212 213MKLINT If "no", don't build or install the lint libraries. 214 Default: yes 215 216MKMAN If "no", don't build or install the man or catman pages, 217 and also acts as "MKCATPAGES=no MKHTML=no". 218 Default: yes 219 220MKMANZ If not "no", compress manual pages at installation time. 221 Default: no 222 223MKMODULAR If "no", don't build the versions of modload(8), modstat(8) 224 and modunload(8) that use the new modules framework present 225 in the kernel (enabled separately using 'options MODULAR' 226 int the configuration file). Also don't build any other 227 stuff that may rely on this support, such as tests or kernel 228 modules. 229 Note: This flag will disappear when the new modules framework 230 is complete enough to replace the old LKM, effectively 231 switching it to "yes" by default. 232 Default: no 233 234MKNLS If "no", don't build or install the NLS files and locale 235 definition files. 236 Default: yes 237 238MKNVI If "no", don't build or install the experimental new version 239 of nvi (/usr/bin/nvi et cetera). 240 Default: yes 241 242MKOBJ If "no", don't enable the rule which creates objdirs, 243 and also acts as "MKOBJDIRS=no". 244 Default: yes 245 246MKOBJDIRS If "no", don't create objdirs during a "make build". 247 Default: no 248 249MKPAM If "no", disables building of PAM authentication 250 infrastructure (libraries and support programs). 251 Default: yes 252 253MKPCC If "no", don't build pcc(1) or any of the PCC-related 254 libraries (libpcc, libpccsoftfloat). 255 Default: no 256 257MKPCCCMDS If "no", don't build pcc(1), but do build the PCC-related 258 libraries (libpcc, libpccsoftfloat). 259 Default: no 260 261MKPF If "no", don't build or install the pf programs and LKM. 262 Default: yes 263 264MKPIC If "no", don't build or install shared libraries, and 265 also acts as "MKPICLIB=no" 266 Default: yes (for MACHINE_ARCHs that support it) 267 268MKPICINSTALL If "no", don't install the *_pic.a libraries. 269 Default: yes 270 271MKPICLIB If "no", don't build *_pic.a libraries, and build the 272 shared object libraries from the .a libraries. 273 A symlink is installed in ${DESTDIR}/usr/lib for the 274 _pic.a library pointing to the .a library. 275 Default: yes 276 277MKPIE If "no", create regular executables. Otherwise create 278 PIE (Position Independent Executables). 279 Default: no 280 281MKPOSTFIX If "no", don't build or install postfix(1). 282 Default: yes 283 284MKPROFILE If "no", don't build or install the profiling (*_p.a) libraries. 285 Default: yes 286 287MKPUFFS If "no", don't build librefuse (lib/librefuse) or 288 puffs applications (usr.sbin/puffs). NOTE: libpuffs 289 is always built due to historic reasons. This flag will 290 disappear once puffs is no longer considered experimental, 291 i.e. it will effectively default to "yes". 292 Default: no 293 294MKSHARE If "no", act as "MKCATPAGES=no MKDOC=no MKHTML=no MKINFO=no 295 MKMAN=no MKNLS=no". 296 I.e, don't build catman pages, documentation, Info 297 documentation, man pages, NLS files, ... 298 Default: yes 299 300MKSKEY If "no", disables building of S/key authentication 301 infrastructure (libraries and support programs). 302 Default: yes 303 304MKSOFTFLOAT If not "no", build with options to enable the compiler to 305 generate output containing library calls for floating 306 point and possibly soft-float library support. 307 Default: no 308 309MKSTATICLIB If "no", don't build or install the normal static (*.a) 310 libraries. 311 Default: yes 312 313MKUNPRIVED If not "no", don't set the owner/group/mode when installing 314 files or directories, and keep a metadata log of what 315 the owner/group/mode should be. This allows a 316 non-root "make install". 317 Default: no 318 319MKUPDATE If not "no", 'make install' only installs targets that are 320 more recently modified in the source directories that their 321 installed counterparts. 322 Default: no 323 324MKX11 If not "no", 'make build' also descends into src/x11 325 to cross-build X11R6 and automatically enables creation 326 of X sets. 327 Mutually exclusive to MKXORG!=no 328 Default: no 329 330MKXORG If not "no", 'make build' also descends into 331 src/external/mit/xorg to cross-build X11R7 (modular Xorg) 332 and automatically enables creation of X sets. 333 Mutually exclusive to MKX11!=no 334 Default: no 335 336MKYP If "no", disables building of YP (NIS) 337 infrastructure (libraries and support programs). 338 Default: yes 339 340USE_HESIOD If "no", disables building Hesiod support into 341 various system utilities/libraries that support it. 342 If ${MKHESIOD} is "no", USE_HESIOD will also be 343 forced to "no". 344 345USE_INET6 If "no", disables building INET6 (IPv6) support into 346 various system utilities/libraries that support it. 347 If ${MKINET6} is "no", USE_INET6 will also be 348 forced to "no". 349 350USE_JEMALLOC If "no", disables building the "jemalloc" allocator 351 designed for improved performance with threaded 352 applications. The "phkmalloc" allocator as used up 353 before NetBSD-5.0 will be substituted. 354 355USE_KERBEROS If "no", disables building Kerberos v5 356 support into various system utilities/libraries that 357 support it. If ${MKKERBEROS} is "no", USE_KERBEROS 358 will also be forced to "no". 359 360USE_LDAP If "no", disables building LDAP support into various 361 system utilities/libraries that support it. 362 If ${MKLDAP} is "no", USE_LDAP will also be forced to "no". 363 364USE_PAM If "no", disables building PAM authentication support 365 into various system utilities/libraries that support it. 366 If ${MKPAM} is "no", USE_PAM will also be forced to "no". 367 368USE_SKEY If "no", disables building S/key authentication 369 support into various system utilities/libraries that 370 support it. If ${MKSKEY} is "no", USE_SKEY will 371 also be forced to "no". 372 Default: no 373 374USE_SSP If "no", disables GCC stack protection code, which 375 detects stack overflows and aborts the program. This 376 imposes some performance penalty. 377 Default: no 378 379USE_YP If "no", disables building YP (NIS) support into 380 various system utilities/libraries that support it. 381 If ${MKYP} is "no", USE_YP will also be forced to "no". 382 383COPTS.lib<lib> 384OBJCOPTS.lib<lib> 385LDADD.lib<lib> 386CPPFLAGS.lib<lib> 387CXXFLAGS.lib<lib> 388COPTS.<prog> 389OBJCCOPTS.<prog> 390LDADD.<prog> 391CPPFLAGS.<prog> 392CXXFLAGS.<prog> These provide a way to specify additions to the associated 393 variables in a way that applies only to a particular library 394 or program. <lib> corresponds to the LIB variable set in 395 the library's makefile. <prog> corresponds to either PROG 396 or PROG_CXX (if set). For example, if COPTS.libcrypto is 397 set to "-g", "-g" will be added to COPTS only when compiling 398 the crypto library. 399 400=-=-=-=-= sys.mk =-=-=-=-= 401 402The include file <sys.mk> has the default rules for all makes, in the BSD 403environment or otherwise. You probably don't want to touch this file. 404 405=-=-=-=-= bsd.own.mk =-=-=-=-= 406 407The include file <bsd.own.mk> contains source tree configuration parameters, 408such as the owners, groups, etc. for both manual pages and binaries, and 409a few global "feature configuration" parameters. 410 411It has no targets. 412 413To get system-specific configuration parameters, <bsd.own.mk> will try to 414include the file specified by the "MAKECONF" variable. If MAKECONF is not 415set, or no such file exists, the system make configuration file, /etc/mk.conf 416is included. These files may define any of the variables described below. 417 418<bsd.own.mk> sets the following variables, if they are not already defined 419(defaults are in brackets): 420 421NETBSDSRCDIR Top of the NetBSD source tree. 422 If _SRC_TOP_ != "", that will be used as the default, 423 otherwise BSDSRCDIR will be used as the default. 424 Various makefiles within the NetBSD source tree will 425 use this to reference the top level of the source tree. 426 427_SRC_TOP_ Top of the system source tree, as determined by <bsd.own.mk> 428 based on the presence of tools/ and build.sh. This variable 429 is "internal" to <bsd.own.mk>, although its value is only 430 determined once and then propagated to all sub-makes. 431 432BSDSRCDIR The real path to the system sources, so that 'make obj' 433 will work correctly. [/usr/src] 434 435BSDOBJDIR The real path to the system 'obj' tree, so that 'make obj' 436 will work correctly. [/usr/obj] 437 438BINGRP Binary group. [wheel] 439 440BINOWN Binary owner. [root] 441 442BINMODE Binary mode. [555] 443 444NONBINMODE Mode for non-executable files. [444] 445 446MANDIR Base path for manual installation. [/usr/share/man/cat] 447 448MANGRP Manual group. [wheel] 449 450MANOWN Manual owner. [root] 451 452MANMODE Manual mode. [${NONBINMODE}] 453 454MANINSTALL Manual installation type: maninstall, catinstall, or both 455 [maninstall catinstall] 456 457LDSTATIC Control program linking; if set blank, link everything 458 dynamically. If set to "-static", link everything statically. 459 If not set, programs link according to their makefile. 460 461LIBDIR Base path for library installation. [/usr/lib] 462 463LINTLIBDIR Base path for lint(1) library installation. [/usr/libdata/lint] 464 465LIBGRP Library group. [${BINGRP}] 466 467LIBOWN Library owner. [${BINOWN}] 468 469LIBMODE Library mode. [${NONBINMODE}] 470 471DOCDIR Base path for system documentation (e.g. PSD, USD, etc.) 472 installation. [/usr/share/doc] 473 474HTMLDOCDIR Base path for html system documentation installation. 475 [/usr/share/doc/html] 476 477DOCGRP Documentation group. [wheel] 478 479DOCOWN Documentation owner. [root] 480 481DOCMODE Documentation mode. [${NONBINMODE}] 482 483NLSDIR Base path for Native Language Support files installation. 484 [/usr/share/nls] 485 486NLSGRP Native Language Support files group. [wheel] 487 488NLSOWN Native Language Support files owner. [root] 489 490NLSMODE Native Language Support files mode. [${NONBINMODE}] 491 492X11SRCDIR The path to the xsrc tree. [/usr/xsrc] 493 494X11SRCDIR.xc The path to the (old) X11 xc src tree. [${X11SRCDIR}/xfree/xc] 495 496X11SRCDIR.local The path to the local X11 src tree. [${X11SRCDIR}/local] 497 498X11SRCDIR.lib<package> 499X11SRCDIR.<package> 500 The path to the xorg src tree for the specificed package>. 501 [${X11SRCDIR}/external/mit/xorg/<package>/dist] 502 503X11ROOTDIR Root directory of the X11 installation. [/usr/X11R6 or 504 [/usr/X11R7] 505 506X11BINDIR X11 bin directory. [${X11ROOTDIR}/bin] 507 508X11FONTDIR X11 font directory. [${X11ROOTDIR}/lib/X11/fonts] 509 510X11INCDIR X11 include directory. [${X11ROOTDIR}/include] 511 512X11LIBDIR X11 lib/x11 (config) directory. [${X11ROOTDIR}/lib/X11] 513 514X11MANDIR X11 manual directory. [${X11ROOTDIR}/man] 515 516X11USRLIBDIR X11 library directory. [${X11ROOTDIR}/lib] 517 518STRIPFLAG The flag passed to the install program to cause the binary 519 to be stripped. This is to be used when building your 520 own install script so that the entire system can be made 521 stripped/not-stripped using a single knob. [] 522 523COPY The flag passed to the install program to cause the binary 524 to be copied rather than moved. This is to be used when 525 building our own install script so that the entire system 526 can either be installed with copies, or with moves using 527 a single knob. [-c] 528 529MAKEDIRTARGET dir target [params] 530 Runs "cd $${dir} && ${MAKE} [params] $${target}", 531 displaying a "pretty" message whilst doing so. 532 533RELEASEMACHINEDIR 534 Subdirectory used below RELEASEDIR when building 535 a release. [${MACHINE}] 536 537RELEASEMACHINE Subdirectory or path component used for the following 538 paths: 539 distrib/${RELEASEMACHINE} 540 distrib/notes/${RELEASEMACHINE} 541 etc/etc.${RELEASEMACHINE} 542 Used when building a release. [${MACHINE}] 543 544Additionally, the following variables may be set by <bsd.own.mk> or in a 545make configuration file to modify the behavior of the system build 546process (default values are in brackets along with comments, if set by 547<bsd.own.mk>): 548 549USETOOLS Indicates whether the tools specified by ${TOOLDIR} should 550 be used as part of a build in progress. 551 Supported values: 552 553 yes Use the tools from TOOLDIR. 554 Must be set to this if cross-compiling. 555 556 no Do not use the tools from TOOLDIR, but refuse to 557 build native compilation tool components that are 558 version-specific for that tool. 559 560 never Do not use the tools from TOOLDIR, even when 561 building native tool components. This is similar to 562 the traditional NetBSD build method, but does not 563 verify that the compilation tools in use are 564 up-to-date enough in order to build the tree 565 successfully. This may cause build or runtime 566 problems when building the whole NetBSD source tree. 567 568 Default: "yes" if building all or part of a whole NetBSD 569 source tree (detected automatically); "no" otherwise 570 (to preserve traditional semantics of the <bsd.*.mk> 571 make(1) include files). 572 573OBJECT_FMT Object file format. [set to "ELF" on architectures that 574 use ELF -- currently all architectures]. 575 576TOOLCHAIN_MISSING 577 If not "no", this indicates that the platform being built 578 does not have a working in-tree toolchain. If the 579 ${MACHINE_ARCH} in question falls into this category, 580 TOOLCHAIN_MISSING is conditionally assigned the value "yes". 581 Otherwise, the variable is unconditionally assigned the 582 value "no". 583 If not "no", ${MKBFD}, ${MKGCC}, and ${MKGDB} are 584 unconditionally assigned the value "no". 585 586EXTERNAL_TOOLCHAIN 587 This variable is not directly set by <bsd.own.mk>, but 588 including <bsd.own.mk> is the canonical way to gain 589 access to this variable. The variable should be defined 590 either in the user's environment or in the user's mk.conf 591 file. If defined, this variable indicates the root of 592 an external toolchain which will be used to build the 593 tree. For example, if a platform is a ${TOOLCHAIN_MISSING} 594 platform, EXTERNAL_TOOLCHAIN can be used to re-enable the 595 cross-compile framework. 596 597 If EXTERNAL_TOOLCHAIN is defined, ${MKGCC} is unconditionally 598 assigned the value "no", since the external version of the 599 compiler may not be able to build the library components of 600 the in-tree compiler. 601 602 NOTE: This variable is not yet used in as many places as 603 it should be. Expect the exact semantics of this variable 604 to change in the short term as parts of the cross-compile 605 framework continue to be cleaned up. 606 607<bsd.own.mk> is generally useful when building your own Makefiles so that 608they use the same default owners etc. as the rest of the tree. 609 610 611=-=-=-=-= bsd.dep.mk =-=-=-=-= 612 613The include file <bsd.dep.mk> contains the default targets for building 614.depend files. It creates .d files from entries in SRCS and DPSRCS 615that are C, C++, or Objective C source files, and builds .depend from the 616.d files. All other files in SRCS and all of DPSRCS will be used as 617dependencies for the .d files. In order for this to function correctly, 618it should be .included after all other .mk files and directives that may 619modify SRCS or DPSRCS. It uses the following variables: 620 621SRCS List of source files to build the program. 622 623DPSRCS List of source files which are needed for generating 624 dependencies, but are not needed in ${SRCS}. 625 626 627=-=-=-=-= bsd.files.mk =-=-=-=-= 628 629The include file <bsd.files.mk> handles the FILES variables and is included 630from <bsd.lib.mk> and <bsd.prog.mk>, and uses the following variables: 631 632FILES The list of files to install. 633 634CONFIGFILES Similar semantics to FILES, except that the files 635 are installed by the `configinstall' target, 636 not the `install' target. 637 The FILES* variables documented below also apply. 638 639FILESOWN File owner. [${BINOWN}] 640 641FILESGRP File group. [${BINGRP}] 642 643FILESMODE File mode. [${NONBINMODE}] 644 645FILESDIR The location to install the files. 646 647FILESNAME Optional name to install each file as. 648 649FILESOWN_<fn> File owner of the specific file <fn>. 650 651FILESGRP_<fn> File group of the specific file <fn>. 652 653FILESMODE_<fn> File mode of the specific file <fn>. 654 655FILESDIR_<fn> The location to install the specific file <fn>. 656 657FILESNAME_<fn> Optional name to install <fn> as. 658 659 660BUILDSYMLINKS List of two word items: 661 lnsrc lntgt 662 For each lnsrc item, create a symlink named lntgt. 663 The lntgt symlinks are removed by the cleandir target. 664 665UUDECODE_FILES List of files which are stored as <file>.uue in the source 666 tree. Each one will be decoded with ${TOOL_UUDECODE}. 667 The source files have a `.uue' suffix, the generated files do 668 not. 669 670UUDECODE_FILES_RENAME_<fn> 671 Rename the output from the decode to the provided name. 672 673 *NOTE: These files are simply decoded, with no install or other 674 rule applying implicitly except being added to the clean 675 target. 676 677=-=-=-=-= bsd.gcc.mk =-=-=-=-= 678 679The include file <bsd.gcc.mk> computes various parameters related to GCC 680support libraries. It defines no targets. <bsd.own.mk> MUST be included 681before <bsd.gcc.mk>. 682 683The primary users of <bsd.gcc.mk> are <bsd.prog.mk> and <bsd.lib.mk>, each 684of which need to know where to find certain GCC support libraries. 685 686The behavior of <bsd.gcc.mk> is influenced by the EXTERNAL_TOOLCHAIN variable, 687which is generally set by the user. If EXTERNAL_TOOLCHAIN it set, then 688the compiler is asked where to find the support libraries, otherwise the 689support libraries are found in ${DESTDIR}/usr/lib. 690 691<bsd.gcc.mk> sets the following variables: 692 693_GCC_CRTBEGIN The full path name to crtbegin.o. 694 695_GCC_CRTBEGINS The full path name to crtbeginS.o. 696 697_GCC_CRTEND The full path name to crtend.o. 698 699_GCC_CRTENDS The full path name to crtendS.o. 700 701_GCC_LIBGCCDIR The directory where libgcc.a is located. 702 703 704=-=-=-=-= bsd.inc.mk =-=-=-=-= 705 706The include file <bsd.inc.mk> defines the includes target and uses the 707variables: 708 709INCS The list of include files. 710 711INCSDIR The location to install the include files. 712 713INCSNAME Target name of the include file, if only one; same as 714 FILESNAME, but for include files. 715 716INCSYMLINKS Similar to SYMLINKS in <bsd.links.mk>, except that these 717 are installed in the 'includes' target and not the 718 (much later) 'install' target. 719 720INCSNAME_<file> The name file <file> should be installed as, if not <file>, 721 same as FILESNAME_<file>, but for include files. 722 723 724=-=-=-=-= bsd.info.mk =-=-=-=-= 725 726The include file <bsd.info.mk> is used to generate and install GNU Info 727documentation from respective Texinfo source files. It defines three 728implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the 729following variables: 730 731TEXINFO List of Texinfo source files. Info documentation will 732 consist of single files with the extension replaced by 733 .info. 734 735INFOFLAGS Flags to pass to makeinfo. [] 736 737 738=-=-=-=-= bsd.kernobj.mk =-=-=-=-= 739 740The include file <bsd.kernobj.mk> defines variables related to the 741location of kernel sources and object directories. 742 743KERNSRCDIR Is the location of the top of the kernel src. 744 [${_SRC_TOP_}/sys] 745 746KERNARCHDIR Is the location of the machine dependent kernel sources. 747 [arch/${MACHINE}] 748 749KERNCONFDIR Is where the configuration files for kernels are found. 750 [${KERNSRCDIR}/${KERNARCHDIR}/conf] 751 752KERNOBJDIR Is the kernel build directory. The kernel GENERIC for 753 instance will be compiled in ${KERNOBJDIR}/GENERIC. 754 The default value is 755 ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile 756 if it exists or the target 'obj' is being made. 757 Otherwise the default is 758 ${KERNSRCDIR}/${KERNARCHDIR}/compile. 759 760It is important that Makefiles (such as those under src/distrib) that 761wish to find compiled kernels use <bsd.kernobj.mk> and ${KERNOBJDIR} 762rather than make assumptions about the location of the compiled kernel. 763 764 765=-=-=-=-= bsd.kinc.mk =-=-=-=-= 766 767The include file <bsd.kinc.mk> defines the many targets (includes, 768subdirectories, etc.), and is used by kernel makefiles to handle 769include file installation. It is intended to be included alone, by 770kernel Makefiles. It uses similar variables to <bsd.inc.mk>. 771Please see <bsd.kinc.mk> for more details, and keep the documentation 772in that file up to date. 773 774 775=-=-=-=-= bsd.lib.mk =-=-=-=-= 776 777The include file <bsd.lib.mk> has support for building libraries. It has 778the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend, 779includes, install, lint, and tags. Additionally, it has a checkver target 780which checks for installed shared object libraries whose version is greater 781that the version of the source. It has a limited number of suffixes, 782consistent with the current needs of the BSD tree. <bsd.lib.mk> includes 783<bsd.shlib.mk> to get shared library parameters. 784 785It sets/uses the following variables: 786 787LIB The name of the library to build. 788 789LIBDIR Target directory for libraries. 790 791SHLIBINSTALLDIR Target directory for shared libraries if ${USE_SHLIBDIR} 792 is not "no". 793 794USE_SHLIBDIR If not "no", use ${SHLIBINSTALLDIR} instead of ${LIBDIR} 795 as the path to install shared libraries to. 796 USE_SHLIBDIR must be defined before <bsd.own.mk> is included. 797 Default: no 798 799LIBISMODULE If not "no", install as ${LIB}.so (without the "lib" prefix), 800 and act as "MKDEBUGLIB=no MKLINT=no MKPICINSTALL=no 801 MKPROFILE=no MKSTATICLIB=no". 802 Default: no 803 804LIBISPRIVATE If not "no", act as "MKDEBUGLIB=no MKLINT=no MKPIC=no 805 MKPROFILE=no", and don't install the (.a) library. 806 This is useful for "build only" helper libraries. 807 Default: no 808 809LINTLIBDIR Target directory for lint libraries. 810 811LIBGRP Library group. 812 813LIBOWN Library owner. 814 815LIBMODE Library mode. 816 817LDADD Additional loader objects. 818 819MAN The manual pages to be installed (use a .1 - .9 suffix). 820 821NOCHECKVER_<library> 822NOCHECKVER If set, disables checking for installed shared object 823 libraries with versions greater than the source. A 824 particular library name, without the "lib" prefix, may 825 be appended to the variable name to disable the check for 826 only that library. 827 828SRCS List of source files to build the library. Suffix types 829 .s, .c, and .f are supported. Note, .s files are preferred 830 to .c files of the same name. (This is not the default for 831 versions of make.) 832 833LIBDPLIBS A list of the tuples: 834 libname path-to-srcdir-of-libname 835 836 For each tuple; 837 * LIBDO.libname contains the .OBJDIR of the library 838 `libname', and if it is not set it is determined 839 from the srcdir and added to MAKEOVERRIDES (the 840 latter is to allow for build time optimization). 841 * LDADD gets -L${LIBDO.libname} -llibname added. 842 * DPADD gets ${LIBDO.libname}/liblibname.so or 843 ${LIBDO.libname}/liblibname.a added. 844 845 This variable may be used for individual libraries, as 846 well as in parent directories to cache common libraries 847 as a build-time optimization. 848 849The include file <bsd.lib.mk> includes the file named "../Makefile.inc" 850if it exists, as well as the include file <bsd.man.mk>. 851 852It has rules for building profiled objects; profiled libraries are 853built by default. 854 855Libraries are ranlib'd when made. 856 857 858=-=-=-=-= bsd.links.mk =-=-=-=-= 859 860The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables 861and is included from from <bsd.lib.mk> and <bsd.prog.mk>. 862 863LINKS The list of hard links, consisting of pairs of paths: 864 source-file target-file 865 ${DESTDIR} is prepended to both paths before linking. 866 For example, to link /bin/test and /bin/[, use: 867 LINKS=/bin/test /bin/[ 868 869CONFIGLINKS Similar semantics to LINKS, except that the links 870 are installed by the `configinstall' target, 871 not the `install' target. 872 873SYMLINKS The list of symbolic links, consisting of pairs of paths: 874 source-file target-file 875 ${DESTDIR} is only prepended to target-file before linking. 876 For example, to symlink /usr/bin/tar to /bin/tar resulting 877 in ${DESTDIR}/usr/bin/tar -> /bin/tar: 878 SYMLINKS=/bin/tar /usr/bin/tar 879 880CONFIGSYMLINKS Similar semantics to SYMLINKS, except that the symbolic links 881 are installed by the `configinstall' target, 882 not the `install' target. 883 884 885=-=-=-=-= bsd.man.mk =-=-=-=-= 886 887The include file <bsd.man.mk> handles installing manual pages and their 888links. 889 890It has a two targets: 891 892 maninstall: 893 Install the manual page sources and their links. 894 catinstall: 895 Install the preformatted manual pages and their links. 896 897It sets/uses the following variables: 898 899MANDIR Base path for manual installation. 900 901MANGRP Manual group. 902 903MANOWN Manual owner. 904 905MANMODE Manual mode. 906 907MANSUBDIR Subdirectory under the manual page section, i.e. "/vax" 908 or "/tahoe" for machine specific manual pages. 909 910MAN The manual pages to be installed (use a .1 - .9 suffix). 911 912MLINKS List of manual page links (using a .1 - .9 suffix). The 913 linked-to file must come first, the linked file second, 914 and there may be multiple pairs. The files are soft-linked. 915 916The include file <bsd.man.mk> includes a file named "../Makefile.inc" if 917it exists. 918 919 920=-=-=-=-= bsd.obj.mk =-=-=-=-= 921 922The include file <bsd.obj.mk> defines targets related to the creation 923and use of separated object and source directories. 924 925If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses 926${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if 927it exists. Otherwise make(1) looks for the existence of a 928subdirectory (or a symlink to a directory) of the source directory 929into which built targets should be placed. If an environment variable 930named MAKEOBJDIR is set, make(1) uses its value as the name of the 931object directory; failing that, make first looks for a subdirectory 932named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj". 933 934Object directories are not created automatically by make(1) if they 935don't exist; you need to run a separate "make obj". (This will happen 936during a top-level build if "MKOBJDIRS" is set to a value other than 937"no"). When the source directory is a subdirectory of ${BSDSRCDIR} -- 938and this is determined by a simple string prefix comparison -- object 939directories are created in a separate object directory tree, and a 940symlink to the object directory in that tree is created in the source 941directory; otherwise, "make obj" assumes that you're not in the main 942source tree and that it's not safe to use a separate object tree. 943 944Several variables used by <bsd.obj.mk> control exactly what 945directories and links get created during a "make obj": 946 947MAKEOBJDIR If set, this is the component name of the object 948 directory. 949 950OBJMACHINE If this is set but MAKEOBJDIR is not set, creates 951 object directories or links named "obj.${MACHINE}"; 952 otherwise, just creates ones named "obj". 953 954USR_OBJMACHINE If set, and the current directory is a subdirectory of 955 ${BSDSRCDIR}, create object directory in the 956 corresponding subdirectory of ${BSDOBJDIR}.${MACHINE}; 957 otherwise, create it in the corresponding subdirectory 958 of ${BSDOBJDIR} 959 960BUILDID If set, the contents of this variable are appended 961 to the object directory name. If OBJMACHINE is also 962 set, ".${BUILDID}" is added after ".${MACHINE}". 963 964 965=-=-=-=-= bsd.prog.mk =-=-=-=-= 966 967The include file <bsd.prog.mk> handles building programs from one or 968more source files, along with their manual pages. It has a limited number 969of suffixes, consistent with the current needs of the BSD tree. 970<bsd.prog.mk> includes <bsd.shlib.mk> to get shared library parameters. 971 972It has eight targets: 973 974 all: 975 build the program and its manual page. This also 976 creates a GDB initialization file (.gdbinit) in 977 the objdir. The .gdbinit file sets the shared library 978 prefix to ${DESTDIR} to facilitate cross-debugging. 979 clean: 980 remove the program, any object files and the files a.out, 981 Errs, errs, mklog, and ${PROG}.core. 982 cleandir: 983 remove all of the files removed by the target clean, as 984 well as .depend, tags, and any manual pages. 985 `distclean' is a synonym for `cleandir'. 986 depend: 987 make the dependencies for the source files, and store 988 them in the file .depend. 989 includes: 990 install any header files. 991 install: 992 install the program and its manual pages; if the Makefile 993 does not itself define the target install, the targets 994 beforeinstall and afterinstall may also be used to cause 995 actions immediately before and after the install target 996 is executed. 997 lint: 998 run lint on the source files 999 tags: 1000 create a tags file for the source files. 1001 1002It sets/uses the following variables: 1003 1004BINGRP Binary group. 1005 1006BINOWN Binary owner. 1007 1008BINMODE Binary mode. 1009 1010CLEANFILES Additional files to remove for the clean and cleandir targets. 1011 1012COPTS Additional flags to the compiler when creating C objects. 1013 1014COPTS.<fn> Additional flags to the compiler when creating the 1015 C objects for <fn>. 1016 For <fn>.[ly], "<fn>.c" must be used. 1017 1018CPUFLAGS Additional flags to the compiler/assembler to select 1019 CPU instruction set options, CPU tuning options, etc. 1020 1021CPUFLAGS.<fn> Additional flags to the compiler/assembler for <fn>. 1022 For <fn>.[ly], "<fn>.c" must be used. 1023 1024CPPFLAGS Additional flags to the C pre-processor. 1025 1026CPPFLAGS.<fn> Additional flags to the C pre-processor for <fn>. 1027 For <fn>.[ly], "<fn>.c" must be used. 1028 1029GDBINIT List of GDB initialization files to add to "source" 1030 directives in the .gdbinit file that is created in the 1031 objdir. 1032 1033LDADD Additional loader objects. Usually used for libraries. 1034 For example, to load with the compatibility and utility 1035 libraries, use: 1036 1037 LDADD+=-lutil -lcompat 1038 1039LDFLAGS Additional linker flags (passed to ${CC} during link). 1040 1041LINKS See <bsd.links.mk> 1042 1043OBJCOPTS Additional flags to the compiler when creating ObjC objects. 1044 1045OBJCOPTS.<fn> Additional flags to the compiler when creating the 1046 ObjC objects for <fn>. 1047 For <fn>.[ly], "<fn>.c" must be used. 1048 1049SYMLINKS See <bsd.links.mk> 1050 1051MAN Manual pages (should end in .1 - .9). If no MAN variable is 1052 defined, "MAN=${PROG}.1" is assumed. 1053 1054PAXCTL_FLAGS If defined, run paxctl(1) on the program binary after link 1055 time, with the value of this variable as args to paxctl(1). 1056 1057PAXCTL_FLAGS.${PROG} Custom override for PAXCTL_FLAGS. 1058 1059PROG The name of the program to build. If not supplied, nothing 1060 is built. 1061 1062PROG_CXX If defined, the name of the program to build. Also 1063 causes <bsd.prog.mk> to link the program with the C++ 1064 compiler rather than the C compiler. PROG_CXX overrides 1065 the value of PROG if PROG is also set. 1066 1067PROGNAME The name that the above program will be installed as, if 1068 different from ${PROG}. 1069 1070SRCS List of source files to build the program. If SRCS is not 1071 defined, it's assumed to be ${PROG}.c. 1072 1073DPSRCS List of source files which are needed for generating 1074 dependencies, but are not needed in ${SRCS}. 1075 1076DPADD Additional dependencies for the program. Usually used for 1077 libraries. For example, to depend on the compatibility and 1078 utility libraries use: 1079 1080 DPADD+=${LIBCOMPAT} ${LIBUTIL} 1081 1082 The following libraries are predefined for DPADD: 1083 1084 LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o 1085 LIBARCHIVE?= ${DESTDIR}/usr/lib/libarchive.a 1086 LIBASN1?= ${DESTDIR}/usr/lib/libasn1.a 1087 LIBBLUETOOTH?= ${DESTDIR}/usr/lib/libbluetooth.a 1088 LIBBSDMALLOC?= ${DESTDIR}/usr/lib/libbsdmalloc.a 1089 LIBBZ2?= ${DESTDIR}/usr/lib/libbz2.a 1090 LIBC?= ${DESTDIR}/usr/lib/libc.a 1091 LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a 1092 LIBCOM_ERR?= ${DESTDIR}/usr/lib/libcom_err.a 1093 LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a 1094 LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a 1095 LIBCRYPTO?= ${DESTDIR}/usr/lib/libcrypto.a 1096 LIBCRYPTO_IDEA?=${DESTDIR}/usr/lib/libcrypto_idea.a 1097 LIBCRYPTO_MDC2?=${DESTDIR}/usr/lib/libcrypto_mdc2.a 1098 LIBCRYPTO_RC5?= ${DESTDIR}/usr/lib/libcrypto_rc5.a 1099 LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a 1100 LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a 1101 LIBDES?= ${DESTDIR}/usr/lib/libdes.a 1102 LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a 1103 LIBEVENT?= ${DESTDIR}/usr/lib/libevent.a 1104 LIBFORM?= ${DESTDIR}/usr/lib/libform.a 1105 LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a 1106 LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a 1107 LIBGSSAPI?= ${DESTDIR}/usr/lib/libgssapi.a 1108 LIBHDB?= ${DESTDIR}/usr/lib/libhdb.a 1109 LIBINTL?= ${DESTDIR}/usr/lib/libintl.a 1110 LIBIPSEC?= ${DESTDIR}/usr/lib/libipsec.a 1111 LIBKADM5CLNT?= ${DESTDIR}/usr/lib/libkadm5clnt.a 1112 LIBKADM5SRV?= ${DESTDIR}/usr/lib/libkadm5srv.a 1113 LIBKAFS?= ${DESTDIR}/usr/lib/libkafs.a 1114 LIBKRB5?= ${DESTDIR}/usr/lib/libkrb5.a 1115 LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a 1116 LIBL?= ${DESTDIR}/usr/lib/libl.a 1117 LIBLBER?= ${DESTDIR}/usr/lib/liblber.a 1118 LIBLDAP?= ${DESTDIR}/usr/lib/libldap.a 1119 LIBLDAP_R?= ${DESTDIR}/usr/lib/libldap_r.a 1120 LIBM?= ${DESTDIR}/usr/lib/libm.a 1121 LIBMENU?= ${DESTDIR}/usr/lib/libmenu.a 1122 LIBOBJC?= ${DESTDIR}/usr/lib/libobjc.a 1123 LIBOSSAUDIO?= ${DESTDIR}/usr/lib/libossaudio.a 1124 LIBPAM?= ${DESTDIR}/usr/lib/libpam.a 1125 LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a 1126 LIBPCI?= ${DESTDIR}/usr/lib/libpci.a 1127 LIBPMC?= ${DESTDIR}/usr/lib/libpmc.a 1128 LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a 1129 LIBPTHREAD?= ${DESTDIR}/usr/lib/libpthread.a 1130 LIBPTHREAD_DBG?=${DESTDIR}/usr/lib/libpthread_dbg.a 1131 LIBRADIUS?= ${DESTDIR}/usr/lib/libradius.a 1132 LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a 1133 LIBRMT?= ${DESTDIR}/usr/lib/librmt.a 1134 LIBROKEN?= ${DESTDIR}/usr/lib/libroken.a 1135 LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a 1136 LIBRT?= ${DESTDIR}/usr/lib/librt.a 1137 LIBSDP?= ${DESTDIR}/usr/lib/libsdp.a 1138 LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a 1139 LIBSL?= ${DESTDIR}/usr/lib/libsl.a 1140 LIBSS?= ${DESTDIR}/usr/lib/libss.a 1141 LIBSSH?= ${DESTDIR}/usr/lib/libssh.a 1142 LIBSSL?= ${DESTDIR}/usr/lib/libssl.a 1143 LIBSSP?= ${DESTDIR}/usr/lib/libssp.a 1144 LIBSTDCXX?= ${DESTDIR}/usr/lib/libstdc++.a 1145 LIBSUPCXX?= ${DESTDIR}/usr/lib/libsupc++.a 1146 LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a 1147 LIBUSBHID?= ${DESTDIR}/usr/lib/libusbhid.a 1148 LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a 1149 LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a 1150 LIBY?= ${DESTDIR}/usr/lib/liby.a 1151 LIBZ?= ${DESTDIR}/usr/lib/libz.a 1152 1153SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared 1154 strings, using xstr(1). Note that this will not work with 1155 parallel makes. 1156 1157STRIPFLAG The flag passed to the install program to cause the binary 1158 to be stripped. 1159 1160SUBDIR A list of subdirectories that should be built as well. 1161 Each of the targets will execute the same target in the 1162 subdirectories. 1163 1164SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}]. 1165 These are installed exactly like programs. 1166 1167SCRIPTSDIR The location to install the scripts. Each script can be 1168 installed to a separate path by setting SCRIPTSDIR_<script>. 1169 1170SCRIPTSNAME The name that the above program will be installed as, if 1171 different from ${SCRIPTS}. These can be further specialized 1172 by setting SCRIPTSNAME_<script>. 1173 1174FILES See description of <bsd.files.mk>. 1175 1176SHLINKDIR Target directory for shared linker. See description of 1177 <bsd.own.mk> for additional information about this variable. 1178 1179The include file <bsd.prog.mk> includes the file named "../Makefile.inc" 1180if it exists, as well as the include file <bsd.man.mk>. 1181 1182Some simple examples: 1183 1184To build foo from foo.c with a manual page foo.1, use: 1185 1186 PROG= foo 1187 1188 .include <bsd.prog.mk> 1189 1190To build foo from foo.c with a manual page foo.2, add the line: 1191 1192 MAN= foo.2 1193 1194If foo does not have a manual page at all, add the line: 1195 1196 MKMAN= no 1197 1198If foo has multiple source files, add the line: 1199 1200 SRCS= a.c b.c c.c d.c 1201 1202 1203=-=-=-=-= bsd.rpc.mk =-=-=-=-= 1204 1205The include file <bsd.rpc.mk> contains a makefile fragment used to 1206construct source files built by rpcgen. 1207 1208The following macros may be defined in makefiles which include 1209<bsd.rpc.mk> in order to control which files get built and how they 1210are to be built: 1211 1212RPC_INCS: construct .h file from .x file 1213RPC_XDRFILES: construct _xdr.c from .x file 1214 (for marshalling/unmarshalling data types) 1215RPC_SVCFILES: construct _svc.c from .x file 1216 (server-side stubs) 1217RPC_SVCFLAGS: Additional flags passed to builds of RPC_SVCFILES. 1218 1219RPC_XDIR: Directory containing .x/.h files 1220 1221 1222=-=-=-=-= bsd.shlib.mk =-=-=-=-= 1223 1224The include file <bsd.shlib.mk> computes parameters for shared library 1225installation and use. It defines no targets. <bsd.own.mk> MUST be 1226included before <bsd.shlib.mk>. 1227 1228<bsd.own.mk> sets the following variables, if they are not already defined 1229(defaults are in brackets): 1230 1231SHLIBINSTALLDIR If ${USE_SHLIBDIR} is not "no", use ${SHLIBINSTALLDIR} 1232 instead of ${LIBDIR} as the base path for shared library 1233 installation. [/lib] 1234 1235SHLIBDIR The path to USE_SHLIBDIR shared libraries to use when building 1236 a program. [/lib for programs in /bin and /sbin, /usr/lib 1237 for all others.] 1238 1239_LIBSODIR Set to ${SHLIBINSTALLDIR} if ${USE_SHLIBDIR} is not "no", 1240 otherwise set to ${LIBDIR} 1241 1242SHLINKINSTALLDIR Base path for shared linker. [/libexec] 1243 1244SHLINKDIR Path to use for shared linker when building a program. 1245 [/libexec for programs in /bin and /sbin, /usr/libexec for 1246 all others.] 1247 1248 1249=-=-=-=-= bsd.subdir.mk =-=-=-=-= 1250 1251The include file <bsd.subdir.mk> contains the default targets for building 1252subdirectories. It has the same eight targets as <bsd.prog.mk>: all, 1253clean, cleandir, depend, includes, install, lint, and tags. For all of 1254the directories listed in ${SUBDIR}, the specified directory will be 1255visited and the target made. There is also a default target which allows 1256the command "make subdir" where subdir is any directory listed in ${SUBDIR}. 1257 1258As a special case, the use of a token .WAIT as an entry in SUBDIR acts 1259as a synchronization barrier when multiple make jobs are run; subdirs 1260before the .WAIT must complete before any subdirs after .WAIT are 1261started. See make(1) for some caveats on use of .WAIT and other 1262special sources. 1263 1264 1265=-=-=-=-= bsd.sys.mk =-=-=-=-= 1266 1267The include file <bsd.sys.mk> is used by <bsd.prog.mk> and 1268<bsd.lib.mk>. It contains overrides that are used when building 1269the NetBSD source tree. 1270 1271The following variables control how various files are compiled/built. 1272(Note that these may be overridden in <bsd.own.mk> if USETOOLS == "yes"): 1273 1274AR Create, modify, and extract from archives. [ar] 1275 1276ARFLAGS Options to ${AR}. [rl] 1277 1278AS Assembler. [as] 1279 1280AFLAGS Options to ${CC} when compiling or linking .s or .S 1281 assembly source files. [] 1282 1283BUILDSEED GCC uses random numbers when compiling C++ code. 1284 If this option is present, seed the random number 1285 generator based on the value, source file names and 1286 the output file name to make builds more deterministic. 1287 Additional information is available in the GCC 1288 documentation of -frandom-seed. 1289 1290CC C compiler. [cc] 1291 1292CFLAGS Options to ${CC}. [Usually -O or -O2] 1293 1294CPP C Pre-Processor. [cpp] 1295 1296CPPFLAGS Options to ${CPP}. [] 1297 1298CPUFLAGS Optimization flags for ${CC}. [] 1299 1300CXX C++ compiler. [c++] 1301 1302CXXFLAGS Options to ${CXX}. [${CFLAGS}] 1303 1304ELF2ECOFF Convert ELF-format executable to ECOFF. [elf2ecoff] 1305 1306FC Fortran compiler. [f77] 1307 1308FFLAGS Options to {$FC}. [-O] 1309 1310INSTALL install(1) command. [install] 1311 1312LEX Lexical analyzer. [lex] 1313 1314LFLAGS Options to ${LEX}. [] 1315 1316LPREFIX Symbol prefix for ${LEX} (see -P option in lex(1)) [yy] 1317 1318LD Linker. [ld] 1319 1320LDFLAGS Options to ${CC} during the link process. [] 1321 1322LINT C program verifier. [lint] 1323 1324LINTFLAGS Options to ${LINT}. [-chapbxzFS] 1325 1326LORDER List dependencies for object files. [lorder] 1327 1328MAKE make(1). [make] 1329 1330MKDEP Construct Makefile dependency list. [mkdep] 1331 1332NM List symbols from object files. [nm] 1333 1334PC Pascal compiler. [pc] (Not present) 1335 1336PFLAGS Options to ${PC}. [] 1337 1338OBJC Objective C compiler. [${CC}] 1339 1340OBJCFLAGS Options to ${OBJC}. [${CFLAGS}] 1341 1342OBJCOPY Copy and translate object files. [objcopy] 1343 1344OBJDUMP Display information from object files. [objdump] 1345 1346RANLIB Generate index to archive. [ranlib] 1347 1348SHELL Shell. [sh] 1349 1350SIZE List section sizes and total size. [size] 1351 1352STRIP Discard symbols from object files. [strip] 1353 1354TSORT Topological sort of a directed graph. [tsort -q] 1355 1356YACC LALR(1) parser generator. [yacc] 1357 1358YFLAGS Options to ${YACC}. [] 1359 1360YHEADER If defined, add "-d" to YFLAGS, and add dependencies 1361 from <file>.y to <file>.h and <file>.c, and add 1362 <foo>.h to CLEANFILES. 1363 1364YPREFIX If defined, add "-p ${YPREFIX}" to YFLAGS. 1365 1366 1367The following variables are defined to commands to perform the 1368appropriate operation, with the default in [brackets]. 1369(Note that these are overridden in <bsd.own.mk> if USETOOLS == "yes"): 1370 1371TOOL_ASN1_COMPILE ASN1 compiler. [asn1_compile] 1372 1373TOOL_CAP_MKDB Create capability database. [cap_mkdb] 1374 1375TOOL_CAT Concatenate and print files. [cat] 1376 1377TOOL_CKSUM Display file checksums. [cksum] 1378 1379TOOL_COMPILE_ET Error table compiler. [compile_et] 1380 1381TOOL_CONFIG Build kernel compilation directories. [config] 1382 1383TOOL_CRUNCHGEN Generate crunched binary build environment. [crunchgen] 1384 1385TOOL_CTAGS Create a tags file. [ctags] 1386 1387TOOL_DB Manipulate db(3) databases. [db] 1388 1389TOOL_EQN Format equations for groff. [eqn] 1390 1391TOOL_FGEN IEEE 1275 Open Firmware FCode Tokenizer. [fgen] 1392 1393TOOL_GENASSYM Generate constants for assembly files. [genassym] 1394 1395TOOL_GENCAT Generate NLS message catalogs. [gencat] 1396 1397TOOL_GROFF Front end for groff document formatting system. [groff] 1398 1399TOOL_HEXDUMP Ascii, decimal, hexadecimal, octal dump. [hexdump] 1400 1401TOOL_INDXBIB Make bibliographic database's inverted index. [indxbib] 1402 1403TOOL_INSTALLBOOT Install disk bootstrap software. [installboot] 1404 1405TOOL_INSTALL_INFO Update info/dir entries. [install-info] 1406 1407TOOL_JOIN Relational database operator. [join] 1408 1409TOOL_M4 M4 macro language processor. [m4] 1410 1411TOOL_MAKEFS Create file system image from directory tree. [makefs] 1412 1413TOOL_MAKEINFO Translate Texinfo documents. [makeinfo] 1414 1415TOOL_MAKEWHATIS Create a whatis.db database. [makewhatis] 1416 1417TOOL_MDSETIMAGE Set kernel RAM disk image. [mdsetimage] 1418 1419TOOL_MENUC Menu compiler. [menuc] 1420 1421TOOL_MKCSMAPPER Make charset mapping table. [mkcsmapper] 1422 1423TOOL_MKESDB Make encoding scheme database. [mkesdb] 1424 1425TOOL_MKLOCALE Make LC_CTYPE locale files. [mklocale] 1426 1427TOOL_MKMAGIC Create database for file(1). [file] 1428 1429TOOL_MKTEMP Make (unique) temporary file name. [mktemp] 1430 1431TOOL_MSGC Simple message list compiler. [msgc] 1432 1433TOOL_MTREE Map a directory hierarchy. [mtree] 1434 1435TOOL_PAX Manipulate file archives and copy directories. [pax] 1436 1437TOOL_PIC Compile pictures for groff. [pic] 1438 1439TOOL_POWERPCMKBOOTIMAGE powerpc-mkbootimage (XXXBUILDSH). [powerpc-mkbootimage] 1440 1441TOOL_PWD_MKDB Generate the password databases. [pwd_mkdb] 1442 1443TOOL_REFER Preprocess bibliographic references for groff. [refer] 1444 1445TOOL_ROFF_ASCII Generate ASCII groff output. [nroff] 1446 1447TOOL_ROFF_DVI Generate DVI groff output. [${TOOL_GROFF} -Tdvi] 1448 1449TOOL_ROFF_HTML Generate HTML groff output. 1450 [${TOOL_GROFF} -Tlatin1 -mdoc2html] 1451 1452TOOL_ROFF_PS Generate PS groff output. [${TOOL_GROFF} -Tps] 1453 1454TOOL_ROFF_RAW Generate "raw" groff output. [${TOOL_GROFF} -Z] 1455 1456TOOL_RPCGEN Remote Procedure Call (RPC) protocol compiler. [rpcgen] 1457 1458TOOL_SOELIM Eliminate .so's from groff input. [soelim] 1459 1460TOOL_STAT Display file status. [stat] 1461 1462TOOL_SUNLABEL Read or modify a SunOS disk label. [sunlabel] 1463 1464TOOL_TBL Format tables for groff. [tbl] 1465 1466TOOL_UUDECODE Uudecode a binary file. [uudecode] 1467 1468TOOL_VGRIND Grind nice listings of programs. [vgrind -f] 1469 1470TOOL_ZIC Time zone compiler. [zic] 1471 1472 1473Other variables of note (incomplete list): 1474 1475NOGCCERROR If defined, prevents passing certain ${CFLAGS} to GCC 1476 that cause warnings to be fatal, such as: 1477 -Werror -Wa,--fatal-warnings 1478 (The latter being for as(1).) 1479 1480WARNS Crank up GCC warning options; the distinct levels are: 1481 WARNS=1 1482 WARNS=2 1483 WARNS=3 1484 WARNS=4 1485 1486=-=-=-=-= bsd.x11.mk =-=-=-=-= 1487 1488The include file <bsd.x11.mk> contains parameters and targets for 1489cross-building X11 from ${X11SRCDIR.xc} / ${X11MITSRCDIR.*}. 1490It should be included after the general Makefile contents but before 1491the include files such as <bsd.prog.mk> and <bsd.lib.mk>. 1492 1493It provides the following targets: 1494 .man.1 .man.3 .man.4 .man.5 .man.7: 1495 If ${MAN} or ${PROG} is set and ${MKMAN} != "no", 1496 these rules convert from X11's manual page source 1497 into an mdoc.old source file. 1498 cleanx11man: 1499 Clean up the mdoc.old files generated by the above. 1500 1501It sets the following variables: 1502 1503BINDIR Set to ${X11BINDIR}. 1504 To override, define after including <bsd.x11.mk> 1505 1506LIBDIR Set to ${X11USRLIBDIR}. 1507 To override, define after including <bsd.x11.mk> 1508 1509MANDIR Set to ${X11MANDIR}. 1510 To override, define after including <bsd.x11.mk> 1511 1512CPPFLAGS Appended with definitions to include from 1513 ${DESTDIR}${X11INCDIR} 1514 1515LDFLAGS Appended with definitions to link from 1516 ${DESTDIR}${X11USRLIBDIR} 1517 1518X11FLAGS.CONNECTION Equivalent to X11's CONNECTION_FLAGS. 1519 1520X11FLAGS.EXTENSION Equivalent to X11's EXT_DEFINES. 1521 1522X11FLAGS.LOADABLE Equivalent to X11's LOADABLE. 1523 1524X11FLAGS.OS_DEFINES Equivalent to X11's OS_DEFINES. 1525 1526X11FLAGS.SERVER Equivalent to X11's ServerDefines. 1527 1528X11FLAGS.THREADLIB Equivalent to X11's THREADS_DEFINES for libraries. 1529 1530X11FLAGS.THREADS Equivalent to X11's THREADS_DEFINES. 1531 1532X11FLAGS.VERSION cpp(1) definitions of OSMAJORVERSION and OSMINORVERSION. 1533 1534X11FLAGS.DIX Equivalent to X11's DIX_DEFINES. 1535 1536X11TOOL_UNXCOMM Commandline to convert `XCOMM' comments to `#' 1537 1538It uses the following variables: 1539 1540APPDEFS List of app-default files to install. 1541 1542CPPSCRIPTS List of files/scripts to run through cpp(1) 1543 and then ${X11TOOL_UNXCOMM}. The source files 1544 have a `.cpp' suffix, the generated files do not. 1545 1546CPPSCRIPTFLAGS Additional flags to cpp(1) when building CPPSCRIPTS. 1547 1548CPPSCRIPTFLAGS_<fn> Additional flags to cpp(1) when building CPPSCRIPT <fn>. 1549 1550 1551=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 1552