version 1.1, 2001/11/01 16:34:21 |
version 1.13, 2002/07/22 09:49:05 |
|
|
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 setting of USE_NEW_TOOLCHAIN in /etc/mk.conf or |
as indicated by the default setting of USE_NEW_TOOLCHAIN in <bsd.own.mk>. |
<bsd.own.mk>. Platforms which have not yet been switched to the new |
Platforms which have not yet been switched to the new toolchain should |
toolchain should continue building traditionally, using the notes speci- |
continue building traditionally, using the notes specified in the file |
fied in the file UPDATING. |
UPDATING. |
|
|
REQUIREMENTS |
REQUIREMENTS |
NetBSD is designed to be buildable on most POSIX-compliant host systems. |
NetBSD is designed to be buildable on most POSIX-compliant host systems. |
|
|
|
|
BUILDING.mdoc This document (in -mdoc troff format; the original copy). |
BUILDING.mdoc This document (in -mdoc troff format; the original copy). |
|
|
BUILDING.html This document (in formatted HTML). |
BUILDING This document (in plaintext). |
|
|
BUILDING.txt This document (in plaintext). |
|
|
|
Makefile The main Makefile for NetBSD; should only be run for na- |
Makefile The main Makefile for NetBSD; should only be run for na- |
tive builds with an appropriately up-to-date version of |
tive builds with an appropriately up-to-date version of |
|
|
described in release(7). |
described in release(7). |
|
|
CONFIGURATION |
CONFIGURATION |
|
Environment variables |
|
Several environment variables control the behaviour of NetBSD builds. |
|
|
|
MACHINE Machine type. |
|
|
|
MACHINE_ARCH Machine architecture. |
|
|
|
MAKE Path name to invoke make(1) as. |
|
|
|
MAKEFLAGS Flags to invoke make(1) with. |
|
|
|
MAKEOBJDIR Directory to use as the .OBJDIR for the current direc- |
|
tory. Used only if MAKEOBJDIRPREFIX is not defined. |
|
MAKEOBJDIR can only be provided in the environment. |
|
|
|
MAKEOBJDIRPREFIX Top level directory of the object directory tree. If |
|
this is defined, ${MAKEOBJDIRPREFIX}/${.CURDIR} is used |
|
as the .OBJDIR for the current directory. The current |
|
directory may be read only. MAKEOBJDIRPREFIX can only |
|
be provided in the environment. |
|
|
"make" variables |
"make" variables |
Several variables control the behavior of NetBSD builds. Unless other- |
Several variables control the behavior of NetBSD builds. Unless other- |
wise specified, these variables may be set in either the process environ- |
wise specified, these variables may be set in either the process environ- |
ment or the make(1) configuration file specified by MAKECONF. |
ment or the make(1) configuration file specified by MAKECONF. |
|
|
|
BUILDID Identifier for the build. The identifier will be appended to |
|
object directory names, and can be consulted in the make(1) |
|
configuration file in order to set additional build parame- |
|
ters, such as compiler flags. |
|
|
DESTDIR Directory to contain the built NetBSD system. If set, spe- |
DESTDIR Directory to contain the built NetBSD system. If set, spe- |
cial options are passed to the compilation tools to prevent |
cial options are passed to the compilation tools to prevent |
their default use of the host system's /usr/include, |
their default use of the host system's /usr/include, |
/usr/lib, and so forth. This pathname should not end with a |
/usr/lib, and so forth. This pathname should not end with a |
slash (/) character (for installation into the system's root |
slash (/) character (for installation into the system's root |
directory, set DESTDIR to an empty string). |
directory, set DESTDIR to an empty string). The directory |
|
must reside on a file system which supports long file names |
|
and hard links. |
|
|
Default: Empty string if USETOOLS is ``yes''; unset other- |
Default: Empty string if USETOOLS is ``yes''; unset other- |
wise. |
wise. |
|
|
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
MKHOSTOBJ Can be set to ``yes'' or ``no''. If set to ``yes'', then for |
|
programs intended to be run on the compile host, the name, |
|
release, and architecture of the host operating system will |
|
be suffixed to the name of the object directory created by |
|
``make obj''. (This allows multiple host systems to compile |
|
NetBSD for a single target.) If set to ``no'', then programs |
|
built to be run on the compile host will use the same object |
|
directory names as programs built to be run on the target. |
|
|
|
Default: ``no'' |
|
|
MKINFO Can be set to ``yes'' or ``no''. Indicates whether GNU Info |
MKINFO Can be set to ``yes'' or ``no''. Indicates whether GNU Info |
files, used for the documentation for most of the compilation |
files, used for the documentation for most of the compilation |
tools, will be created and installed during a build. |
tools, will be created and installed during a build. |
|
|
|
|
Default: Unset. |
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 |
UPDATE If set, then all install operations intended to write to |
DESTDIR will compare file timestamps before installing, and |
DESTDIR will compare file timestamps before installing, and |
skip the install phase if the destination files are up-to- |
skip the install phase if the destination files are up-to- |
|
|
clude files). |
clude files). |
|
|
"make" variables for full builds |
"make" variables for full builds |
These variables only affect the top level ``Makefile'' and do not manual- |
These variables only affect the top level ``Makefile'' and do not affect |
ly 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 |
MKOBJDIRS Can be set to ``yes'' or ``no''. Indicates whether object |
directories will be created automatically (via a ``make |
directories will be created automatically (via a ``make |
|
|
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
MKTOOLS Indicates whether the host tools will be built and in- |
NBUILDJOBS Now obsolete. Use the make(1) option -j, instead (see be- |
stalled automatically if they are out-of-date. |
low) |
|
|
yes Build tools as needed into TOOLDIR, but only if the |
|
tools in question are out-of-date. |
|
|
|
no Do not update the tools in TOOLDIR; halt the build |
|
as a safety precaution if tools are out-of-date. |
|
|
|
always |
|
Always rebuild the tools in TOOLDIR from scratch |
|
during a build. This is similar to the standard |
|
NetBSD source tree build method, but is not typi- |
|
cally required for host tools. |
|
|
|
Default: ``yes'' |
|
|
|
NBUILDJOBS If set, specifies the number of parallel make(1) processes |
|
that should be run simultaneously. This can speed up |
|
builds on SMP machines, or machines with much more CPU |
|
power than I/O availability. This should be used instead |
|
of the make(1) option -j, in order to ensure proper order- |
|
ing of build components. |
|
|
|
Default: Unset. |
Default: Unset. |
|
|
|
|
This is only a summary of options available to make(1); only the options |
This is only a summary of options available to make(1); only the options |
used most frequently with NetBSD builds are listed here. |
used most frequently with NetBSD builds are listed here. |
|
|
|
-j njob Run up to njob make(1) subjobs in parallel. Makefiles should |
|
use .WAIT or have explicit dependancies as necessary to en- |
|
force build ordering. If you see build failures with -j, |
|
please save complete build logs so the failures can be ana- |
|
lyzed. |
|
|
-m dir Specify the default directory for searching for system Make- |
-m dir Specify the default directory for searching for system Make- |
file segments, mainly the <bsd.*.mk> files. When building any |
file segments, mainly the <bsd.*.mk> files. When building any |
full NetBSD source tree, this should be set to the |
full NetBSD source tree, this should be set to the |
|
|
dependency changes. |
dependency changes. |
|
|
dependall Does a ``make depend'' immediately followed by a ``make all''. |
dependall Does a ``make depend'' immediately followed by a ``make all''. |
This combined target recurses as an atomic unit, so that the |
This improves cache locality of the build since both passes |
``make depend'' phase can participate in make -j parallelism. |
read the source files in their entirety. |
|
|
includes Build and install system header files. Typically needed be- |
includes Build and install system header files. Typically needed be- |
fore any system libraries or programs can be built. |
fore any system libraries or programs can be built. |
|
|
|
|
-a arch Set the value of MACHINE_ARCH to arch. |
-a arch Set the value of MACHINE_ARCH to arch. |
|
|
|
-B buildid |
|
Set the value of BUILDID to buildid. This will also append the |
|
build idenfitier to the name of the ``make'' wrapper script so |
|
that the resulting name is of the form ``nbmake-MACHINE- |
|
BUILDID''. |
|
|
-b Bootstrap ``make'' and create a nbmake-MACHINE script (see be- |
-b Bootstrap ``make'' and create a nbmake-MACHINE script (see be- |
low). |
low). |
|
|
-j njob Set the value of NBUILDJOBS to njob. This provides similar |
-d Build a full distribution. This differs from a normal build in |
functionality to the familiar ``make -j'', but preserves the |
that etc files will also be installed. Note this does not |
ordering of the top level ``make build''. |
build a ``release''; no release sets are placed in ${RE- |
|
LEASEDIR}. |
|
|
|
-j njob Passed through to make(1). Makefiles should use .WAIT or have |
|
explicit dependancies as necessary to enforce build ordering. |
|
If you see build failures with -j, please save complete build |
|
logs so the failures can be analyzed. |
|
|
-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 |
|
|
|
|
-D dest Set the value of DESTDIR to dest. |
-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 |
-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 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, and so forth. |
|
|
-R rel Set the value of RELEASEDIR to rel. Setting this option will |
-R rel Set the value of RELEASEDIR to rel. Setting this option will |
|
|
``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. |
|
|
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. |
|
|
|
OBSOLETE VARIABLES |
|
NBUILDJOBS Now obsolete. Use the make(1) option -j, instead. |
|
|
SEE ALSO |
SEE ALSO |
make(1), hier(7), release(7) |
make(1), hier(7), release(7) |
|
|
|
|
current'' development sources between NetBSD 1.5 and NetBSD 1.6. |
current'' development sources between NetBSD 1.5 and NetBSD 1.6. |
|
|
BUGS |
BUGS |
Many platforms are not yet using the USE_NEW_TOOLCHAIN system. |
A few platforms are not yet using the USE_NEW_TOOLCHAIN system. |
|
|
NetBSD October 29, 2001 8 |
NetBSD May 3, 2002 8 |