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