version 1.12, 2002/05/13 01:44:34 |
version 1.21, 2003/01/04 12:55:32 |
|
|
plementation are noted specially, as with the note below: |
plementation are noted specially, as with the note below: |
|
|
Note: This document applies only to platforms which use the new toolchain |
Note: This document applies only to platforms which use the new toolchain |
as indicated by the default setting of USE_NEW_TOOLCHAIN in <bsd.own.mk>. |
as indicated by the default setting of TOOLCHAIN_MISSING in <bsd.own.mk>. |
Platforms which have not yet been switched to the new toolchain should |
Platforms which have not yet been switched to the new toolchain should |
continue building traditionally, using the notes specified in the file |
continue building traditionally, using the notes specified in the file |
UPDATING. |
UPDATING. |
|
|
FILES |
FILES |
Source tree layout |
Source tree layout |
|
|
BUILDING.mdoc This document (in -mdoc troff format; the original copy). |
doc/BUILDING.mdoc |
|
This document (in -mdoc troff format; the original copy). |
|
|
BUILDING This document (in plaintext). |
BUILDING This document (in plaintext). |
|
|
|
|
These variables only affect the top level ``Makefile'' and do not affect |
These variables only affect the top level ``Makefile'' and do not affect |
manually building subtrees of the NetBSD source code. |
manually building subtrees of the NetBSD source code. |
|
|
MKOBJDIRS Can be set to ``yes'' or ``no''. Indicates whether object |
INSTALLWORLDDIR Location for the ``make installworld'' target to install |
directories will be created automatically (via a ``make |
to. |
obj'' pass) at the start of a build. |
|
|
|
Default: ``yes'' |
Default: ``/'' |
|
|
NBUILDJOBS Now obsolete. Use the make(1) option -j, instead (see be- |
MKOBJDIRS Can be set to ``yes'' or ``no''. Indicates whether ob- |
low) |
ject directories will be created automatically (via a |
|
``make obj'' pass) at the start of a build. |
|
|
Default: Unset. |
Default: ``yes'' |
|
|
NOCLEANDIR If set, avoids the ``make cleandir'' phase of a full |
NBUILDJOBS Now obsolete. Use the make(1) option -j, instead (see |
build. This has the effect of allowing only changed files |
below) |
in a source tree to be recompiled. This can speed up |
|
builds when updating only a few files in the tree. |
|
|
|
Default: Unset. |
Default: Unset. |
|
|
NODISTRIBDIRS If set, avoids the ``make distrib-dirs'' phase of a full |
NOCLEANDIR If set, avoids the ``make cleandir'' phase of a full |
build. This skips running mtree(8) on DESTDIR, useful on |
build. This has the effect of allowing only changed |
systems where building as an unprivileged user, or where |
files in a source tree to be recompiled. This can speed |
it is known that the system-wide mtree files have not |
up builds when updating only a few files in the tree. |
changed. |
|
|
|
Default: Unset. |
Default: Unset. |
|
|
NOINCLUDES If set, avoids the ``make includes'' phase of a full |
NODISTRIBDIRS If set, avoids the ``make distrib-dirs'' phase of a full |
build. This has the effect of preventing make(1) from |
build. This skips running mtree(8) on DESTDIR, useful |
thinking that some programs are out-of-date simply because |
on systems where building as an unprivileged user, or |
the system include files have changed. However, this op- |
where it is known that the system-wide mtree files have |
tion should not be used when updating the entire NetBSD |
not changed. |
source tree arbitrarily; it is suggested to use UPDATE in |
|
that case. |
|
|
|
Default: Unset. |
Default: Unset. |
|
|
RELEASEDIR If set, specifies the directory to which a release(7) lay- |
NOINCLUDES If set, avoids the ``make includes'' phase of a full |
out will be written at the end of a ``make release''. |
build. This has the effect of preventing make(1) from |
|
thinking that some programs are out-of-date simply be- |
|
cause the system include files have changed. However, |
|
this option should not be used when updating the entire |
|
NetBSD source tree arbitrarily; it is suggested to use |
|
UPDATE in that case. |
|
|
Default: Unset. |
Default: Unset. |
|
|
UPDATE If set, then in addition to the effects described for UP- |
RELEASEDIR If set, specifies the directory to which a release(7) |
DATE above, this implies the effects of NOCLEANDIR. |
layout will be written at the end of a ``make release''. |
|
|
|
Default: Unset. |
|
|
|
UPDATE If set, then in addition to the effects described for |
|
UPDATE above, this implies the effects of NOCLEANDIR. |
|
|
BUILDING |
BUILDING |
"make" command line options |
"make" command line options |
|
|
fore any system libraries or programs can be built. |
fore any system libraries or programs can be built. |
|
|
install Install programs, libraries, and documentation into DESTDIR. |
install Install programs, libraries, and documentation into DESTDIR. |
|
Few files will be installed to /dev, /etc, /root or /var in |
|
order to prevent user supplied configuration data from being |
|
overwritten. |
|
|
lint Run lint(1) against the C source code, where appropriate, and |
lint Run lint(1) against the C source code, where appropriate, and |
generate system-installed lint libraries. |
generate system-installed lint libraries. |
|
|
Additional make(1) targets are usable specifically from the top source |
Additional make(1) targets are usable specifically from the top source |
level to facilitate building the entire NetBSD source tree. |
level to facilitate building the entire NetBSD source tree. |
|
|
build Build the entire NetBSD system. This orders portions of the |
build Build the entire NetBSD system. This orders portions of |
source tree such that prerequisites will be built in the prop- |
the source tree such that prerequisites will be built in |
er order. |
the proper order. |
|
|
release Do a ``make build'', then package the system into a standard |
distribution Do a ``make build'', and then install a full distribution |
release layout as described by release(7). This requires that |
into DESTDIR. |
RELEASEDIR be set (see above). |
|
|
buildworld As per ``make distribution'', except that it ensures that |
|
DESTDIR is not the root directory. |
|
|
|
installworld Install the distribution from DESTDIR to INSTALLWORLDDIR |
|
(which defaults to the root directory). Ensures that |
|
INSTALLWORLDDIR is the not root directory if cross compil- |
|
ing. |
|
|
|
Note: It is highly recommended that you upgrade your kernel |
|
and reboot before performing this operation. |
|
|
|
release Do a ``make build'', then package the system into a stan- |
|
dard release layout as described by release(7). This re- |
|
quires that RELEASEDIR be set (see above). |
|
|
regression-tests |
regression-tests |
Can only be run after building the regression tests in the di- |
Can only be run after building the regression tests in the |
rectory ``regress''. Runs the compiled regression tests on |
directory ``regress''. Runs the compiled regression tests |
the local host. |
on the local host. |
|
|
The "build.sh" script |
The "build.sh" script |
This script file is a Bourne shell script designed to build the entire |
This script file is a Bourne shell script designed to build the entire |
|
|
-b Bootstrap ``make'' and create a nbmake-MACHINE script (see be- |
-b Bootstrap ``make'' and create a nbmake-MACHINE script (see be- |
low). |
low). |
|
|
-d Build a full distribution. This differs from a normal build in |
-D dest Set the value of DESTDIR to dest. |
that etc files will also be installed. Note this does not |
|
build a ``release''; no release sets are placed in ${RE- |
-d Build a full distribution. This differs from a default build |
LEASEDIR}. |
in that files will also be installed to /dev, /etc, /root and |
|
/var. Note this does not build a ``release''; no release sets |
|
are placed in ${RELEASEDIR}. -d is implied by -R. |
|
|
|
-E Set `expert' mode; DESTDIR does not have to be set to a non- |
|
root path for builds when this is set. |
|
|
|
-i installworlddir |
|
Install the contents of DESTDIR to installworlddir after all |
|
other operations have completed, using the top level |
|
``installworld'' target. |
|
|
-j njob Passed through to make(1). Makefiles should use .WAIT or have |
-j njob Passed through to make(1). Makefiles should use .WAIT or have |
explicit dependancies as necessary to enforce build ordering. |
explicit dependancies as necessary to enforce build ordering. |
If you see build failures with -j, please save complete build |
If you see build failures with -j, please save complete build |
logs so the failures can be analyzed. |
logs so the failures can be analyzed. |
|
|
|
-k kernel |
|
Build a new kernel. The kernel argument is the name of a con- |
|
figuration file suitable for use by config(8). If kernel does |
|
not contain any `/' characters, the configuration file is ex- |
|
pected to be found in the KERNCONFDIR directory, which is typi- |
|
cally sys/arch/MACHINE/conf. The new kernel will be built in a |
|
subdirectory of KERNOBJDIR, which is typically |
|
sys/arch/MACHINE/compile or an associated object directory. In |
|
order to ensure that the kernel is built using up-to-date |
|
tools, it is strongly recommended that the tools be rebuilt |
|
(using the -t option) in a separate invocation of build.sh pri- |
|
or to using the -k option, or that the -t and -k options be |
|
used together in a single invocation of build.sh. |
|
|
|
-M obj Set MAKEOBJDIRPREFIX to obj. |
|
|
-m mach Set the value of MACHINE to mach. This will also override any |
-m mach Set the value of MACHINE to mach. This will also override any |
value of MACHINE_ARCH in the process environment with a value |
value of MACHINE_ARCH in the process environment with a value |
deduced from mach, unless -a is specified. All cross builds |
deduced from mach, unless -a is specified. All cross builds |
|
|
not make any changes. This is similar in concept to ``make |
not make any changes. This is similar in concept to ``make |
-n''. |
-n''. |
|
|
|
-O obj Create an appropriate transform macro for MAKEOBJDIR that will |
|
place the built object files under obj. For instance, a set- |
|
ting of /usr/obj will place build-time files under |
|
/usr/obj/bin, /usr/obj/lib, and so forth. |
|
|
-o Set the value of MKOBJDIRS to ``no''. |
-o Set the value of MKOBJDIRS to ``no''. |
|
|
|
-R rel Set the value of RELEASEDIR to rel. Setting this option will |
|
cause build.sh to run ``make release'' instead of ``make |
|
build''. |
|
|
-r Remove the contents of DESTDIR and TOOLDIR before building |
-r Remove the contents of DESTDIR and TOOLDIR before building |
(provides a clean starting point). This will skip deleting |
(provides a clean starting point). This will skip deleting |
DESTDIR if building on a native system to the root directory. |
DESTDIR if building on a native system to the root directory. |
|
|
|
-T tools Set the value of TOOLDIR to tools. If set, the bootstrap |
|
``make'' will only be rebuilt as needed (when the source files |
|
for make(1) change). |
|
|
-t Build and install the host tools from src/tools only. This op- |
-t Build and install the host tools from src/tools only. This op- |
tion implies -b. |
tion implies -b. |
|
|
|
-U Set the UNPRIVED variable. |
|
|
-u Set the UPDATE variable. |
-u Set the UPDATE variable. |
|
|
|
-V var=[value] |
|
Set the variable var to value (which is optional). This is |
|
useful for setting RELEASEDIR without actually building a re- |
|
lease. |
|
|
-w wrapper |
-w wrapper |
Create the nbmake wrapper script (see below) in a custom loca- |
Create the nbmake wrapper script (see below) in a custom loca- |
tion, specified by wrapper. This allows, for instance, to |
tion, specified by wrapper. This allows, for instance, to |
place the wrapper in PATH automatically. Note that wrapper is |
place the wrapper in PATH automatically. Note that wrapper is |
the full name of the file, not just a directory name. |
the full name of the file, not just a directory name. |
|
|
-D dest Set the value of DESTDIR to dest. |
|
|
|
-M obj Set MAKEOBJDIRPREFIX to obj. |
|
|
|
-O obj Create an appropriate transform macro for MAKEOBJDIR that will |
|
place the built object files under obj. For instance, a set- |
|
ting of /usr/obj will place build-time files files under |
|
/usr/obj/bin, /usr/obj/lib, and so forth. |
|
|
|
-R rel Set the value of RELEASEDIR to rel. Setting this option will |
|
cause build.sh to run ``make release'' instead of ``make |
|
build''. |
|
|
|
-T tools Set the value of TOOLDIR to tools. If set, the bootstrap |
|
``make'' will only be rebuilt as needed (when the source files |
|
for make(1) change). |
|
|
|
-U Set the UNPRIVED variable. |
|
|
|
The "nbmake-MACHINE" wrapper script |
The "nbmake-MACHINE" wrapper script |
If using the build.sh script to build NetBSD, a nbmake-MACHINE script |
If using the build.sh script to build NetBSD, a nbmake-MACHINE script |
will be created in TOOLDIR/bin upon the first build to assist in building |
will be created in TOOLDIR/bin upon the first build to assist in building |
|
|
This script can be symlinked into a directory listed in PATH, or called |
This script can be symlinked into a directory listed in PATH, or called |
with an absolute path. |
with an absolute path. |
|
|
|
EXAMPLES |
|
./build.sh -t |
|
Build a new toolchain. |
|
|
|
cd ${KERNCONFDIR} ; ${TOOLDIR}/bin/nbconfig GENERIC |
|
Use the new version of config(8) to prepare to build a new |
|
GENERIC kernel. |
|
|
|
cd ${KERNOBJDIR}/GENERIC ; ${TOOLDIR}/bin/nbmake-${MACHINE} dependall |
|
Use the new toolchain to build a new GENERIC kernel. |
|
|
|
./build.sh -t -k GENERIC |
|
Build a new toolchain, and use the new toolchain to configure |
|
and build a new GENERIC kernel. |
|
|
|
./build.sh -U -d |
|
Using unprivileged mode, build a complete distribution in |
|
DESTDIR. |
|
|
|
./build.sh -U -R /some/dir/RELEASE |
|
Using unprivileged mode, build a complete release in the speci- |
|
fied release directory. |
|
|
OBSOLETE VARIABLES |
OBSOLETE VARIABLES |
NBUILDJOBS Now obsolete. Use the make(1) option -j, instead. |
NBUILDJOBS Use the make(1) option -j, instead. |
|
|
|
USE_NEW_TOOLCHAIN |
|
The new toolchain is now the default. To disable, use |
|
TOOLCHAIN_MISSING=yes. |
|
|
SEE ALSO |
SEE ALSO |
make(1), hier(7), release(7) |
make(1), hier(7), release(7) |
|
|
HISTORY |
HISTORY |
The USE_NEW_TOOLCHAIN based build scheme was introduced in the ``NetBSD- |
The build.sh based build scheme was introduced for NetBSD 1.6 as |
current'' development sources between NetBSD 1.5 and NetBSD 1.6. |
USE_NEW_TOOLCHAIN, and re-worked to TOOLCHAIN_MISSING after that. |
|
|
BUGS |
BUGS |
A few platforms are not yet using the USE_NEW_TOOLCHAIN system. |
A few platforms are not yet using this build system. |
|
|
NetBSD May 3, 2002 8 |
NetBSD January 4, 2003 10 |