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