bsd.README revision 1.85
1# $NetBSD: bsd.README,v 1.85 2001/12/28 01:32:40 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 61The following variables that control how things are made/installed that 62are not set by default. These should not be set by Makefiles; they're for 63the user to define in MAKECONF (see bsd.own.mk, below) or on the make(1) 64command line: 65 66BUILD If defined, 'make install' checks that the targets in the 67 source directories are up-to-date and remakes them if they 68 are out of date, instead of blindly trying to install 69 out of date or non-existent targets. 70 71UPDATE If defined, 'make install' only installs targets that are 72 more recently modified in the source directories that their 73 installed counterparts. 74 75UNPRIVED If defined, don't set the owner/group/mode when installing 76 files or directories, and keep a metadata log of what 77 the owner/group/mode should be. This allows a 78 non-root "make install". 79 80MKCATPAGES If "no", don't build or install the catman pages. 81 82MKDOC If "no", don't build or install the documentation. 83 84MKINFO If "no", don't build or install Info documentation from 85 Texinfo source files. 86 87MKLINT If "no", don't build or install the lint libraries. 88 89MKMAN If "no", don't build or install the man or catman pages. 90 Also acts as "MKCATPAGES=no" 91 92MKNLS If "no", don't build or install the NLS files and locale 93 definition files. 94 95MKOBJ If "no", don't enable the rule which creates objdirs. 96 "yes" by default. 97 98MKOBJDIRS If "no", don't create objdirs during a "make build". 99 "no" by default. 100 101MKPIC If "no", don't build or install shared libraries. 102 103MKPICINSTALL If "no", don't install the *_pic.a libraries. 104 105MKPROFILE If "no", don't build or install the profiling libraries. 106 107MKSHARE If "no", act as "MKCATPAGES=no MKDOC=no MKINFO=no MKMAN=no 108 MKNLS=no". I.e, don't build catman pages, documentation, 109 Info documentation, man pages, NLS files, ... 110 111=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 112 113The include file <sys.mk> has the default rules for all makes, in the BSD 114environment or otherwise. You probably don't want to touch this file. 115If you intend to run a cross build, you will need to supply the following 116host tools, and configure the following variables properly: 117 118OBJCOPY objcopy - copy and translate object files 119 120STRIP strip - Discard symbols from object files 121 122CONFIG config - build kernel compilation directories 123 124RPCGEN rpcgen - Remote Procedure Call (RPC) protocol compiler 125 126MKLOCALE mklocale - make LC_CTYPE locale files 127 128MTREE mtree - build directory tree from a spec file 129 130=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 131 132The include file <bsd.man.mk> handles installing manual pages and their 133links. 134 135It has a two targets: 136 137 maninstall: 138 Install the manual page sources and their links. 139 catinstall: 140 Install the preformatted manual pages and their links. 141 142It sets/uses the following variables: 143 144MANDIR Base path for manual installation. 145 146MANGRP Manual group. 147 148MANOWN Manual owner. 149 150MANMODE Manual mode. 151 152MANSUBDIR Subdirectory under the manual page section, i.e. "/vax" 153 or "/tahoe" for machine specific manual pages. 154 155MAN The manual pages to be installed (use a .1 - .9 suffix). 156 157MLINKS List of manual page links (using a .1 - .9 suffix). The 158 linked-to file must come first, the linked file second, 159 and there may be multiple pairs. The files are soft-linked. 160 161The include file <bsd.man.mk> includes a file named "../Makefile.inc" if 162it exists. 163 164=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 165 166The include file <bsd.own.mk> contains source tree configuration parameters, 167such as the owners, groups, etc. for both manual pages and binaries, and 168a few global "feature configuration" parameters. 169 170It has no targets. 171 172To get system-specific configuration parameters, bsd.own.mk will try to 173include the file specified by the "MAKECONF" variable. If MAKECONF is not 174set, or no such file exists, the system make configuration file, /etc/mk.conf 175is included. These files may define any of the variables described below. 176 177bsd.own.mk sets the following variables, if they are not already defined 178(defaults are in brackets): 179 180BSDSRCDIR The real path to the system sources, so that 'make obj' 181 will work correctly. [/usr/src] 182 183BSDOBJDIR The real path to the system 'obj' tree, so that 'make obj' 184 will work correctly. [/usr/obj] 185 186BINGRP Binary group. [wheel] 187 188BINOWN Binary owner. [root] 189 190BINMODE Binary mode. [555] 191 192NONBINMODE Mode for non-executable files. [444] 193 194MANDIR Base path for manual installation. [/usr/share/man/cat] 195 196MANGRP Manual group. [wheel] 197 198MANOWN Manual owner. [root] 199 200MANMODE Manual mode. [${NONBINMODE}] 201 202MANINSTALL Manual installation type: maninstall, catinstall, or both 203 204LDSTATIC Control program linking; if set blank, link everything 205 dynamically. If set to "-static", link everything statically. 206 If not set, programs link according to their makefile. 207 208LIBDIR Base path for library installation. [/usr/lib] 209 210SHLIBDIR If ${USE_SHLIBDIR} is "yes", use ${SHLIBDIR} instead of 211 ${LIBDIR} as the base path for shared library installation. 212 [/usr/lib] 213 214_LIBSODIR Set to ${SHLIBDIR} if ${USE_SHLIBDIR} is "yes", 215 otherwise set to ${LIBDIR} 216 217SHLINKDIR Base path for shared linker. [/usr/libexec] 218 219LINTLIBDIR Base path for lint(1) library installation. [/usr/libdata/lint] 220 221LIBGRP Library group. [${BINGRP}] 222 223LIBOWN Library owner. [${BINOWN}] 224 225LIBMODE Library mode. [${NONBINMODE}] 226 227DOCDIR Base path for system documentation (e.g. PSD, USD, etc.) 228 installation. [/usr/share/doc] 229 230HTMLDOCDIR Base path for html system documentation installation. 231 [/usr/share/doc/html] 232 233DOCGRP Documentation group. [wheel] 234 235DOCOWN Documentation owner. [root] 236 237DOCMODE Documentation mode. [${NONBINMODE}] 238 239NLSDIR Base path for Native Language Support files installation. 240 [/usr/share/nls] 241 242NLSGRP Native Language Support files group. [wheel] 243 244NLSOWN Native Language Support files owner. [root] 245 246NLSMODE Native Language Support files mode. [${NONBINMODE}] 247 248STRIPFLAG The flag passed to the install program to cause the binary 249 to be stripped. This is to be used when building your 250 own install script so that the entire system can be made 251 stripped/not-stripped using a single knob. [-s] 252 253COPY The flag passed to the install program to cause the binary 254 to be copied rather than moved. This is to be used when 255 building our own install script so that the entire system 256 can either be installed with copies, or with moves using 257 a single knob. [-c] 258 259Additionally, the following variables may be set by bsd.own.mk or in a 260make configuration file to modify the behaviour of the system build 261process (default values are in brackets along with comments, if set by 262bsd.own.mk): 263 264MKCRYPTO If set to "no", no cryptography support will be built 265 into the system. Defaults to "yes". 266 267NOCRYPTO If set, it is equivalent to setting MKCRYPTO to "no". 268 269MKCRYPTO_IDEA If set to "yes", IDEA support will be built into 270 libcrypto_idea.a. Defaults to "no". 271 272MKCRYPTO_RC5 If set to "yes", RC5 support will be built into 273 libcrypto_rc5.a. Defaults to "no". 274 275MKKERBEROS If set to "no", disables building Kerberos (v4 or v5) 276 support into various system utilities that support it. 277 Defaults to "yes". NOTE: This does not affect the 278 building of the Kerberos libraries or infrastructure 279 programs themselves. To completely disable Kerberos, 280 set MKCRYPTO to "no". 281 282NOKERBEROS If set, it is equivalent to setting MKKERBEROS to "no". 283 284SKEY Compile in support for S/key authentication. [yes, set 285 unconditionally] 286 287MANZ Compress manual pages at installation time. 288 289SYS_INCLUDE Copy or symlink kernel include files into /usr/include. 290 Possible values are "symlinks" or "copies" (which is 291 the same as the variable being unset). 292 293NOPROFILE Do not build profiled versions of system libraries 294 295NOPIC Do not build PIC versions of system libraries, and 296 do not build shared libraries. [set if ${MACHINE_ARCH} 297 is "sh3" and ${OBJECT_FMT} is "COFF", unset otherwise.] 298 299NOLINT Do not build lint libraries. 300 301OBJECT_FMT Object file format. [set to "ELF" on architectures that 302 use ELF -- currently if ${MACHINE_ARCH} is "alpha", 303 "mipsel", "mipseb", "powerpc", "sparc", "sparc64", 304 "i386" and some m68k machines, or set to "a.out" on 305 other architectures]. 306 307MKSOFTFLOAT If "yes", build with options to enable the compiler to 308 generate output containing library calls for floating 309 point and possibly soft-float library support. Defaults 310 to "no". 311 312bsd.own.mk is generally useful when building your own Makefiles so that 313they use the same default owners etc. as the rest of the tree. 314 315=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 316 317The include file <bsd.prog.mk> handles building programs from one or 318more source files, along with their manual pages. It has a limited number 319of suffixes, consistent with the current needs of the BSD tree. 320 321It has eight targets: 322 323 all: 324 build the program and its manual page 325 clean: 326 remove the program, any object files and the files a.out, 327 Errs, errs, mklog, and ${PROG}.core. 328 cleandir: 329 remove all of the files removed by the target clean, as 330 well as .depend, tags, and any manual pages. 331 `distclean' is a synonym for `cleandir'. 332 depend: 333 make the dependencies for the source files, and store 334 them in the file .depend. 335 includes: 336 install any header files. 337 install: 338 install the program and its manual pages; if the Makefile 339 does not itself define the target install, the targets 340 beforeinstall and afterinstall may also be used to cause 341 actions immediately before and after the install target 342 is executed. 343 lint: 344 run lint on the source files 345 tags: 346 create a tags file for the source files. 347 348It sets/uses the following variables: 349 350BINGRP Binary group. 351 352BINOWN Binary owner. 353 354BINMODE Binary mode. 355 356CLEANFILES Additional files to remove for the clean and cleandir targets. 357 358COPTS Additional flags to the compiler when creating C objects. 359 360CPPFLAGS Additional flags to the C pre-processor 361 362LDADD Additional loader objects. Usually used for libraries. 363 For example, to load with the compatibility and utility 364 libraries, use: 365 366 LDADD+=-lutil -lcompat 367 368LDFLAGS Additional loader flags. 369 370LINKS The list of binary links; should be full pathnames, the 371 linked-to file coming first, followed by the linked 372 file. The files are hard-linked. For example, to link 373 /bin/test and /bin/[, use: 374 375 LINKS= ${DESTDIR}/bin/test ${DESTDIR}/bin/[ 376 377SYMLINKS The list of symbolic links; should be full pathnames. 378 Syntax is identical to LINKS. Note that DESTDIR is not 379 automatically included in the link. 380 381MAN Manual pages (should end in .1 - .9). If no MAN variable is 382 defined, "MAN=${PROG}.1" is assumed. 383 384PROG The name of the program to build. If not supplied, nothing 385 is built. 386 387PROGNAME The name that the above program will be installed as, if 388 different from ${PROG}. 389 390SRCS List of source files to build the program. If SRCS is not 391 defined, it's assumed to be ${PROG}.c. 392 393DPADD Additional dependencies for the program. Usually used for 394 libraries. For example, to depend on the compatibility and 395 utility libraries use: 396 397 DPADD+=${LIBCOMPAT} ${LIBUTIL} 398 399 The following libraries are predefined for DPADD: 400 401 LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o 402 LIBC?= ${DESTDIR}/usr/lib/libc.a 403 LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a 404 LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a 405 LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a 406 LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a 407 LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a 408 LIBDES?= ${DESTDIR}/usr/lib/libdes.a 409 LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a 410 LIBFORM?= ${DESTDIR}/usr/lib/libform.a 411 LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a 412 LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a 413 LIBINTL?= ${DESTDIR}/usr/lib/libintl.a 414 LIBIPSEC?= ${DESTDIR}/usr/lib/libipsec.a 415 LIBKDB?= ${DESTDIR}/usr/lib/libkdb.a 416 LIBKRB?= ${DESTDIR}/usr/lib/libkrb.a 417 LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a 418 LIBL?= ${DESTDIR}/usr/lib/libl.a 419 LIBM?= ${DESTDIR}/usr/lib/libm.a 420 LIBMENU?= ${DESTDIR}/usr/lib/libmenu.a 421 LIBMP?= ${DESTDIR}/usr/lib/libmp.a 422 LIBNTP?= ${DESTDIR}/usr/lib/libntp.a 423 LIBPC?= ${DESTDIR}/usr/lib/libpc.a 424 LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a 425 LIBPLOT?= ${DESTDIR}/usr/lib/libplot.a 426 LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a 427 LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a 428 LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a 429 LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a 430 LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a 431 LIBTELNET?= ${DESTDIR}/usr/lib/libtelnet.a 432 LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a 433 LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a 434 LIBY?= ${DESTDIR}/usr/lib/liby.a 435 LIBZ?= ${DESTDIR}/usr/lib/libz.a 436 437 438SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared 439 strings, using xstr(1). Note that this will not work with 440 parallel makes. 441 442STRIPFLAG The flag passed to the install program to cause the binary 443 to be stripped. 444 445SUBDIR A list of subdirectories that should be built as well. 446 Each of the targets will execute the same target in the 447 subdirectories. 448 449SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}]. 450 These are installed exactly like programs. 451 452SCRIPTSNAME The name that the above program will be installed as, if 453 different from ${SCRIPTS}. These can be further specialized 454 by setting SCRIPTSNAME_<script>. 455 456FILES A list of files to install. The installation is controlled 457 by the FILESNAME, FILESOWN, FILESGRP, FILESMODE, FILESDIR 458 variables that can be further specialized by FILES<VAR>_<file> 459 460SHLINKDIR Target directory for shared linker. 461 462The include file <bsd.prog.mk> includes the file named "../Makefile.inc" 463if it exists, as well as the include file <bsd.man.mk>. 464 465Some simple examples: 466 467To build foo from foo.c with a manual page foo.1, use: 468 469 PROG= foo 470 471 .include <bsd.prog.mk> 472 473To build foo from foo.c with a manual page foo.2, add the line: 474 475 MAN= foo.2 476 477If foo does not have a manual page at all, add the line: 478 479 MKMAN= no 480 481If foo has multiple source files, add the line: 482 483 SRCS= a.c b.c c.c d.c 484 485=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 486 487The include file <bsd.subdir.mk> contains the default targets for building 488subdirectories. It has the same eight targets as <bsd.prog.mk>: all, 489clean, cleandir, depend, includes, install, lint, and tags. For all of 490the directories listed in the variable SUBDIR, the specified directory 491will be visited and the target made. There is also a default target which 492allows the command "make subdir" where subdir is any directory listed in 493the variable SUBDIR. 494 495As a special case, the use of a token .WAIT as an entry in SUBDIR acts 496as a synchronization barrier when multiple make jobs are run; subdirs 497before the .WAIT must complete before any subdirs after .WAIT are 498started. See make(1) for some caveats on use of .WAIT and other 499special sources. 500 501=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 502 503The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables 504and is included from from bsd.lib.mk and bsd.prog.mk. 505 506=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 507 508The include file <bsd.files.mk> handles the FILES variables and is included 509from bsd.lib.mk and bsd.prog.mk. 510 511=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 512 513The include file <bsd.inc.mk> defines the includes target and uses two 514variables: 515 516INCS The list of include files 517 518INCSDIR The location to install the include files. 519 520INCSNAME Target name of the include file, if only one; same as 521 FILESNAME, but for include files. 522 523INCSNAME_<file> The name file <file> should be installed as, if not <file>, 524 same as FILESNAME_<file>, but for include files. 525 526=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 527 528The include file <bsd.kinc.mk> defines the many targets (includes, 529subdirectories, etc.), and is used by kernel makefiles to handle 530include file installation. It is intended to be included alone, by 531kernel Makefiles. Please see bsd.kinc.mk for more details, and keep 532the documentation in that file up to date. 533 534=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 535 536The include file <bsd.info.mk> is used to generate and install GNU Info 537documentation from respective Texinfo source files. It defines three 538implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the 539following variables: 540 541TEXINFO List of Texinfo source files. Info documentation will 542 consist of single files with the extension replaced by 543 .info. 544 545INFOFLAGS Flags to pass to makeinfo. [] 546 547INSTALL_INFO Name of install-info program. [install-info] 548 549MAKEINFO Name of makeinfo program. [makeinfo] 550 551=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 552 553The include file <bsd.sys.mk> is used by <bsd.prog.mk> and 554<bsd.lib.mk>. It contains overrides that are used when building 555the NetBSD source tree. For instance, if "PARALLEL" is defined by 556the program/library Makefile, it includes a set of rules for lex and 557yacc that allow multiple lex and yacc targets to be built in parallel. 558 559Other variables of note (incomplete list): 560 561WARNS Crank up gcc warning options; the distinct levels are: 562 WARNS=1 563 WARNS=2 564 WARNS=3 565 566FORMAT_AUDIT If FORMAT_AUDIT is set, and WFORMAT is set and > 1, turn on 567WFORMAT -Wnetbsd-format-audit for extra-stringent format checking. 568 WFORMAT belongs in individual makefiles and/or 569 Makefile.inc files. (set WFORMAT=1 in individual 570 makefiles if a program is not security critical and is 571 doing bizarre things with format strings which would 572 be even uglier if rewritten) FORMAT_AUDIT should go in 573 mk.conf if you're doing format-string auditing. 574 FORMAT_AUDIT may go away in time. 575 576=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 577 578The include file <bsd.lib.mk> has support for building libraries. It has 579the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend, 580includes, install, lint, and tags. Additionally, it has a checkver target 581which checks for installed shared object libraries whose version is greater 582that the version of the source. It has a limited number of suffixes, 583consistent with the current needs of the BSD tree. 584 585It sets/uses the following variables: 586 587LIB The name of the library to build. 588 589LIBDIR Target directory for libraries. 590 591SHLIBDIR Target directory for shared libraries if ${USE_SHLIBDIR} 592 is "yes". 593 594USE_SHLIBDIR If "yes", use ${SHLIBDIR} instead of ${LIBDIR} 595 as the path to install shared libraries to. 596 597LINTLIBDIR Target directory for lint libraries. 598 599LIBGRP Library group. 600 601LIBOWN Library owner. 602 603LIBMODE Library mode. 604 605LDADD Additional loader objects. 606 607MAN The manual pages to be installed (use a .1 - .9 suffix). 608 609MKLINKLIB If "no", act as "MKPICINSTALL=no MKPROFILE=no". 610 Also: 611 - don't install the .a libraries 612 - don't install _pic.a libraries on PIC systems 613 - don't build .a libraries on PIC systems 614 - don't install the .so symlink on ELF systems 615 I.e, only install the shared library (and the .so.major 616 symlink on ELF). 617 618MKPICLIB If "no", don't build _pic.a libraries, and build the 619 shared object libraries from the .a libraries. A 620 symlink is installed in ${DESTDIR}/usr/lib for the 621 _pic.a library pointing to the .a library. 622 623NOCHECKVER_<library> 624NOCHECKVER If set, disables checking for installed shared object 625 libraries with versions greater than the source. A 626 particular library name, without the "lib" prefix, may 627 be appended to the variable name to disable the check for 628 only that library. 629 630SRCS List of source files to build the library. Suffix types 631 .s, .c, and .f are supported. Note, .s files are preferred 632 to .c files of the same name. (This is not the default for 633 versions of make.) 634 635The include file <bsd.lib.mk> includes the file named "../Makefile.inc" 636if it exists, as well as the include file <bsd.man.mk>. 637 638It has rules for building profiled objects; profiled libraries are 639built by default. 640 641Libraries are ranlib'd when made. 642 643=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 644 645The include file <bsd.obj.mk> defines targets related to the creation 646and use of separated object and source directories. 647 648If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses 649${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if 650it exists. Otherwise make(1) looks for the existence of a 651subdirectory (or a symlink to a directory) of the source directory 652into which built targets should be placed. If an environment variable 653named MAKEOBJDIR is set, make(1) uses its value as the name of the 654object directory; failing that, make first looks for a subdirectory 655named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj". 656 657Object directories are not created automatically by make(1) if they 658don't exist; you need to run a separate "make obj". (This will happen 659during a top-level build if "MKOBJDIRS" is set to a value other than 660"no"). When the source directory is a subdirectory of ${BSDSRCDIR} -- 661and this is determined by a simple string prefix comparison -- object 662directories are created in a separate object directory tree, and a 663symlink to the object directory in that tree is created in the source 664directory; otherwise, "make obj" assumes that you're not in the main 665source tree and that it's not safe to use a separate object tree. 666 667Several variables used by <bsd.obj.mk> control exactly what 668directories and links get created during a "make obj": 669 670MAKEOBJDIR If set, this is the component name of the object 671 directory. 672 673OBJMACHINE If this is set but MAKEOBJDIR is not set, creates 674 object directories or links named "obj.${MACHINE}"; 675 otherwise, just creates ones named "obj". 676 677USR_OBJMACHINE If set, and the current directory is a subdirectory of 678 ${BSDSRCDIR}, create object directory in the 679 corresponding subdirectory of ${BSDOBJDIR}.${MACHINE}; 680 otherwise, create it in the corresponding subdirectory 681 of ${BSDOBJDIR} 682 683=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 684 685The include file <bsd.kernobj.mk> defines variables related to the 686location of kernel sources and object directories. 687 688KERNSRCDIR Is the location of the top of the kernel src. 689 It defaults to ${BSDSRCDIR}/sys, but the top-level 690 Makefile.inc sets it to ${ABSTOP}/sys (ABSTOP is the 691 absolute path to the directory where the top-level 692 Makefile.inc was found. 693 694KERNARCHDIR Is the location of the machine dependent kernel 695 sources. It defaults to arch/${MACHINE} 696 697KERNCONFDIR Is where the configuration files for kernels are 698 found; default is ${KERNSRCDIR}/${KERNARCHDIR}/conf. 699 700KERNOBJDIR Is the kernel build directory. The kernel GENERIC for 701 instance will be compiled in ${KERNOBJDIR}/GENERIC. 702 The default value is 703 ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile 704 if it exists or the target 'obj' is being made. 705 Otherwise the default is 706 ${KERNSRCDIR}/${KERNARCHDIR}/compile. 707 708It is important that Makefiles (such as those under src/distrib) that 709wish to find compiled kernels use bsd.kernobj.mk and ${KERNOBJDIR} 710rather than make assumptions about the location of the compiled kernel. 711 712=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 713