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