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