version 1.26, 2003/01/29 22:50:08 |
version 1.42, 2003/08/19 10:00:29 |
|
|
|
|
FILES |
FILES |
Source tree layout |
Source tree layout |
|
|
doc/BUILDING.mdoc |
doc/BUILDING.mdoc |
This document (in -mdoc troff format; the original copy). |
This document (in -mdoc troff format; the original copy). |
|
|
|
|
|
|
distrib/, etc/ |
distrib/, etc/ |
Sources for items used when making a full release snap- |
Sources for items used when making a full release snap- |
shot, such as files installed in /etc on the destination |
shot, such as files installed in DESTDIR/etc on the desti- |
system, boot media, and release notes. |
nation system, boot media, and release notes. |
|
|
regress/ Regression test harness. Can be cross-compiled, but only |
regress/ Regression test harness. Can be cross-compiled, but only |
run natively. |
run natively. |
|
|
|
|
MAKEOBJDIR Directory to use as the .OBJDIR for the current direc- |
MAKEOBJDIR Directory to use as the .OBJDIR for the current direc- |
tory. Used only if MAKEOBJDIRPREFIX is not defined. |
tory. Used only if MAKEOBJDIRPREFIX is not defined. |
MAKEOBJDIR can only be provided in the environment. |
MAKEOBJDIR can only be provided in the environment or |
|
via the -O flag of build.sh. |
|
|
MAKEOBJDIRPREFIX Top level directory of the object directory tree. If |
MAKEOBJDIRPREFIX Top level directory of the object directory tree. If |
this is defined, ${MAKEOBJDIRPREFIX}/${.CURDIR} is used |
this is defined, ${MAKEOBJDIRPREFIX}/${.CURDIR} is used |
as the .OBJDIR for the current directory. The current |
as the .OBJDIR for the current directory. The current |
directory may be read only. MAKEOBJDIRPREFIX can only |
directory may be read only. MAKEOBJDIRPREFIX can only |
be provided in the environment. |
be provided in the environment or via the -M flag of |
|
build.sh. |
|
|
"make" variables |
"make" variables |
Several variables control the behavior of NetBSD builds. Unless other- |
Several variables control the behavior of NetBSD builds. Unless other- |
|
|
Default: Empty string if USETOOLS is ``yes''; unset other- |
Default: Empty string if USETOOLS is ``yes''; unset other- |
wise. |
wise. |
|
|
|
Note: build.sh will provide a default of destdir.MACHINE (in |
|
the top-level .OBJDIR) unless run in `expert' mode |
|
|
MAKECONF The name of the make(1) configuration file. Only settable in |
MAKECONF The name of the make(1) configuration file. Only settable in |
the process environment. |
the process environment. |
|
|
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
MKDOC Can be set to ``yes'' or ``no''. Indicates whether system |
MKDOC Can be set to ``yes'' or ``no''. Indicates whether system |
documentation destined for /usr/share/doc will be installed |
documentation destined for DESTDIR/usr/share/doc will be in- |
during a build. |
stalled during a build. |
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
|
MKLINT Can be set to ``yes'' or ``no''. Indicates whether lint(1) |
MKLINT Can be set to ``yes'' or ``no''. Indicates whether lint(1) |
will be run against portions of the NetBSD source code during |
will be run against portions of the NetBSD source code during |
the build, and whether lint libraries will be installed into |
the build, and whether lint libraries will be installed into |
/usr/libdata/lint. |
DESTDIR/usr/libdata/lint. |
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
|
code. |
code. |
|
|
MKSHARE Can be set to ``yes'' or ``no''. Indicates whether files |
MKSHARE Can be set to ``yes'' or ``no''. Indicates whether files |
destined to reside in /usr/share will be built and installed |
destined to reside in DESTDIR/usr/share will be built and in- |
during a build. If set to ``no'', then all of MKCATPAGES, |
stalled during a build. If set to ``no'', then all of |
MKDOC, MKINFO, MKMAN, and MKNLS will be set to ``no'' uncon- |
MKCATPAGES, MKDOC, MKINFO, MKMAN, and MKNLS will be set to |
ditionally. |
``no'' unconditionally. |
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
MKUNPRIVED Can be set to ``yes'' or ``no''. Indicates whether an un- |
|
privileged install will occur. The user, group, permissions, |
|
and file flags, will not be set on the installed item; in- |
|
stead the information will be appended to a file called |
|
METALOG in DESTDIR. The contents of METALOG is used during |
|
the generation of the distribution tar files to ensure that |
|
the appropriate file ownership is stored. |
|
|
|
Default: ``no'' |
|
|
|
MKUPDATE Can be set to ``yes'' or ``no''. Indicates whether all in- |
|
stall operations intended to write to DESTDIR will compare |
|
file timestamps before installing, and skip the install phase |
|
if the destination files are up-to-date. This also has im- |
|
plications on full builds (see next subsection). |
|
|
|
Default: ``no'' |
|
|
TOOLDIR Directory to hold the host tools, once built. This directory |
TOOLDIR Directory to hold the host tools, once built. This directory |
should be unique to a given host system and NetBSD source |
should be unique to a given host system and NetBSD source |
tree. (However, multiple targets may share the same TOOLDIR; |
tree. (However, multiple targets may share the same TOOLDIR; |
the target-dependent files have unique names.) If unset, a |
the target-dependent files have unique names.) If unset, a |
default based on the uname(1) information of the host plat- |
default based on the uname(1) information of the host plat- |
form will be created in the .OBJDIR of src/tools. |
form will be created in the .OBJDIR of src. |
|
|
Default: Unset. |
|
|
|
UNPRIVED If set, then an unprivileged install will occur. The user, |
|
group, permissions, and file flags, will not be set on the |
|
installed item; instead the information will be appended to a |
|
file called METALOG in DESTDIR. The contents of METALOG is |
|
used during the generation of the distribution tar files to |
|
ensure that the appropriate file ownership is stored. |
|
|
|
Default: Unset. |
|
|
|
UPDATE If set, then all install operations intended to write to |
|
DESTDIR will compare file timestamps before installing, and |
|
skip the install phase if the destination files are up-to- |
|
date. This also has implications on full builds (see next |
|
subsection). |
|
|
|
Default: Unset. |
Default: Unset. |
|
|
|
|
ject directories will be created automatically (via a |
ject directories will be created automatically (via a |
``make obj'' pass) at the start of a build. |
``make obj'' pass) at the start of a build. |
|
|
Default: ``yes'' |
Default: ``no'' |
|
|
|
MKUPDATE Can be set to ``yes'' or ``no''. If set, then in addi- |
|
tion to the effects described for MKUPDATE=yes above, |
|
this implies the effects of NOCLEANDIR (i.e., ``make |
|
cleandir'' is avoided). |
|
|
|
Default: ``no'' |
|
|
NBUILDJOBS Now obsolete. Use the make(1) option -j, instead (see |
NBUILDJOBS Now obsolete. Use the make(1) option -j, instead (see |
below) |
below) |
|
|
cause the system include files have changed. However, |
cause the system include files have changed. However, |
this option should not be used when updating the entire |
this option should not be used when updating the entire |
NetBSD source tree arbitrarily; it is suggested to use |
NetBSD source tree arbitrarily; it is suggested to use |
UPDATE in that case. |
MKUPDATE=yes in that case. |
|
|
Default: Unset. |
Default: Unset. |
|
|
|
|
|
|
Default: Unset. |
Default: Unset. |
|
|
UPDATE If set, then in addition to the effects described for |
Note: build.sh will provide a default of releasedir (in |
UPDATE above, this implies the effects of NOCLEANDIR. |
the top-level .OBJDIR) unless run in `expert' mode |
|
|
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 |
Few files will be installed to DESTDIR/dev, DESTDIR/etc, |
order to prevent user supplied configuration data from being |
DESTDIR/root or DESTDIR/var in order to prevent user supplied |
overwritten. |
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. |
|
|
the proper order. |
the proper order. |
|
|
distribution Do a ``make build'', and then install a full distribution |
distribution Do a ``make build'', and then install a full distribution |
into DESTDIR, including files in /dev, /etc, /root and |
into DESTDIR, including files in DESTDIR/dev, DESTDIR/etc, |
/var. |
DESTDIR/root and DESTDIR/var. |
|
|
buildworld As per ``make distribution'', except that it ensures that |
buildworld As per ``make distribution'', except that it ensures that |
DESTDIR is not the root directory. |
DESTDIR is not the root directory. |
|
|
distribution'' (as ``make build'' does not install all of |
distribution'' (as ``make build'' does not install all of |
the required files). |
the required files). |
|
|
|
sourcesets Create source sets of the source tree into |
|
RELEASEDIR/source/sets. |
|
|
release Do a ``make distribution'', build kernels, distribution me- |
release Do a ``make distribution'', build kernels, distribution me- |
dia, and install sets (this as per ``make sets''), and then |
dia, and install sets (this as per ``make sets''), and then |
package the system into a standard release layout as de- |
package the system into a standard release layout as de- |
|
|
|
|
tools Build and install the host tools from src/tools. |
tools Build and install the host tools from src/tools. |
|
|
|
install=idir Install the contents of DESTDIR to idir, using ``make |
|
installworld''. |
|
|
kernel=kconf Build a new kernel. The kconf argument is the name of a |
kernel=kconf Build a new kernel. The kconf argument is the name of a |
configuration file suitable for use by config(8). If kconf |
configuration file suitable for use by config(8). If kconf |
does not contain any `/' characters, the configuration file |
does not contain any `/' characters, the configuration file |
|
|
date tools, it is strongly recommended that the tools be |
date tools, it is strongly recommended that the tools be |
rebuilt (using the tools operation). |
rebuilt (using the tools operation). |
|
|
install=idir Install the contents of DESTDIR to idir, using ``make |
releasekernel=kconf |
installworld''. |
Install a gzip(1)ed copy of the kernel built by |
|
kernel=kconf into RELEASEDIR/MACHINE/binary/kernel, usually |
|
as netbsd-kconf.gz, although the ``netbsd'' prefix is de- |
|
termined from the ``config'' directives in kconf. |
|
|
sets Perform ``make sets''. |
sets Perform ``make sets''. |
|
|
|
sourcesets Perform ``make sourcesets''. |
|
|
The following command line options alter the behaviour of the above oper- |
The following command line options alter the behaviour of the above oper- |
ations: The following command line options alter the behaviour of the |
ations: The following command line options alter the behaviour of the |
build.sh operations described above: |
build.sh operations described above: |
|
|
-B buildid |
-B buildid |
Set the value of BUILDID to buildid. This will also append the |
Set the value of BUILDID to buildid. This will also append the |
build idenfitier to the name of the ``make'' wrapper script so |
build idenfitier to the name of the ``make'' wrapper script so |
that the resulting name is of the form ``nbmake-MACHINE- |
that the resulting name is of the form |
BUILDID''. |
``nbmake-MACHINE-BUILDID''. |
|
|
-D dest Set the value of DESTDIR to dest. |
-D dest Set the value of DESTDIR to dest. |
|
|
-E Set `expert' mode. This overrides various sanity checks, and |
-E Set `expert' mode. This overrides various sanity checks, and |
allows: DESTDIR does not have to be set to a non-root path for |
allows: DESTDIR does not have to be set to a non-root path for |
builds, and UNPRIVED does not have to be set when building as a |
builds, and MKUNPRIVED=yes does not have to be set when build- |
non-root user. |
ing as a non-root user. |
|
|
Note: It is highly recommended that you know what you are doing |
Note: It is highly recommended that you know what you are doing |
when you use this option. |
when you use this option. |
|
|
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. |
|
|
-M obj Set MAKEOBJDIRPREFIX to obj. |
-M obj Set MAKEOBJDIRPREFIX to obj. Unsets MAKEOBJDIR. |
|
|
-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, or mach is a special |
require -m, but if unset on a NetBSD host, the host's value of |
case listed below. All cross builds require -m, but if unset |
MACHINE will be detected and used automatically. |
on a NetBSD host, the host's value of MACHINE will be detected |
|
and used automatically. |
|
|
|
Some machines support multiple values for MACHINE_ARCH. For a |
|
given value of mach, the following MACHINE and MACHINE_ARCH |
|
values will result: |
|
|
|
mach MACHINE MACHINE_ARCH |
|
evbmips evbmips (not set) |
|
evbmips-eb evbmips mipseb |
|
evbmips-el evbmips mipsel |
|
evbsh3 evbsh3 (not set) |
|
evbsh3-eb evbsh3 sh3eb |
|
evbsh3-el evbsh3 sh3el |
|
sbmips sbmips (not set) |
|
sbmips-eb sbmips mipseb |
|
sbmips-el sbmips mipsel |
|
|
-n Show the commands that would be executed by build.sh, but do |
-n Show the commands that would be executed by build.sh, but do |
not make any changes. This is similar in concept to ``make |
not make any changes. This is similar in concept to ``make |
|
|
-O obj Create an appropriate transform macro for MAKEOBJDIR that will |
-O obj Create an appropriate transform macro for MAKEOBJDIR that will |
place the built object files under obj. For instance, a set- |
place the built object files under obj. For instance, a set- |
ting of /usr/obj will place build-time files under |
ting of /usr/obj will place build-time files under |
/usr/obj/bin, /usr/obj/lib, and so forth. |
/usr/obj/bin, /usr/obj/lib, /usr/obj/usr.bin, and so forth. |
|
Unsets MAKEOBJDIRPREFIX. |
|
|
-o Set the value of MKOBJDIRS to ``no''. |
-o Set the value of MKOBJDIRS to ``no''. Otherwise, it will be |
|
automatically set to ``yes'' (which is opposite to the default |
|
behaviour). |
|
|
-R rel Set the value of RELEASEDIR to rel. |
-R rel Set the value of RELEASEDIR to rel. |
|
|
|
|
``make'' will only be rebuilt as needed (when the source files |
``make'' will only be rebuilt as needed (when the source files |
for make(1) change). |
for make(1) change). |
|
|
-U Set the UNPRIVED variable. |
-U Set MKUNPRIVED=yes. |
|
|
-u Set the UPDATE variable. |
-u Set MKUPDATE=yes. |
|
|
-V var=[value] |
-V var=[value] |
Set the variable var to value (which is optional). |
Set the environment variable var to an optional value. This is |
|
propagated to the nbmake wrapper. |
|
|
-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- |
|
|
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. |
|
|
|
-Z var Unset ("zap") the environment variable var. This is propagated |
|
to the nbmake wrapper. |
|
|
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 |
|
|
nbmake-MACHINE can be invoked in lieu of make(1), and will instead call |
nbmake-MACHINE can be invoked in lieu of make(1), and will instead call |
the up-to-date version of ``nbmake'' installed into TOOLDIR/bin with sev- |
the up-to-date version of ``nbmake'' installed into TOOLDIR/bin with sev- |
eral key variables pre-set, including MACHINE, MACHINE_ARCH, and TOOLDIR. |
eral key variables pre-set, including MACHINE, MACHINE_ARCH, and TOOLDIR. |
|
build.sh will also set variables specified with -V, and unset variables |
|
specified with -Z. |
|
|
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 |
EXAMPLES |
./build.sh tools kernel=GENERIC |
1. ./build.sh tools kernel=GENERIC |
Build a new toolchain, and use the new toolchain to configure |
|
and build a new GENERIC kernel. |
Build a new toolchain, and use the new toolchain to configure and |
|
build a new GENERIC kernel. |
./build.sh -U -D /path/to/DESTDIR distribution |
|
Using unprivileged mode, build a complete distribution in |
2. ./build.sh -U distribution |
/path/to/DESTDIR. |
|
|
Using unprivileged mode, build a complete distribution to a DESTDIR |
# ./build.sh -U -D /path/to/DESTDIR installworld=/ |
directory that build.sh selects (and will display). |
As root, install the distribution that was built with unprivi- |
|
leged mode from /path/to/DESTDIR to /. (Even though this is |
3. ./build.sh -U install=/ |
run as root, -U is required so that the permissions stored in |
|
/path/to/DESTDIR/METALOG are correctly applied to the files as |
As root, install to / the distribution that was built by example 2. |
they're copied to /). |
Even though this is run as root, -U is required so that the permis- |
|
sions stored in DESTDIR/METALOG are correctly applied to the files |
./build.sh -U -D /path/to/DESTDIR -R /path/to/RELEASE release |
as they're copied to /. |
Using unprivileged mode, build a complete release in |
|
/path/to/dir/RELEASE. |
4. ./build.sh -U -u release |
|
|
|
Using unprivileged mode, build a complete release to DESTDIR and |
|
RELEASEDIR directories that build.sh selects (and will display). |
|
MKUPDATE=yes (-u) is set to prevent the ``make cleandir'', so that |
|
if this is run after example 2, it doesn't need to redo that portion |
|
of the release build. |
|
|
OBSOLETE VARIABLES |
OBSOLETE VARIABLES |
NBUILDJOBS Use the make(1) option -j, instead. |
NBUILDJOBS Use the make(1) option -j, instead. |
|
|
BUGS |
BUGS |
A few platforms are not yet using this build system. |
A few platforms are not yet using this build system. |
|
|
NetBSD January 30, 2003 10 |
NetBSD August 7, 2003 NetBSD |