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