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