bsd.README revision 1.69
1# $NetBSD: bsd.README,v 1.69 2000/10/04 19:27:45 sommerfeld 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 234MKCRYPTO If set to "no", no cryptography support will be built 235 into the system. Defaults to "yes". 236 237NOCRYPTO If set, it is equivalent to setting MKCRYPTO to "no". 238 239MKCRYPTO_IDEA If set to "yes", IDEA support will be built into 240 libcrypto_idea.a. Defaults to "no". 241 242MKCRYPTO_RC5 If set to "yes", RC5 support will be built into 243 libcrypto_rc5.a. Defaults to "no". 244 245MKKERBEROS If set to "no", disables building Kerberos (v4 or v5) 246 support into various system utilities that support it. 247 Defaults to "yes". NOTE: This does not affect the 248 building of the Kerberos libraries or infrastructure 249 programs themselves. To completely disable Kerberos, 250 set MKCRYPTO to "no". 251 252NOKERBEROS If set, it is equivalent to setting MKKERBEROS to "no". 253 254SKEY Compile in support for S/key authentication. [yes, set 255 unconditionally] 256 257MANZ Compress manual pages at installation time. 258 259SYS_INCLUDE Copy or symlink kernel include files into /usr/include. 260 Possible values are "symlinks" or "copies" (which is 261 the same as the variable being unset). 262 263NOPROFILE Do not build profiled versions of system libraries 264 265NOPIC Do not build PIC versions of system libraries, and 266 do not build shared libraries. [set if ${MACHINE_ARCH} 267 is "sh3" and ${OBJECT_FMT} is "COFF", unset otherwise.] 268 269NOLINT Do not build lint libraries. 270 271OBJECT_FMT Object file format. [set to "ELF" on architectures that 272 use ELF -- currently if ${MACHINE_ARCH} is "alpha", 273 "mipsel", "mipseb", "powerpc", "sparc", "sparc64", 274 and "i386", or set to "a.out" on other architectures]. 275 276 277bsd.own.mk is generally useful when building your own Makefiles so that 278they use the same default owners etc. as the rest of the tree. 279 280=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 281 282The include file <bsd.prog.mk> handles building programs from one or 283more source files, along with their manual pages. It has a limited number 284of suffixes, consistent with the current needs of the BSD tree. 285 286It has eight targets: 287 288 all: 289 build the program and its manual page 290 clean: 291 remove the program, any object files and the files a.out, 292 Errs, errs, mklog, and ${PROG}.core. 293 cleandir: 294 remove all of the files removed by the target clean, as 295 well as .depend, tags, and any manual pages. 296 `distclean' is a synonym for `cleandir'. 297 depend: 298 make the dependencies for the source files, and store 299 them in the file .depend. 300 includes: 301 install any header files. 302 install: 303 install the program and its manual pages; if the Makefile 304 does not itself define the target install, the targets 305 beforeinstall and afterinstall may also be used to cause 306 actions immediately before and after the install target 307 is executed. 308 lint: 309 run lint on the source files 310 tags: 311 create a tags file for the source files. 312 313It sets/uses the following variables: 314 315BINGRP Binary group. 316 317BINOWN Binary owner. 318 319BINMODE Binary mode. 320 321CLEANFILES Additional files to remove for the clean and cleandir targets. 322 323COPTS Additional flags to the compiler when creating C objects. 324 325CPPFLAGS Additional flags to the C pre-processor 326 327LDADD Additional loader objects. Usually used for libraries. 328 For example, to load with the compatibility and utility 329 libraries, use: 330 331 LDADD+=-lutil -lcompat 332 333LDFLAGS Additional loader flags. 334 335LINKS The list of binary links; should be full pathnames, the 336 linked-to file coming first, followed by the linked 337 file. The files are hard-linked. For example, to link 338 /bin/test and /bin/[, use: 339 340 LINKS= ${DESTDIR}/bin/test ${DESTDIR}/bin/[ 341 342SYMLINKS The list of symbolic links; should be full pathnames. 343 Syntax is identical to LINKS. Note that DESTDIR is not 344 automatically included in the link. 345 346MAN Manual pages (should end in .1 - .9). If no MAN variable is 347 defined, "MAN=${PROG}.1" is assumed. 348 349PROG The name of the program to build. If not supplied, nothing 350 is built. 351 352PROGNAME The name that the above program will be installed as, if 353 different from ${PROG}. 354 355SRCS List of source files to build the program. If SRCS is not 356 defined, it's assumed to be ${PROG}.c. 357 358DPADD Additional dependencies for the program. Usually used for 359 libraries. For example, to depend on the compatibility and 360 utility libraries use: 361 362 DPADD+=${LIBCOMPAT} ${LIBUTIL} 363 364 The following libraries are predefined for DPADD: 365 366 LIBCRT0?= ${DESTDIR}/usr/lib/crt0.o 367 LIBC?= ${DESTDIR}/usr/lib/libc.a 368 LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a 369 LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a 370 LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a 371 LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a 372 LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a 373 LIBDES?= ${DESTDIR}/usr/lib/libdes.a 374 LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a 375 LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a 376 LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a 377 LIBIPSEC?= ${DESTDIR}/usr/lib/libipsec.a 378 LIBKDB?= ${DESTDIR}/usr/lib/libkdb.a 379 LIBKRB?= ${DESTDIR}/usr/lib/libkrb.a 380 LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a 381 LIBL?= ${DESTDIR}/usr/lib/libl.a 382 LIBM?= ${DESTDIR}/usr/lib/libm.a 383 LIBMENU?= ${DESTDIR}/usr/lib/libmenu.a 384 LIBMP?= ${DESTDIR}/usr/lib/libmp.a 385 LIBNTP?= ${DESTDIR}/usr/lib/libntp.a 386 LIBPC?= ${DESTDIR}/usr/lib/libpc.a 387 LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a 388 LIBPLOT?= ${DESTDIR}/usr/lib/libplot.a 389 LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a 390 LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a 391 LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a 392 LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a 393 LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a 394 LIBTELNET?= ${DESTDIR}/usr/lib/libtelnet.a 395 LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a 396 LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a 397 LIBY?= ${DESTDIR}/usr/lib/liby.a 398 LIBZ?= ${DESTDIR}/usr/lib/libz.a 399 400 401SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared 402 strings, using xstr(1). Note that this will not work with 403 parallel makes. 404 405STRIPFLAG The flag passed to the install program to cause the binary 406 to be stripped. 407 408SUBDIR A list of subdirectories that should be built as well. 409 Each of the targets will execute the same target in the 410 subdirectories. 411 412SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}]. 413 These are installed exactly like programs. 414 415SCRIPTSNAME The name that the above program will be installed as, if 416 different from ${SCRIPTS}. These can be further specialized 417 by setting SCRIPTSNAME_<script>. 418 419FILES A list of files to install. The installation is controlled 420 by the FILESNAME, FILESOWN, FILESGRP, FILESMODE, FILESDIR 421 variables that can be further specialized by FILES<VAR>_<file> 422 423The include file <bsd.prog.mk> includes the file named "../Makefile.inc" 424if it exists, as well as the include file <bsd.man.mk>. 425 426Some simple examples: 427 428To build foo from foo.c with a manual page foo.1, use: 429 430 PROG= foo 431 432 .include <bsd.prog.mk> 433 434To build foo from foo.c with a manual page foo.2, add the line: 435 436 MAN= foo.2 437 438If foo does not have a manual page at all, add the line: 439 440 NOMAN= noman 441 442If foo has multiple source files, add the line: 443 444 SRCS= a.c b.c c.c d.c 445 446=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 447 448The include file <bsd.subdir.mk> contains the default targets for building 449subdirectories. It has the same eight targets as <bsd.prog.mk>: all, 450clean, cleandir, depend, includes, install, lint, and tags. For all of 451the directories listed in the variable SUBDIRS, the specified directory 452will be visited and the target made. There is also a default target which 453allows the command "make subdir" where subdir is any directory listed in 454the variable SUBDIRS. 455 456=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 457 458The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables 459and is included from from bsd.lib.mk and bsd.prog.mk. 460 461=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 462 463The include file <bsd.files.mk> handles the FILES variables and is included 464from bsd.lib.mk and bsd.prog.mk. 465 466=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 467 468The include file <bsd.inc.mk> defines the includes target and uses two 469variables: 470 471INCS The list of include files 472 473INCSDIR The location to install the include files. 474 475=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 476 477The include file <bsd.kinc.mk> defines the many targets (includes, 478subdirectories, etc.), and is used by kernel makefiles to handle 479include file installation. It is intended to be included alone, by 480kernel Makefiles. Please see bsd.kinc.mk for more details, and keep 481the documentation in that file up to date. 482 483=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 484 485The include file <bsd.info.mk> is used to generate and install GNU Info 486documentation from respective Texinfo source files. It defines three 487implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the 488following variables: 489 490TEXINFO List of Texinfo source files. Info documentation will 491 consist of single files with the extension replaced by 492 .info. 493 494INFOFLAGS Flags to pass to makeinfo. [] 495 496INSTALL_INFO Name of install-info program. [install-info] 497 498MAKEINFO Name of makeinfo program. [makeinfo] 499 500=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 501 502The include file <bsd.sys.mk> is used by <bsd.prog.mk> and 503<bsd.lib.mk>. It contains overrides that are used when building 504the NetBSD source tree. For instance, if "PARALLEL" is defined by 505the program/library Makefile, it includes a set of rules for lex and 506yacc that allow multiple lex and yacc targets to be built in parallel. 507 508Other variables of note (incomplete list): 509 510WARNS Crank up gcc warning options; WARNS=1 and WARNS=2 are the two 511 distinct levels. 512 513FORMAT_AUDIT If FORMAT_AUDIT is set, and WFORMAT is set and > 1, turn on 514WFORMAT -Wnetbsd-format-audit for extra-stringent format checking. 515 WFORMAT belongs in individual makefiles and/or Makefile.inc files. 516 (set WFORMAT=1 in individual makefiles if a program is 517 not security critical and is doing bizarre things with 518 format strings which would be even uglier if rewritten) 519 FORMAT_AUDIT should go in mk.conf if you're doing format-string auditing. 520 FORMAT_AUDIT may go away in time. 521 522=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 523 524The include file <bsd.lib.mk> has support for building libraries. It has 525the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend, 526includes, install, lint, and tags. Additionally, it has a checkver target 527which checks for installed shared object libraries whose version is greater 528that the version of the source. It has a limited number of suffixes, 529consistent with the current needs of the BSD tree. 530 531It sets/uses the following variables: 532 533LIB The name of the library to build. 534 535LIBDIR Target directory for libraries. 536 537LINTLIBDIR Target directory for lint libraries. 538 539LIBGRP Library group. 540 541LIBOWN Library owner. 542 543LIBMODE Library mode. 544 545LDADD Additional loader objects. 546 547MAN The manual pages to be installed (use a .1 - .9 suffix). 548 549MKLINKLIB If "no", act as "MKPICINSTALL=no MKPROFILE=no". 550 Also: 551 - don't install the .a libraries 552 - don't install _pic.a libraries on PIC systems 553 - don't build .a libraries on PIC systems 554 - don't install the .so symlink on ELF systems 555 I.e, only install the shared library (and the .so.major 556 symlink on ELF). 557 558MKPICLIB If "no", don't build _pic.a libraries, and build the 559 shared object libraries from the .a libraries. A 560 symlink is installed in ${DESTDIR}/usr/lib for the 561 _pic.a library pointing to the .a library. 562 563NOCHECKVER_<library> 564NOCHECKVER If set, disables checking for installed shared object 565 libraries with versions greater than the source. A 566 particular library name, without the "lib" prefix, may 567 be appended to the variable name to disable the check for 568 only that library. 569 570SRCS List of source files to build the library. Suffix types 571 .s, .c, and .f are supported. Note, .s files are preferred 572 to .c files of the same name. (This is not the default for 573 versions of make.) 574 575The include file <bsd.lib.mk> includes the file named "../Makefile.inc" 576if it exists, as well as the include file <bsd.man.mk>. 577 578It has rules for building profiled objects; profiled libraries are 579built by default. 580 581Libraries are ranlib'd when made. 582 583=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 584 585The include file <bsd.obj.mk> defines targets related to the creation 586and use of separated object and source directories. 587 588If an environment variable named MAKEOBJDIRPREFIX is set, make(1) uses 589${MAKEOBJDIRPREFIX}${.CURDIR} as the name of the object directory if 590it exists. Otherwise make(1) looks for the existance of a 591subdirectory (or a symlink to a directory) of the source directory 592into which built targets should be placed. If an environment variable 593named MAKEOBJDIR is set, make(1) uses its value as the name of the 594object directory; failing that, make first looks for a subdirectory 595named "obj.${MACHINE}", and if that doesn't exist, it looks for "obj". 596 597Object directories are not created automatically by make(1) if they 598don't exist; you need to run a separate "make obj". (This will happen 599during a top-level build if "MKOBJDIRS" is set to a value other than 600"no"). When the source directory is a subdirectory of ${BSDSRCDIR} -- 601and this is determined by a simple string prefix comparison -- object 602directories are created in a separate object directory tree, and a 603symlink to the object directory in that tree is created in the source 604directory; otherwise, "make obj" assumes that you're not in the main 605source tree and that it's not safe to use a separate object tree. 606 607Several variables used by <bsd.obj.mk> control exactly what 608directories and links get created during a "make obj": 609 610MAKEOBJDIR If set, this is the component name of the object 611 directory. 612 613OBJMACHINE If this is set but MAKEOBJDIR is not set, creates 614 object directories or links named "obj.${MACHINE}"; 615 otherwise, just creates ones named "obj". 616 617USR_OBJMACHINE If set, and the current directory is a subdirectory of 618 ${BSDSRCDIR}, create object directory in the 619 corresponding subdirectory of ${BSDOBJDIR}.${MACHINE}; 620 otherwise, create it in the corresponding subdirectory 621 of ${BSDOBJDIR} 622 623=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 624 625The include file <bsd.kernobj.mk> defines variables related to the 626location of kernel sources and object directories. 627 628KERNSRCDIR Is the location of the top of the kernel src. 629 It defaults to ${BSDSRCDIR}/sys, but the top-level 630 Makefile.inc sets it to ${ABSTOP}/sys (ABSTOP is the 631 absolute path to the directory where the top-level 632 Makefile.inc was found. 633 634KERNARCHDIR Is the location of the machine dependent kernel 635 sources. It defaults to arch/${MACHINE} 636 637KERNCONFDIR Is where the configuration files for kernels are 638 found; default is ${KERNSRCDIR}/${KERNARCHDIR}/conf. 639 640KERNOBJDIR Is the kernel build directory. The kernel GENERIC for 641 instance will be compiled in ${KERNOBJDIR}/GENERIC. 642 The default value is 643 ${MAKEOBJDIRPREFIX}${KERNSRCDIR}/${KERNARCHDIR}/compile 644 if it exists or the target 'obj' is being made. 645 Otherwise the default is 646 ${KERNSRCDIR}/${KERNARCHDIR}/compile. 647 648It is important that Makefiles (such as those under src/distrib) that 649wish to find compiled kernels use bsd.kernobj.mk and ${KERNOBJDIR} 650rather than make assumptions about the location of the compiled kernel. 651 652=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 653