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