version 1.47, 2003/12/19 12:06:45 |
version 1.54, 2006/01/04 15:35:20 |
|
|
BUILDING(8) NetBSD System Manager's Manual BUILDING(8) |
BUILDING(8) NetBSD System Manager's Manual BUILDING(8) |
|
|
NAME |
NAME |
BUILDING - Procedure for building NetBSD from source code. |
BUILDING -- Procedure for building NetBSD from source code. |
|
|
STATUS |
STATUS |
This document is a work-in-progress. As such, the information described |
This document is a work-in-progress. As such, the information described |
|
|
host system to create a build toolchain for the target architecture. The |
host system to create a build toolchain for the target architecture. The |
host system must have at least C and C++ compilers in order to create the |
host system must have at least C and C++ compilers in order to create the |
toolchain (make is not required); all other tools are created as part of |
toolchain (make is not required); all other tools are created as part of |
the NetBSD build process. |
the NetBSD build process. (See the environment variables section below |
|
if you need to override or manually select your compilers.) |
Note: A couple of host toolchain components are not yet available |
|
in the tools directory. Also, some tools use non-POSIX, non-ANSI C |
|
extensions and need to be standardized. As a result, cross-compil- |
|
ing from systems other than NetBSD is not currently supported. |
|
|
|
FILES |
FILES |
Source tree layout |
Source tree layout |
|
|
|
|
BUILDING This document (in plaintext). |
BUILDING This document (in plaintext). |
|
|
|
tools/compat/README |
|
Special notes for cross-hosting a NetBSD build on non- |
|
NetBSD platforms. |
|
|
Makefile The main Makefile for NetBSD; should only be run for |
Makefile The main Makefile for NetBSD; should only be run for |
native builds with an appropriately up-to-date version of |
native builds with an appropriately up-to-date version of |
NetBSD make(1). (For building from out-of-date systems or |
NetBSD make(1). (For building from out-of-date systems or |
|
|
any of these directories are missing, they will be skipped |
any of these directories are missing, they will be skipped |
during the build. |
during the build. |
|
|
|
x11/ ``Reachover'' build structure for X11R6; the source is in |
|
X11SRCDIR. |
|
|
Build tree layout |
Build tree layout |
The NetBSD build tree is described in hier(7), and the release layout is |
The NetBSD build tree is described in hier(7), and the release layout is |
described in release(7). |
described in release(7). |
|
|
Environment variables |
Environment variables |
Several environment variables control the behaviour of NetBSD builds. |
Several environment variables control the behaviour of NetBSD builds. |
|
|
|
HOST_CC Path name to C compiler used to create the toolchain. |
|
|
|
HOST_CXX Path name to C++ compiler used to create the toolchain. |
|
|
MACHINE Machine type. |
MACHINE Machine type. |
|
|
MACHINE_ARCH Machine architecture. |
MACHINE_ARCH Machine architecture. |
|
|
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
MKTTINTERP Can be set to ``yes'' or ``no''. For X builds, decides if |
|
the TrueType bytecode interpreter is turned on. See |
|
http://www.freetype.org/patents.html for details. |
|
|
|
Default: ``no'' |
|
|
MKUNPRIVED Can be set to ``yes'' or ``no''. Indicates whether an |
MKUNPRIVED Can be set to ``yes'' or ``no''. Indicates whether an |
unprivileged install will occur. The user, group, permis- |
unprivileged install will occur. The user, group, permis- |
sions, and file flags, will not be set on the installed item; |
sions, and file flags, will not be set on the installed |
instead the information will be appended to a file called |
items; instead the information will be appended to a file |
METALOG in DESTDIR. The contents of METALOG is used during |
called METALOG in DESTDIR. The contents of METALOG are used |
the generation of the distribution tar files to ensure that |
during the generation of the distribution tar files to ensure |
the appropriate file ownership is stored. |
that the appropriate file ownership is stored. |
|
|
Default: ``no'' |
Default: ``no'' |
|
|
|
|
|
|
Default: ``no'' |
Default: ``no'' |
|
|
|
MKX11 Can be set to ``yes'' or ``no''. Indicates whether X11R6 is |
|
built from X11SRCDIR. |
|
|
|
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; |
|
|
preserve traditional semantics of the <bsd.*.mk> make(1) |
preserve traditional semantics of the <bsd.*.mk> make(1) |
include files). |
include files). |
|
|
|
X11SRCDIR Directory containing the X11R6 source. The main X11R6 source |
|
is found in X11SRCDIR/xfree/xc. |
|
|
|
Default: ``/usr/xsrc'' |
|
|
"make" variables for full builds |
"make" variables for full builds |
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. |
|
|
|
|
BUILDING |
BUILDING |
"make" command line options |
"make" command line options |
This is only a summary of options available to make(1); only the options |
This is not a summary of all the options available to make(1); only the |
used most frequently with NetBSD builds are listed here. |
options used most frequently with NetBSD builds are listed here. |
|
|
-j njob Run up to njob make(1) subjobs in parallel. Makefiles should |
-j njob Run up to njob make(1) subjobs in parallel. Makefiles should |
use .WAIT or have explicit dependancies as necessary to |
use .WAIT or have explicit dependencies as necessary to |
enforce build ordering. If you see build failures with -j, |
enforce build ordering. If you see build failures with -j, |
please save complete build logs so the failures can be ana- |
please save complete build logs so the failures can be ana- |
lyzed. |
lyzed. |
|
|
|
|
cleandir Same as clean, but also remove preformatted documentation, |
cleandir Same as clean, but also remove preformatted documentation, |
dependency files generated by ``make depend'', and any other |
dependency files generated by ``make depend'', and any other |
files known to be created at build time. ``make distclean'' |
files known to be created at build time. |
may be used as a synonym, for familiarity with a similar well- |
|
known convention. |
|
|
|
depend Create dependency files (.depend) containing more detailed |
depend Create dependency files (.depend) containing more detailed |
information about the dependencies of source code on header |
information about the dependencies of source code on header |
|
|
This improves cache locality of the build since both passes |
This improves cache locality of the build since both passes |
read the source files in their entirety. |
read the source files in their entirety. |
|
|
|
distclean Synonym for cleandir. |
|
|
includes Build and install system header files. Typically needed |
includes Build and install system header files. Typically needed |
before any system libraries or programs can be built. |
before any system libraries or programs can be built. |
|
|
|
|
|
|
installworld Install the distribution from DESTDIR to INSTALLWORLDDIR |
installworld Install the distribution from DESTDIR to INSTALLWORLDDIR |
(which defaults to the root directory). Ensures that |
(which defaults to the root directory). Ensures that |
INSTALLWORLDDIR is the not root directory if cross compil- |
INSTALLWORLDDIR is not the root directory if cross compil- |
ing. |
ing. |
|
|
Note: It is highly recommended that you upgrade your kernel |
Note: It is highly recommended that you upgrade your kernel |
|
|
sourcesets Create source sets of the source tree into |
sourcesets Create source sets of the source tree into |
RELEASEDIR/source/sets. |
RELEASEDIR/source/sets. |
|
|
|
syspkgs Create syspkgs from DESTDIR into |
|
RELEASEDIR/MACHINE/binary/syspkgs. Should be run after |
|
``make distribution'' (as ``make build'' does not install |
|
all of the required files). |
|
|
release Do a ``make distribution'', build kernels, distribution |
release Do a ``make distribution'', build kernels, distribution |
media, and install sets (this as per ``make sets''), and |
media, and install sets (this as per ``make sets''), and |
then package the system into a standard release layout as |
then package the system into a standard release layout as |
|
|
installworld''. |
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(1). If kconf |
does not contain any `/' characters, the configuration file |
does not contain any `/' characters, the configuration file |
is expected to be found in the KERNCONFDIR directory, which |
is expected to be found in the KERNCONFDIR directory, which |
is typically sys/arch/MACHINE/conf. The new kernel will be |
is typically sys/arch/MACHINE/conf. The new kernel will be |
|
|
|
|
sourcesets Perform ``make sourcesets''. |
sourcesets Perform ``make sourcesets''. |
|
|
The following command line options alter the behaviour of the above oper- |
syspkgs Perform ``make syspkgs''. |
ations: The following command line options alter the behaviour of the |
|
build.sh operations described above: |
The following command line options alter the behaviour of the build.sh |
|
operations described above: |
|
|
-a arch Set the value of MACHINE_ARCH to arch. |
-a arch Set the value of MACHINE_ARCH to arch. |
|
|
|
|
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. |
|
|
|
-h Print a help message. |
|
|
-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 |
|
|
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. |
|
|
|
-X x11src |
|
Set the value of X11SRCDIR to x11src. |
|
|
|
-x Set MKX11=yes. |
|
|
-Z var Unset ("zap") the environment variable var. This is propagated |
-Z var Unset ("zap") the environment variable var. This is propagated |
to the nbmake wrapper. |
to the nbmake wrapper. |
|
|
|
|
BUGS |
BUGS |
A few platforms are not yet using this build system. |
A few platforms are not yet using this build system. |
|
|
NetBSD December 19, 2003 NetBSD |
NetBSD February 6, 2003 NetBSD |