Annotation of src/BUILDING, Revision 1.111
1.104 wiz 1: BUILDING(8) System Manager's Manual BUILDING(8)
1.1 tv 2:
1.105 wiz 3: NAME
4: BUILDING -- Procedure for building NetBSD from source code.
1.1 tv 5:
1.105 wiz 6: REQUIREMENTS
1.1 tv 7: NetBSD is designed to be buildable on most POSIX-compliant host systems.
1.105 wiz 8: The basic build procedure is the same whether compiling natively (on the
9: same NetBSD architecture) or cross compiling (on another architecture or
1.1 tv 10: OS).
11:
12: This source tree contains a special subtree, ``tools'', which uses the
13: host system to create a build toolchain for the target architecture. The
14: host system must have at least C and C++ compilers in order to create the
1.105 wiz 15: toolchain (make is not required); all other tools are created as part of
1.53 reed 16: the NetBSD build process. (See the environment variables section below
17: if you need to override or manually select your compilers.)
1.1 tv 18:
1.105 wiz 19: FILES
20: Source tree layout
21: doc/BUILDING.mdoc
1.17 wiz 22: This document (in -mdoc troff format; the original copy).
1.1 tv 23:
1.105 wiz 24: BUILDING This document (in plaintext).
1.1 tv 25:
1.105 wiz 26: tools/compat/README
1.48 jmc 27: Special notes for cross-hosting a NetBSD build on non-
28: NetBSD platforms.
29:
1.105 wiz 30: Makefile The main Makefile for NetBSD; should only be run for
1.44 lukem 31: native builds with an appropriately up-to-date version of
1.1 tv 32: NetBSD make(1). (For building from out-of-date systems or
1.105 wiz 33: on a non-native host, see the build.sh shell script.)
1.1 tv 34:
1.105 wiz 35: UPDATING Special notes for updating from an earlier revision of
1.1 tv 36: NetBSD. It is important to read this file before every
37: build of an updated source tree.
38:
1.105 wiz 39: build.sh Bourne-compatible shell script used for building the host
1.1 tv 40: build tools and the NetBSD system from scratch. Can be
41: used for both native and cross builds, and should be used
42: instead of make(1) for any source tree that is updated and
43: recompiled regularly.
44:
1.105 wiz 45: crypto/dist/, dist/, gnu/dist/
1.104 wiz 46: Sources imported verbatim from third parties, without
47: mangling the existing build structure. Other source trees
1.105 wiz 48: in bin through usr.sbin use the NetBSD make(1)
1.104 wiz 49: ``reachover'' Makefile semantics when building these
50: programs for a native host.
51:
1.106 wiz 52: external, sys/external
53: Sources and build infrastructure for components imported
54: (mostly) unchanged from upstream maintainers, sorted by
55: applicable license. This is (slowly) replacing the
56: crypto/dist, dist, and gnu/dist directories.
57:
1.105 wiz 58: distrib/, etc/
1.104 wiz 59: Sources for items used when making a full release
1.105 wiz 60: snapshot, such as files installed in DESTDIR/etc on the
1.104 wiz 61: destination system, boot media, and release notes.
1.1 tv 62:
1.105 wiz 63: tests/, regress/
1.70 dholland 64: Regression test harness. Can be cross-compiled, but only
1.105 wiz 65: run natively. tests/ uses the atf(7) test framework;
66: regress/ contains older tests that have not yet been
1.70 dholland 67: migrated to atf(7).
1.1 tv 68:
1.105 wiz 69: sys/ NetBSD kernel sources.
1.1 tv 70:
1.105 wiz 71: tools/ ``Reachover'' build structure for the host build tools.
1.104 wiz 72: This has a special method of determining out-of-date
73: status.
1.1 tv 74:
1.105 wiz 75: bin/ ... usr.sbin/
1.1 tv 76: Sources to the NetBSD userland (non-kernel) programs. If
77: any of these directories are missing, they will be skipped
78: during the build.
79:
1.105 wiz 80: x11/ ``Reachover'' build structure for X11R6; the source is in
81: X11SRCDIR.
1.49 lukem 82:
1.105 wiz 83: Build tree layout
1.1 tv 84: The NetBSD build tree is described in hier(7), and the release layout is
85: described in release(7).
86:
1.105 wiz 87: CONFIGURATION
88: Environment variables
1.8 lukem 89: Several environment variables control the behaviour of NetBSD builds.
90:
1.105 wiz 91: HOST_SH Path name to a shell available on the host system and
1.96 apb 92: suitable for use during the build. The NetBSD build
93: system requires a modern Bourne-like shell with POSIX-
94: compliant features, and also requires support for the
95: ``local'' keyword to declare local variables in shell
1.104 wiz 96: functions (which is a widely-implemented but non-
97: standardised feature).
1.96 apb 98:
99: Depending on the host system, a suitable shell may be
1.105 wiz 100: /bin/sh, /usr/xpg4/bin/sh, /bin/ksh (provided it is a
1.96 apb 101: variant of ksh that supports the ``local'' keyword,
1.105 wiz 102: such as ksh88, but not ksh93), or /usr/local/bin/bash.
1.96 apb 103:
1.105 wiz 104: Most parts of the build require HOST_SH to be an
105: absolute path; however, build.sh allows it to be a
1.104 wiz 106: simple command name, which will be converted to an
1.105 wiz 107: absolute path by searching the PATH.
1.58 apb 108:
1.105 wiz 109: HOST_CC Path name to C compiler used to create the toolchain.
1.53 reed 110:
1.105 wiz 111: HOST_CXX Path name to C++ compiler used to create the toolchain.
1.53 reed 112:
1.105 wiz 113: MACHINE Machine type, e.g., ``macppc''.
1.8 lukem 114:
1.105 wiz 115: MACHINE_ARCH Machine architecture, e.g., ``powerpc''.
1.8 lukem 116:
1.105 wiz 117: MAKE Path name to invoke make(1) as.
1.8 lukem 118:
1.105 wiz 119: MAKEFLAGS Flags to invoke make(1) with. Note that build.sh
120: ignores the value of MAKEFLAGS passed in the
121: environment, but allows MAKEFLAGS to be set via the -V
1.104 wiz 122: option.
1.8 lukem 123:
1.105 wiz 124: MAKEOBJDIR Directory to use as the .OBJDIR for the current
1.104 wiz 125: directory. The value is subjected to variable
126: expansion by make(1). Typical usage is to set this
127: variable to a value involving the use of
128: `${.CURDIR:S...}' or `${.CURDIR:C...}', to derive the
1.105 wiz 129: value of .OBJDIR from the value of .CURDIR. Used only
130: if MAKEOBJDIRPREFIX is not defined. MAKEOBJDIR can be
131: provided only in the environment or via the -O flag of
132: build.sh; it cannot usefully be set inside a Makefile,
133: including mk.conf or ${MAKECONF}.
1.8 lukem 134:
1.105 wiz 135: MAKEOBJDIRPREFIX Top level directory of the object directory tree. The
1.88 apb 136: value is subjected to variable expansion by make(1).
1.105 wiz 137: build.sh will create the ${MAKEOBJDIRPREFIX} directory
138: if necessary, but if make(1) is used without build.sh,
1.88 apb 139: then rules in <bsd.obj.mk> will abort the build if the
140: ${MAKEOBJDIRPREFIX} directory does not exist. If the
1.104 wiz 141: value is defined and valid, then
1.105 wiz 142: ${MAKEOBJDIRPREFIX}/${.CURDIR} is used as the .OBJDIR
1.104 wiz 143: for the current directory. The current directory may
1.105 wiz 144: be read only. MAKEOBJDIRPREFIX can be provided only in
145: the environment or via the -M flag of build.sh; it
1.104 wiz 146: cannot usefully be set inside a Makefile, including
1.105 wiz 147: mk.conf or ${MAKECONF}.
1.104 wiz 148:
1.105 wiz 149: "make" variables
1.104 wiz 150: Several variables control the behavior of NetBSD builds. Unless
151: otherwise specified, these variables may be set in either the process
1.105 wiz 152: environment or the make(1) configuration file specified by MAKECONF.
1.1 tv 153:
1.107 apb 154: BUILDID Identifier for the build. If set, this should be a short
155: string that is suitable for use as part of a file or
156: directory name. The identifier will be appended to object
157: directory names, and can be consulted in the make(1)
1.104 wiz 158: configuration file in order to set additional build
1.107 apb 159: parameters, such as compiler flags. It will also be used as
160: part of the kernel version string, which can be printed by
161: ``uname -v''.
162:
163: Default: Unset.
1.9 thorpej 164:
1.108 apb 165: BUILDINFO This may be a multi-line string containing information about
166: the build. This will appear in DESTDIR/etc/release, and it
167: will be stored in the buildinfo variable in any kernels that
168: are built. When such kernels are booted, the sysctl(7)
169: kern.buildinfo variable will report this value. The string
170: may contain backslash escape sequences, such as ``\\''
171: (representing a backslash character) and ``\n'' (representing
172: a newline).
173:
174: Default: Unset.
175:
1.105 wiz 176: BUILDSEED GCC uses random numbers when compiling C++ code. This
1.104 wiz 177: variable seeds the gcc random number generator using the
178: -frandom-seed flag with this value. By default, it is set to
179: NetBSD-(majorversion). Using a fixed value causes C++
180: binaries to be the same when built from the same sources,
181: resulting in identical (reproducible) builds. Additional
182: information is available in the GCC documentation of
183: -frandom-seed.
184:
1.105 wiz 185: DESTDIR Directory to contain the built NetBSD system. If set,
1.104 wiz 186: special options are passed to the compilation tools to
1.105 wiz 187: prevent their default use of the host system's /usr/include,
188: /usr/lib, and so forth. This pathname must be an absolute
189: path, and should not end with a slash (/) character. (For
190: installation into the system's root directory, set DESTDIR to
1.59 apb 191: an empty string, not to ``/''). The directory must reside on
192: a file system which supports long file names and hard links.
1.1 tv 193:
1.105 wiz 194: Default: Empty string if USETOOLS is ``yes''; unset
1.104 wiz 195: otherwise.
1.1 tv 196:
1.105 wiz 197: Note: build.sh will provide a default of destdir.MACHINE (in
198: the top-level .OBJDIR) unless run in `expert' mode.
1.30 lukem 199:
1.105 wiz 200: MAKECONF The name of the make(1) configuration file. Only settable in
201: the process environment.
1.1 tv 202:
1.105 wiz 203: Default: ``/etc/mk.conf''
1.1 tv 204:
1.105 wiz 205: MAKEVERBOSE
1.45 lukem 206: Level of verbosity of status messages. Supported values:
207:
1.80 apb 208: 0 No descriptive messages or commands executed by make(1)
209: are shown.
1.45 lukem 210:
1.80 apb 211: 1 Brief messages are shown describing what is being done,
1.104 wiz 212: but the actual commands executed by make(1) are not
213: displayed.
1.80 apb 214:
215: 2 Descriptive messages are shown as above (prefixed with a
216: `#'), and ordinary commands performed by make(1) are
217: displayed.
218:
219: 3 In addition to the above, all commands performed by
220: make(1) are displayed, even if they would ordinarily
221: have been hidden through use of the ``@'' prefix in the
222: relevant makefile.
1.45 lukem 223:
1.80 apb 224: 4 In addition to the above, commands executed by make(1)
1.105 wiz 225: are traced through use of the sh(1) ``-x'' flag.
1.45 lukem 226:
1.105 wiz 227: Default: 2
1.45 lukem 228:
1.105 wiz 229: MKCATPAGES Can be set to ``yes'' or ``no''. Indicates whether
1.104 wiz 230: preformatted plaintext manual pages will be created during a
231: build.
1.1 tv 232:
1.105 wiz 233: Default: ``no''
1.1 tv 234:
1.106 wiz 235: MKCROSSGDB Can be set to ``yes'' or ``no''. Create a cross-gdb as a
236: host tool.
237:
238: Default: ``no''
239:
1.105 wiz 240: MKCRYPTO Can be set to ``yes'' or ``no''. Indicates whether
1.104 wiz 241: cryptographic code will be included in a build; provided for
242: the benefit of countries that do not allow strong
243: cryptography. Will not affect use of the standard low-
244: security password encryption system, crypt(3).
1.1 tv 245:
1.105 wiz 246: Default: ``yes''
1.1 tv 247:
1.106 wiz 248: MKDEBUG Can be set to ``yes'' or ``no''. Indicates whether debug
249: information should be generated for all userland binaries
250: compiled. The result is collected as an additional debug.tgz
251: and xdebug.tgz set and installed in /usr/libdata/debug.
252:
253: Default: ``no''
254:
255: MKDEBUGLIB Can be set to ``yes'' or ``no''. Indicates whether debug
256: information (see MKDEBUG) should also be generated for all
257: libraries build.
258:
259: Default: ``no''
260:
1.105 wiz 261: MKDOC Can be set to ``yes'' or ``no''. Indicates whether system
262: documentation destined for DESTDIR/usr/share/doc will be
1.44 lukem 263: installed during a build.
1.1 tv 264:
1.105 wiz 265: Default: ``yes''
1.1 tv 266:
1.105 wiz 267: MKHTML Can be set to ``yes'' or ``no''. Indicates whether
1.104 wiz 268: preformatted HTML manual pages will be built and installed
1.77 lukem 269:
1.105 wiz 270: Default: ``yes''
1.77 lukem 271:
1.105 wiz 272: MKHOSTOBJ Can be set to ``yes'' or ``no''. If set to ``yes'', then for
1.4 tv 273: programs intended to be run on the compile host, the name,
274: release, and architecture of the host operating system will
275: be suffixed to the name of the object directory created by
276: ``make obj''. (This allows multiple host systems to compile
277: NetBSD for a single target.) If set to ``no'', then programs
278: built to be run on the compile host will use the same object
279: directory names as programs built to be run on the target.
280:
1.105 wiz 281: Default: ``no''
1.4 tv 282:
1.105 wiz 283: MKINFO Can be set to ``yes'' or ``no''. Indicates whether GNU Info
1.1 tv 284: files, used for the documentation for most of the compilation
285: tools, will be created and installed during a build.
286:
1.105 wiz 287: Default: ``yes''
1.1 tv 288:
1.106 wiz 289: MKKDEBUG Can be set to ``yes'' or ``no''. Force generation of full-
290: debug symbol versions of all kernels compiled. Alongside of
291: the netbsd kernel file, an unstripped version netbsd.gdb is
292: created. This is useful if a cross-gdb is built as well (see
293: MKCROSSGDB).
294:
295: Default: ``no''
296:
1.105 wiz 297: MKKMOD Can be set to ``yes'' or ``no''. Indicates whether kernel
1.95 apb 298: modules are built and installed.
299:
1.105 wiz 300: Default: ``yes''
1.95 apb 301:
1.105 wiz 302: MKLINT Can be set to ``yes'' or ``no''. Indicates whether lint(1)
1.1 tv 303: will be run against portions of the NetBSD source code during
304: the build, and whether lint libraries will be installed into
1.105 wiz 305: DESTDIR/usr/libdata/lint.
1.1 tv 306:
1.105 wiz 307: Default: ``yes''
1.1 tv 308:
1.105 wiz 309: MKMAN Can be set to ``yes'' or ``no''. Indicates whether manual
1.1 tv 310: pages will be installed during a build.
311:
1.105 wiz 312: Default: ``yes''
1.1 tv 313:
1.105 wiz 314: MKNLS Can be set to ``yes'' or ``no''. Indicates whether Native
1.44 lukem 315: Language System locale zone files will be compiled and
316: installed during a build.
1.1 tv 317:
1.105 wiz 318: Default: ``yes''
1.1 tv 319:
1.105 wiz 320: MKOBJ Can be set to ``yes'' or ``no''. Indicates whether object
1.1 tv 321: directories will be created when running ``make obj''. If
322: set to ``no'', then all built files will be located inside
323: the regular source tree.
324:
1.105 wiz 325: Default: ``yes''
1.1 tv 326:
1.105 wiz 327: Note that setting MKOBJ to ``no'' is not recommended and may
1.70 dholland 328: cause problems when updating the tree with cvs(1).
329:
1.105 wiz 330: MKPIC Can be set to ``yes'' or ``no''. Indicates whether shared
1.1 tv 331: objects and libraries will be created and installed during a
332: build. If set to ``no'', the entire built system will be
333: statically linked.
334:
1.105 wiz 335: Default: Platform dependent. As of this writing, all
336: platforms except sh3 default to ``yes''.
1.1 tv 337:
1.105 wiz 338: MKPICINSTALL
1.1 tv 339: Can be set to ``yes'' or ``no''. Indicates whether the ar(1)
1.105 wiz 340: format libraries (lib*_pic.a), used to generate shared
1.44 lukem 341: libraries, are installed during a build.
1.1 tv 342:
1.105 wiz 343: Default: ``yes''
1.1 tv 344:
1.105 wiz 345: MKPROFILE Can be set to ``yes'' or ``no''. Indicates whether profiled
346: libraries (lib*_p.a) will be built and installed during a
1.1 tv 347: build.
348:
1.105 wiz 349: Default: ``yes''; however, some platforms turn off MKPROFILE
1.1 tv 350: by default at times due to toolchain problems with profiled
351: code.
352:
1.105 wiz 353: MKREPRO Can be set to ``yes'' or ``no''. Create reproducable builds.
1.100 wiz 354: This enables different switches to make two builds from the
355: same source tree result in the same build results.
356:
1.105 wiz 357: Default: ``no''
1.100 wiz 358:
1.105 wiz 359: MKSHARE Can be set to ``yes'' or ``no''. Indicates whether files
360: destined to reside in DESTDIR/usr/share will be built and
1.44 lukem 361: installed during a build. If set to ``no'', then all of
1.105 wiz 362: MKCATPAGES, MKDOC, MKINFO, MKMAN, and MKNLS will be set to
1.27 lukem 363: ``no'' unconditionally.
1.1 tv 364:
1.105 wiz 365: Default: ``yes''
1.1 tv 366:
1.105 wiz 367: MKSTRIPIDENT
1.102 abs 368: Can be set to ``yes'' or ``no''. Indicates whether RCS IDs,
1.104 wiz 369: for use with ident(1), should be stripped from program
370: binaries and shared libraries.
1.78 apb 371:
1.105 wiz 372: Default: ``no''
1.78 apb 373:
1.105 wiz 374: MKUNPRIVED Can be set to ``yes'' or ``no''. Indicates whether an
1.104 wiz 375: unprivileged install will occur. The user, group,
376: permissions, and file flags, will not be set on the installed
1.52 jmc 377: items; instead the information will be appended to a file
1.105 wiz 378: called METALOG in DESTDIR. The contents of METALOG are used
1.52 jmc 379: during the generation of the distribution tar files to ensure
380: that the appropriate file ownership is stored.
1.38 lukem 381:
1.105 wiz 382: Default: ``no''
1.38 lukem 383:
1.105 wiz 384: MKUPDATE Can be set to ``yes'' or ``no''. Indicates whether all
385: install operations intended to write to DESTDIR will compare
1.38 lukem 386: file timestamps before installing, and skip the install phase
1.44 lukem 387: if the destination files are up-to-date. This also has
388: implications on full builds (see next subsection).
1.38 lukem 389:
1.105 wiz 390: Default: ``no''
1.38 lukem 391:
1.105 wiz 392: MKX11 Can be set to ``yes'' or ``no''. Indicates whether X11 is
393: built from X11SRCDIR.
1.49 lukem 394:
1.105 wiz 395: Default: ``no''
1.49 lukem 396:
1.105 wiz 397: TOOLDIR Directory to hold the host tools, once built. If specified,
1.59 apb 398: must be an absolute path. This directory should be unique to
1.104 wiz 399: a given host system and NetBSD source tree. (However,
1.105 wiz 400: multiple targets may share the same TOOLDIR; the target-
1.104 wiz 401: dependent files have unique names.) If unset, a default
402: based on the uname(1) information of the host platform will
1.105 wiz 403: be created in the .OBJDIR of src.
1.1 tv 404:
1.105 wiz 405: Default: Unset.
1.1 tv 406:
1.105 wiz 407: USETOOLS Indicates whether the tools specified by TOOLDIR should be
1.1 tv 408: used as part of a build in progress. Must be set to ``yes''
409: if cross-compiling.
410:
1.105 wiz 411: yes Use the tools from TOOLDIR.
1.1 tv 412:
1.105 wiz 413: no Do not use the tools from TOOLDIR, but refuse to build
1.1 tv 414: native compilation tool components that are version-
415: specific for that tool.
416:
1.105 wiz 417: never Do not use the tools from TOOLDIR, even when building
1.104 wiz 418: native tool components. This is similar to the
1.105 wiz 419: traditional NetBSD build method, but does not verify
1.104 wiz 420: that the compilation tools in use are up-to-date
421: enough in order to build the tree successfully. This
422: may cause build or runtime problems when building the
423: whole NetBSD source tree.
1.1 tv 424:
1.105 wiz 425: Default: ``yes'', unless TOOLCHAIN_MISSING is set to ``yes''.
1.71 dholland 426:
1.105 wiz 427: USETOOLS is also set to ``no'' when using <bsd.*.mk> outside
1.71 dholland 428: the NetBSD source tree.
1.1 tv 429:
1.105 wiz 430: X11SRCDIR Directory containing the X11R6 source. If specified, must be
1.59 apb 431: an absolute path. The main X11R6 source is found in
1.105 wiz 432: X11SRCDIR/xfree/xc.
1.49 lukem 433:
1.105 wiz 434: Default: NETBSDRCDIR/../xsrc, if that exists; otherwise
435: /usr/xsrc.
1.49 lukem 436:
1.105 wiz 437: X11FLAVOUR The style of X11 cross-built, set to either ``Xorg'' or
1.79 mrg 438: ``XFree86''.
439:
1.105 wiz 440: Default: ``Xorg'' on amd64, i386, macppc, shark and sparc64
1.81 mrg 441: platforms, ``XFree86'' on everything else.
1.79 mrg 442:
1.105 wiz 443: "make" variables for full builds
1.7 lukem 444: These variables only affect the top level ``Makefile'' and do not affect
445: manually building subtrees of the NetBSD source code.
1.1 tv 446:
1.105 wiz 447: INSTALLWORLDDIR Location for the ``make installworld'' target to install
1.59 apb 448: to. If specified, must be an absolute path.
1.1 tv 449:
1.105 wiz 450: Default: ``/''
1.1 tv 451:
1.105 wiz 452: MKOBJDIRS Can be set to ``yes'' or ``no''. Indicates whether
1.44 lukem 453: object directories will be created automatically (via a
1.20 lukem 454: ``make obj'' pass) at the start of a build.
1.1 tv 455:
1.105 wiz 456: Default: ``no''
1.1 tv 457:
1.105 wiz 458: If using build.sh, the default is ``yes''. This may be
459: set back to ``no'' by giving build.sh the -o option.
1.70 dholland 460:
1.105 wiz 461: MKUPDATE Can be set to ``yes'' or ``no''. If set, then in
462: addition to the effects described for MKUPDATE=yes
463: above, this implies the effects of NOCLEANDIR (i.e.,
1.104 wiz 464: ``make cleandir'' is avoided).
1.38 lukem 465:
1.105 wiz 466: Default: ``no''
1.38 lukem 467:
1.105 wiz 468: If using build.sh, this may be set by giving the -u
1.70 dholland 469: option.
470:
1.105 wiz 471: NBUILDJOBS Now obsolete. Use the make(1) option -j, instead. See
1.70 dholland 472: below.
1.1 tv 473:
1.105 wiz 474: Default: Unset.
1.1 tv 475:
1.105 wiz 476: NOCLEANDIR If set, avoids the ``make cleandir'' phase of a full
1.20 lukem 477: build. This has the effect of allowing only changed
478: files in a source tree to be recompiled. This can speed
479: up builds when updating only a few files in the tree.
1.1 tv 480:
1.105 wiz 481: Default: Unset.
1.1 tv 482:
1.105 wiz 483: See also MKUPDATE.
1.70 dholland 484:
1.105 wiz 485: NODISTRIBDIRS If set, avoids the ``make distrib-dirs'' phase of a full
486: build. This skips running mtree(8) on DESTDIR, useful
1.20 lukem 487: on systems where building as an unprivileged user, or
488: where it is known that the system-wide mtree files have
489: not changed.
1.1 tv 490:
1.105 wiz 491: Default: Unset.
1.1 tv 492:
1.105 wiz 493: NOINCLUDES If set, avoids the ``make includes'' phase of a full
1.20 lukem 494: build. This has the effect of preventing make(1) from
1.44 lukem 495: thinking that some programs are out-of-date simply
496: because the system include files have changed. However,
1.20 lukem 497: this option should not be used when updating the entire
498: NetBSD source tree arbitrarily; it is suggested to use
1.105 wiz 499: MKUPDATE=yes instead in that case.
1.1 tv 500:
1.105 wiz 501: Default: Unset.
1.1 tv 502:
1.105 wiz 503: RELEASEDIR If set, specifies the directory to which a release(7)
1.20 lukem 504: layout will be written at the end of a ``make release''.
1.59 apb 505: If specified, must be an absolute path.
1.20 lukem 506:
1.105 wiz 507: Default: Unset.
1.20 lukem 508:
1.105 wiz 509: Note: build.sh will provide a default of releasedir (in
510: the top-level .OBJDIR) unless run in `expert' mode.
1.30 lukem 511:
1.105 wiz 512: BUILDING
513: "make" command line options
1.52 jmc 514: This is not a summary of all the options available to make(1); only the
515: options used most frequently with NetBSD builds are listed here.
1.1 tv 516:
1.105 wiz 517: -j njob Run up to njob make(1) subjobs in parallel. Makefiles should
1.52 jmc 518: use .WAIT or have explicit dependencies as necessary to
1.74 apb 519: enforce build ordering.
1.10 sommerfe 520:
1.105 wiz 521: -m dir Specify the default directory for searching for system
1.104 wiz 522: Makefile segments, mainly the <bsd.*.mk> files. When building
523: any full NetBSD source tree, this should be set to the
524: ``share/mk'' directory in the source tree. This is set
525: automatically when building from the top level, or when using
1.105 wiz 526: build.sh.
1.1 tv 527:
1.105 wiz 528: -n Display the commands that would have been executed, but do not
1.1 tv 529: actually execute them. This will still cause recursion to
530: take place.
531:
1.105 wiz 532: -V var Print make(1)'s idea of the value of var. Does not build any
1.1 tv 533: targets.
534:
1.105 wiz 535: var=value Set the variable var to value, overriding any setting
536: specified by the process environment, the MAKECONF
1.104 wiz 537: configuration file, or the system Makefile segments.
1.1 tv 538:
1.105 wiz 539: "make" targets
1.1 tv 540: These default targets may be built by running make(1) in any subtree of
541: the NetBSD source code. It is recommended that none of these be used
542: from the top level Makefile; as a specific exception, ``make obj'' and
543: ``make cleandir'' are useful in that context.
544:
1.105 wiz 545: all Build programs, libraries, and preformatted documentation.
1.1 tv 546:
1.105 wiz 547: clean Remove program and library object code files.
1.1 tv 548:
1.105 wiz 549: cleandir Same as clean, but also remove preformatted documentation,
1.44 lukem 550: dependency files generated by ``make depend'', and any other
1.49 lukem 551: files known to be created at build time.
1.1 tv 552:
1.105 wiz 553: depend Create dependency files (.depend) containing more detailed
1.44 lukem 554: information about the dependencies of source code on header
1.1 tv 555: files. Allows programs to be recompiled automatically when a
556: dependency changes.
557:
1.105 wiz 558: dependall Does a ``make depend'' immediately followed by a ``make all''.
1.10 sommerfe 559: This improves cache locality of the build since both passes
560: read the source files in their entirety.
1.1 tv 561:
1.105 wiz 562: distclean Synonym for cleandir.
1.49 lukem 563:
1.105 wiz 564: includes Build and install system header files. Typically needed
1.44 lukem 565: before any system libraries or programs can be built.
1.1 tv 566:
1.105 wiz 567: install Install programs, libraries, and documentation into DESTDIR.
568: Few files will be installed to DESTDIR/dev, DESTDIR/etc,
569: DESTDIR/root or DESTDIR/var in order to prevent user supplied
1.27 lukem 570: configuration data from being overwritten.
1.1 tv 571:
1.105 wiz 572: lint Run lint(1) against the C source code, where appropriate, and
1.1 tv 573: generate system-installed lint libraries.
574:
1.105 wiz 575: obj Create object directories to be used for built files, instead
1.1 tv 576: of building directly in the source tree.
577:
1.105 wiz 578: tags Create ctags(1) searchable function lists usable by the ex(1)
1.1 tv 579: and vi(1) text editors.
580:
1.105 wiz 581: "make" targets for the top level
1.1 tv 582: Additional make(1) targets are usable specifically from the top source
583: level to facilitate building the entire NetBSD source tree.
584:
1.105 wiz 585: build Build the entire NetBSD system (except the kernel). This
1.68 reed 586: orders portions of the source tree such that prerequisites
587: will be built in the proper order.
1.20 lukem 588:
1.105 wiz 589: distribution Do a ``make build'', and then install a full distribution
590: (which does not include a kernel) into DESTDIR, including
591: files in DESTDIR/dev, DESTDIR/etc, DESTDIR/root and
592: DESTDIR/var.
1.20 lukem 593:
1.105 wiz 594: buildworld As per ``make distribution'', except that it ensures that
595: DESTDIR is not the root directory.
1.20 lukem 596:
1.105 wiz 597: installworld Install the distribution from DESTDIR to INSTALLWORLDDIR,
1.70 dholland 598: which defaults to the root directory. Ensures that
1.105 wiz 599: INSTALLWORLDDIR is not the root directory if cross
1.104 wiz 600: compiling.
1.20 lukem 601:
1.105 wiz 602: The INSTALLSETS environment variable may be set to a space-
1.95 apb 603: separated list of distribution sets to be installed. By
604: default, all sets except ``etc'' and ``xetc'' are
1.105 wiz 605: installed, so most files in INSTALLWORLDDIR/etc will not be
1.95 apb 606: installed or modified.
1.61 apb 607:
1.105 wiz 608: Note: Before performing this operation with
609: INSTALLWORLDDIR=/, it is highly recommended that you
1.61 apb 610: upgrade your kernel and reboot. After performing this
611: operation, it is recommended that you use etcupdate(8) to
1.105 wiz 612: update files in INSTALLWORLDDIR/etc, and postinstall(8) to
1.102 abs 613: check for or fix inconsistencies.
1.20 lukem 614:
1.105 wiz 615: sets Create distribution sets from DESTDIR into
616: RELEASEDIR/RELEASEMACHINEDIR/binary/sets. Should be run
1.70 dholland 617: after ``make distribution'', as ``make build'' alone does
618: not install all of the required files.
1.25 lukem 619:
1.105 wiz 620: sourcesets Create source sets of the source tree into
621: RELEASEDIR/source/sets.
1.31 lukem 622:
1.105 wiz 623: syspkgs Create syspkgs from DESTDIR into
624: RELEASEDIR/RELEASEMACHINEDIR/binary/syspkgs. Should be run
1.70 dholland 625: after ``make distribution'', as ``make build'' alone does
626: not install all of the required files.
1.54 apb 627:
1.105 wiz 628: release Do a ``make distribution'', build kernels, distribution
1.44 lukem 629: media, and install sets (this as per ``make sets''), and
630: then package the system into a standard release layout as
1.105 wiz 631: described by release(7). This requires that RELEASEDIR be
1.25 lukem 632: set (see above).
1.1 tv 633:
1.105 wiz 634: iso-image Create a NetBSD installation CD-ROM image in the
1.110 snj 635: RELEASEDIR/images directory. The CD-ROM file system will
636: have a layout as described in release(7).
1.62 apb 637:
638: For most machine types, the CD-ROM will be bootable, and
1.104 wiz 639: will automatically run the sysinst(8) menu-based
640: installation program, which can be used to install or
641: upgrade a NetBSD system. Bootable CD-ROMs also contain
642: tools that may be useful in repairing a damaged NetBSD
643: installation.
1.62 apb 644:
645: Before ``make iso-image'' is attempted, RELEASEDIR must be
646: populated by ``make release'' or equivalent.
647:
648: Note that other, smaller, CD-ROM images may be created in
1.105 wiz 649: the RELEASEDIR/RELEASEMACHINEDIR/installation/cdrom
1.104 wiz 650: directory by ``make release''. These smaller images
651: usually contain the same tools as the larger images in
1.110 snj 652: RELEASEDIR/images, but do not contain additional content
653: such as the distribution sets.
1.62 apb 654:
655: Note that the mac68k port still uses an older method of
1.104 wiz 656: creating CD-ROM images. This requires the mkisofs(1)
657: utility, which is not part of NetBSD, but which can be
1.105 wiz 658: installed from pkgsrc/sysutils/cdrtools.
1.56 apb 659:
1.105 wiz 660: iso-image-source
1.64 jnemeth 661: Create a NetBSD installation CD-ROM image in the
1.110 snj 662: RELEASEDIR/images directory. The CD-ROM file system will
663: have a layout as described in release(7). It will have top
1.64 jnemeth 664: level directories for the machine type and source.
665:
666: For most machine types, the CD-ROM will be bootable, and
1.104 wiz 667: will automatically run the sysinst(8) menu-based
668: installation program, which can be used to install or
669: upgrade a NetBSD system. Bootable CD-ROMs also contain
670: tools that may be useful in repairing a damaged NetBSD
671: installation.
1.64 jnemeth 672:
673: Before ``make iso-image-source'' is attempted, RELEASEDIR
1.104 wiz 674: must be populated by ``make sourcesets release'' or
675: equivalent.
1.64 jnemeth 676:
677: Note that other, smaller, CD-ROM images may be created in
1.105 wiz 678: the RELEASEDIR/RELEASEMACHINEDIR/installation/cdrom
1.104 wiz 679: directory by ``make release''. These smaller images
680: usually contain the same tools as the larger images in
1.110 snj 681: RELEASEDIR/images, but do not contain additional content
682: such as the distribution sets.
1.64 jnemeth 683:
684: Note that the mac68k port still uses an older method of
1.104 wiz 685: creating CD-ROM images. This requires the mkisofs(1)
686: utility, which is not part of NetBSD, but which can be
1.105 wiz 687: installed from pkgsrc/sysutils/cdrtools.
1.64 jnemeth 688:
1.105 wiz 689: install-image
1.98 apb 690: Create a bootable NetBSD installation disk image in the
1.105 wiz 691: RELEASEDIR/RELEASEMACHINEDIR/installation/installimage
1.98 apb 692: directory. The installation disk image is suitable for
693: copying to bootable USB flash memory sticks, etc., for
694: machines which are able to boot from such devices. The
695: file system in the bootable disk image will have a layout
696: as described in release(7).
1.97 tsutsui 697:
698: The installation image is bootable, and will automatically
699: run the sysinst(8) menu-based installation program, which
1.98 apb 700: can be used to install or upgrade a NetBSD system. The
701: image also contains tools that may be useful in repairing a
702: damaged NetBSD installation.
1.97 tsutsui 703:
1.105 wiz 704: Before ``make install-image'' is attempted, RELEASEDIR must
1.98 apb 705: be populated by ``make release'' or equivalent. The build
1.105 wiz 706: must have been performed with MKUNPRIVED=yes because ``make
707: install-image'' relies on information in DESTDIR/METALOG.
1.97 tsutsui 708:
709: live-image Create NetBSD live images in the
1.105 wiz 710: RELEASEDIR/RELEASEMACHINEDIR/installation/liveimage
1.104 wiz 711: directory. The live image contains all necessary files to
712: boot NetBSD up to multi-user mode, including all files
713: which should be extracted during installation, NetBSD
714: disklabel, bootloaders, etc.
715:
716: The live image is suitable for use as a disk image in
717: virtual machine environments such as QEMU, and also useful
718: to boot NetBSD from a USB flash memory stick on a real
1.98 apb 719: machine, without the need for installation.
1.97 tsutsui 720:
721: Before ``make live-image'' is attempted, RELEASEDIR must be
1.99 tsutsui 722: populated by ``make release'' or equivalent. The build
1.105 wiz 723: must have been performed with MKUNPRIVED=yes because ``make
724: install-image'' relies on information in DESTDIR/METALOG.
1.97 tsutsui 725:
1.105 wiz 726: regression-tests
1.20 lukem 727: Can only be run after building the regression tests in the
1.70 dholland 728: directory ``regress''. Runs those compiled regression
1.104 wiz 729: tests on the local host. Note that most tests are now
730: managed instead using atf(7); this target should probably
731: run those as well but currently does not.
1.1 tv 732:
1.105 wiz 733: The "build.sh" script
1.96 apb 734: This script file is a shell script designed to build the entire NetBSD
1.104 wiz 735: system on any host with a suitable modern shell and some common
1.105 wiz 736: utilities. The required shell features are described under the HOST_SH
1.104 wiz 737: variable.
1.96 apb 738:
739: If a host system's default shell does support the required features, then
740: we suggest that you explicitly specify a suitable shell using a command
741: like
742:
1.105 wiz 743: /path/to/suitable/shell build.sh [options]
1.96 apb 744:
1.105 wiz 745: The above command will usually enable build.sh to automatically set
746: HOST_SH=/path/to/suitable/shell, but if that fails, then the following
1.96 apb 747: set of commands may be used instead:
748:
1.105 wiz 749: HOST_SH=/path/to/suitable/shell
1.96 apb 750: export HOST_SH
1.105 wiz 751: ${HOST_SH} build.sh [options]
1.96 apb 752:
1.105 wiz 753: If build.sh detects that it is being executed under an unsuitable shell,
1.96 apb 754: it attempts to exec a suitable shell instead, or prints an error message.
1.105 wiz 755: If HOST_SH is not set explicitly, then build.sh sets a default using
1.96 apb 756: heuristics dependent on the host platform, or from the shell under which
1.105 wiz 757: build.sh is executed (if that can be determined), or using the first copy
758: of sh found in PATH.
1.1 tv 759:
760: All cross-compile builds, and most native builds, of the entire system
1.105 wiz 761: should make use of build.sh rather than just running ``make''. This way,
1.104 wiz 762: the make(1) program will be bootstrapped properly, in case the host
763: system has an older or incompatible ``make'' program.
1.1 tv 764:
1.105 wiz 765: When compiling the entire system via build.sh, many make(1) variables are
1.1 tv 766: set for you in order to help encapsulate the build process. In the list
1.105 wiz 767: of options below, variables that are automatically set by build.sh are
1.1 tv 768: noted where applicable.
769:
1.105 wiz 770: The following operations are supported by build.sh:
1.22 lukem 771:
1.105 wiz 772: build Build the system as per ``make build''. Before the main
773: part of the build commences, this command runs the obj
774: operation (unless the -o option is given), ``make
775: cleandir'' (unless the -u option is given), and the tools
1.70 dholland 776: operation.
1.22 lukem 777:
1.105 wiz 778: distribution Build a full distribution as per ``make distribution''.
779: This command first runs the build operation.
1.22 lukem 780:
1.105 wiz 781: release Build a full release as per ``make release''. This command
782: first runs the distribution operation.
1.22 lukem 783:
1.105 wiz 784: makewrapper Create the nbmake-MACHINE wrapper. This operation is
1.104 wiz 785: automatically performed for any of the other operations.
1.23 lukem 786:
1.105 wiz 787: cleandir Perform ``make cleandir''.
1.75 lukem 788:
1.105 wiz 789: obj Perform ``make obj''.
1.22 lukem 790:
1.105 wiz 791: tools Build and install the host tools from src/tools. This
1.104 wiz 792: command will first run ``make obj'' and ``make cleandir''
1.105 wiz 793: in the tools subdirectory unless the -o or -u options
1.104 wiz 794: (respectively) are given.
1.22 lukem 795:
1.105 wiz 796: install=idir Install the contents of DESTDIR to idir, using ``make
1.61 apb 797: installworld''. Note that files that are part of the
1.95 apb 798: ``etc'' or ``xetc'' sets will not be installed, unless
799: overridden by the INSTALLSETS environment variable.
1.35 lukem 800:
1.105 wiz 801: kernel=kconf Build a new kernel. The kconf argument is the name of a
802: configuration file suitable for use by config(1). If kconf
1.22 lukem 803: does not contain any `/' characters, the configuration file
1.105 wiz 804: is expected to be found in the KERNCONFDIR directory, which
805: is typically sys/arch/MACHINE/conf. The new kernel will be
806: built in a subdirectory of KERNOBJDIR, which is typically
807: sys/arch/MACHINE/compile or an associated object directory.
1.70 dholland 808:
1.105 wiz 809: This command does not imply the tools command; run the
810: tools command first unless it is certain that the tools
1.70 dholland 811: already exist and are up to date.
812:
813: This command will run ``make cleandir'' on the kernel in
1.105 wiz 814: question first unless the -u option is given.
1.22 lukem 815:
1.106 wiz 816: kernel.gdb=kconf
817: Build a new kernel with debug information. Similar to the
818: above kernel=kconf operation, but creates a netbsd.gdb file
819: alongside of the kernel netbsd, which contains a full
820: symbol table and can be used for debugging (for example
821: with a cross-gdb built by MKCROSSGDB).
822:
1.111 ! uebayasi 823: kernels This command will build all kernels defined in port specific
! 824: release build procedure.
! 825:
! 826: This command internally calls the kernel=kconf operation
! 827: for each found kernel configuration file.
! 828:
1.105 wiz 829: modules This command will build kernel modules and install them
830: into DESTDIR.
1.86 jnemeth 831:
1.105 wiz 832: releasekernel=kconf
1.70 dholland 833: Install a gzip(1)ed copy of the kernel previously built by
1.105 wiz 834: kernel=kconf into
835: RELEASEDIR/RELEASEMACHINEDIR/binary/kernel, usually as
836: netbsd-kconf.gz, although the ``netbsd'' prefix is
837: determined from the ``config'' directives in kconf.
1.24 lukem 838:
1.105 wiz 839: sets Perform ``make sets''.
1.31 lukem 840:
1.105 wiz 841: sourcesets Perform ``make sourcesets''.
1.22 lukem 842:
1.105 wiz 843: syspkgs Perform ``make syspkgs''.
1.54 apb 844:
1.105 wiz 845: iso-image Perform ``make iso-image''.
1.56 apb 846:
1.105 wiz 847: iso-image-source
1.65 jnemeth 848: Perform ``make iso-image-source''.
849:
1.105 wiz 850: install-image
1.98 apb 851: Perform ``make install-image''.
1.97 tsutsui 852:
1.105 wiz 853: live-image Perform ``make live-image''.
1.97 tsutsui 854:
1.109 apb 855: list-arch Prints a list of valid MACHINE and MACHINE_ARCH settings,
856: the default MACHINE_ARCH for each MACHINE, and aliases for
857: MACHINE/MACHINE_ARCH pairs, and then exits. The -m or -a
858: options (or both) may be used to specify glob patterns that
859: will be used to narrow the list of results; for example,
860: ``build.sh -m 'evm*' -a '*arm*' list-arch'' will list all
861: known MACHINE/MACHINE_ARCH values in which either MACHINE
862: or ALIAS matches the pattern `evb*', and MACHINE_ARCH
863: matches the pattern `*arm*'.
864:
1.105 wiz 865: The following command line options alter the behaviour of the build.sh
1.51 wiz 866: operations described above:
1.1 tv 867:
1.109 apb 868: -a arch Set the value of MACHINE_ARCH to arch. See the -m option for
869: more information.
1.9 thorpej 870:
1.105 wiz 871: -B buildid
872: Set the value of BUILDID to buildid. This will also append the
1.67 sborrill 873: build identifier to the name of the ``make'' wrapper script so
1.37 lukem 874: that the resulting name is of the form
1.105 wiz 875: ``nbmake-MACHINE-BUILDID''.
1.1 tv 876:
1.105 wiz 877: -C cdextras
878: Append cdextras to the CDEXTRA variable, which is a space-
1.104 wiz 879: separated list of files or directories that will be added to
880: the CD-ROM image that may be create by the ``iso-image'' or
1.87 apb 881: ``iso-image-source'' operations. Files will be added to the
882: root of the CD-ROM image, whereas directories will be copied
883: recursively. If relative paths are specified, they will be
884: converted to absolute paths before being used. Multiple paths
1.105 wiz 885: may be specified via multiple -C options, or via a single
1.87 apb 886: option whose argument contains multiple space-separated paths.
1.66 jnemeth 887:
1.105 wiz 888: -D dest Set the value of DESTDIR to dest. If a relative path is
1.104 wiz 889: specified, it will be converted to an absolute path before
890: being used.
891:
1.105 wiz 892: -E Set `expert' mode. This overrides various sanity checks, and
893: allows: DESTDIR does not have to be set to a non-root path for
894: builds, and MKUNPRIVED=yes does not have to be set when
1.104 wiz 895: building as a non-root user.
1.23 lukem 896:
1.105 wiz 897: Note: It is highly recommended that you know what you are doing
1.23 lukem 898: when you use this option.
1.19 lukem 899:
1.105 wiz 900: -h Print a help message.
1.51 wiz 901:
1.105 wiz 902: -j njob Run up to njob make(1) subjobs in parallel; passed through to
1.74 apb 903: make(1). If you see failures for reasons other than running
1.105 wiz 904: out of memory while using build.sh with -j, please save
1.104 wiz 905: complete build logs so the failures can be analyzed.
1.74 apb 906:
1.105 wiz 907: To achieve the fastest builds, -j values between (1 + the
1.104 wiz 908: number of CPUs) and (2 * the number of CPUs) are recommended.
909: Use lower values on machines with limited memory or I/O
910: bandwidth.
911:
1.105 wiz 912: -M obj Set MAKEOBJDIRPREFIX to obj. Unsets MAKEOBJDIR. See ``-O
1.106 wiz 913: obj'' for more information.
1.104 wiz 914:
1.105 wiz 915: For instance, if the source directory is /usr/src, a setting of
916: ``-M /usr/obj'' will place build-time files under
917: /usr/obj/usr/src/bin, /usr/obj/usr/src/lib,
918: /usr/obj/usr/src/usr.bin, and so forth.
1.88 apb 919:
1.73 apb 920: If a relative path is specified, it will be converted to an
1.105 wiz 921: absolute path before being used. build.sh imposes the
922: restriction that the argument to the -M option must not begin
1.104 wiz 923: with a ``$'' (dollar sign) character; otherwise it would be too
924: difficult to determine whether the value is an absolute or a
925: relative path. If the directory does not already exist,
1.105 wiz 926: build.sh will create it.
1.18 lukem 927:
1.109 apb 928: -m mach Set the value of MACHINE to mach, unless the mach argument is
929: an alias that refers to a MACHINE/MACHINE_ARCH pair, in which
930: case both MACHINE and MACHINE_ARCH are set from the alias.
931: Such aliases are interpreted entirely by build.sh; they are not
932: used by any other part of the build system. The MACHINE_ARCH
933: setting implied by mach will override any value of MACHINE_ARCH
934: in the process environment, but will not override a value set
935: by the -a option. All cross builds require -m, but if unset on
936: a NetBSD host, the host's value of MACHINE will be detected and
937: used automatically.
938:
939: See the list-arch operation for a way to get a list of valid
940: MACHINE and MACHINE_ARCH settings.
1.1 tv 941:
1.105 wiz 942: -N noiselevel
1.46 lukem 943: Set the ``noisyness'' level of the build, by setting
1.105 wiz 944: MAKEVERBOSE to noiselevel.
1.45 lukem 945:
1.105 wiz 946: -n Show the commands that would be executed by build.sh, but do
1.1 tv 947: not make any changes. This is similar in concept to ``make
948: -n''.
949:
1.105 wiz 950: -O obj Create an appropriate transform macro for MAKEOBJDIR that will
951: place the built object files under obj. Unsets
952: MAKEOBJDIRPREFIX.
1.88 apb 953:
1.105 wiz 954: For instance, a setting of ``-O /usr/obj'' will place build-
955: time files under /usr/obj/bin, /usr/obj/lib, /usr/obj/usr.bin,
1.88 apb 956: and so forth.
957:
958: If a relative path is specified, it will be converted to an
1.105 wiz 959: absolute path before being used. build.sh imposes the
960: restriction that the argument to the -O option must not contain
1.104 wiz 961: a ``$'' (dollar sign) character. If the directory does not
1.105 wiz 962: already exist, build.sh will create it.
1.73 apb 963:
1.105 wiz 964: In normal use, exactly one of the -M or -O options should be
965: specified. If neither -M nor -O is specified, then a default
1.78 apb 966: object directory will be chosen according to rules in
967: <bsd.obj.mk>. Relying on this default is not recommended
968: because it is determined by complex rules that are influenced
969: by the values of several variables and by the location of the
970: source directory.
1.18 lukem 971:
1.109 apb 972: Note that placing the obj directory location outside of the
973: default source tree hierarchy makes it easier to manually clear
974: out old files in the event the ``make cleandir'' operation is
975: unable to do so. (See CAVEATS below.)
976:
977: Note also that use of one of -M or -O is the only means of
978: building multiple machine architecture userlands from the same
979: source tree without cleaning between builds (in which case, one
980: would specify distinct obj locations for each).
981:
1.105 wiz 982: -o Set the value of MKOBJDIRS to ``no''. Otherwise, it will be
1.70 dholland 983: automatically set to ``yes''. This default is opposite to the
1.105 wiz 984: behaviour when not using build.sh.
1.1 tv 985:
1.105 wiz 986: -R rel Set the value of RELEASEDIR to rel. If a relative path is
1.59 apb 987: specified, it will be converted to an absolute path before
988: being used.
1.18 lukem 989:
1.105 wiz 990: -r Remove the contents of DESTDIR and TOOLDIR before building
1.1 tv 991: (provides a clean starting point). This will skip deleting
1.105 wiz 992: DESTDIR if building on a native system to the root directory.
1.1 tv 993:
1.105 wiz 994: -S seed Change the value of BUILDSEED to seed. This should rarely be
1.72 perry 995: necessary.
996:
1.105 wiz 997: -T tools Set the value of TOOLDIR to tools. If a relative path is
1.104 wiz 998: specified, it will be converted to an absolute path before
999: being used. If set, the bootstrap ``make'' will only be
1000: rebuilt if the source files for make(1) have changed.
1001:
1.105 wiz 1002: -U Set MKUNPRIVED=yes.
1.104 wiz 1003:
1.105 wiz 1004: -u Set MKUPDATE=yes.
1.104 wiz 1005:
1.105 wiz 1006: -V var=[value]
1007: Set the environment variable var to an optional value. This is
1008: propagated to the nbmake wrapper.
1009:
1010: -w wrapper
1011: Create the nbmake wrapper script (see below) in a custom
1012: location, specified by wrapper. This allows, for instance, to
1013: place the wrapper in PATH automatically. Note that wrapper is
1.59 apb 1014: the full name of the file, not just a directory name. If a
1015: relative path is specified, it will be converted to an absolute
1016: path before being used.
1.1 tv 1017:
1.105 wiz 1018: -X x11src
1019: Set the value of X11SRCDIR to x11src. If a relative path is
1.59 apb 1020: specified, it will be converted to an absolute path before
1021: being used.
1.49 lukem 1022:
1.105 wiz 1023: -x Set MKX11=yes.
1.49 lukem 1024:
1.105 wiz 1025: -Z var Unset ("zap") the environment variable var. This is propagated
1026: to the nbmake wrapper.
1.40 lukem 1027:
1.105 wiz 1028: The "nbmake-MACHINE" wrapper script
1029: If using the build.sh script to build NetBSD, a nbmake-MACHINE script
1030: will be created in TOOLDIR/bin upon the first build to assist in building
1.1 tv 1031: subtrees on a cross-compile host.
1032:
1.105 wiz 1033: nbmake-MACHINE can be invoked in lieu of make(1), and will instead call
1034: the up-to-date version of ``nbmake'' installed into TOOLDIR/bin with
1035: several key variables pre-set, including MACHINE, MACHINE_ARCH, and
1036: TOOLDIR. nbmake-MACHINE will also set variables specified with -V, and
1037: unset variables specified with -Z.
1.40 lukem 1038:
1.105 wiz 1039: This script can be symlinked into a directory listed in PATH, or called
1.1 tv 1040: with an absolute path.
1041:
1.105 wiz 1042: EXAMPLES
1.78 apb 1043: 1. % ./build.sh [options] tools kernel=GENERIC
1.28 lukem 1044:
1045: Build a new toolchain, and use the new toolchain to configure and
1046: build a new GENERIC kernel.
1047:
1.78 apb 1048: 2. % ./build.sh [options] -U distribution
1.28 lukem 1049:
1.105 wiz 1050: Using unprivileged mode, build a complete distribution to a DESTDIR
1051: directory that build.sh selects (and will display).
1.28 lukem 1052:
1.78 apb 1053: 3. # ./build.sh [options] -U install=/
1.28 lukem 1054:
1.105 wiz 1055: As root, install to / the distribution that was built by example 2.
1056: Even though this is run as root, -U is required so that the
1057: permissions stored in DESTDIR/METALOG are correctly applied to the
1058: files as they're copied to /.
1.28 lukem 1059:
1.78 apb 1060: 4. % ./build.sh [options] -U -u release
1.28 lukem 1061:
1.105 wiz 1062: Using unprivileged mode, build a complete release to DESTDIR and
1063: RELEASEDIR directories that build.sh selects (and will display).
1064: MKUPDATE=yes (-u) is set to prevent the ``make cleandir'', so that
1.38 lukem 1065: if this is run after example 2, it doesn't need to redo that portion
1066: of the release build.
1.16 lukem 1067:
1.105 wiz 1068: OBSOLETE VARIABLES
1069: NBUILDJOBS Use the make(1) option -j instead.
1.15 lukem 1070:
1.105 wiz 1071: USE_NEW_TOOLCHAIN
1.15 lukem 1072: The new toolchain is now the default. To disable, use
1.105 wiz 1073: TOOLCHAIN_MISSING=yes.
1.10 sommerfe 1074:
1.105 wiz 1075: SEE ALSO
1.62 apb 1076: make(1), hier(7), release(7), etcupdate(8), postinstall(8), sysinst(8),
1.105 wiz 1077: pkgsrc/sysutils/cdrtools
1.1 tv 1078:
1.105 wiz 1079: HISTORY
1080: The build.sh based build scheme was introduced for NetBSD 1.6 as
1081: USE_NEW_TOOLCHAIN, and re-worked to TOOLCHAIN_MISSING after that.
1.1 tv 1082:
1.109 apb 1083: CAVEATS
1084: After significant updates to third-party components in the source tree,
1085: the ``make cleandir'' operation may be insufficient to clean out old
1086: files in object directories. Instead, one may have to manually remove
1087: the files. Consult the UPDATING file for notices concerning this.
1088:
1089: NetBSD August 7, 2014 NetBSD
CVSweb <webmaster@jp.NetBSD.org>