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