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