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