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