version 1.105, 2013/05/29 21:59:51 |
version 1.118, 2014/11/30 15:54:34 |
|
|
``reachover'' Makefile semantics when building these |
``reachover'' Makefile semantics when building these |
programs for a native host. |
programs for a native host. |
|
|
|
external, sys/external |
|
Sources and build infrastructure for components imported |
|
(mostly) unchanged from upstream maintainers, sorted by |
|
applicable license. This is (slowly) replacing the |
|
crypto/dist, dist, and gnu/dist directories. |
|
|
distrib/, etc/ |
distrib/, etc/ |
Sources for items used when making a full release |
Sources for items used when making a full release |
snapshot, such as files installed in DESTDIR/etc on the |
snapshot, such as files installed in DESTDIR/etc on the |
|
|
x11/ ``Reachover'' build structure for X11R6; the source is in |
x11/ ``Reachover'' build structure for X11R6; the source is in |
X11SRCDIR. |
X11SRCDIR. |
|
|
|
extsrc/ ``Reachover'' build structure for externally added |
|
programs and libraries; the source is in EXTSRCSRCDIR. |
|
|
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). |
|
|
otherwise specified, these variables may be set in either the process |
otherwise specified, these variables may be set in either the process |
environment or the make(1) configuration file specified by MAKECONF. |
environment or the make(1) configuration file specified by MAKECONF. |
|
|
BUILDID Identifier for the build. The identifier will be appended to |
BUILDID Identifier for the build. If set, this should be a short |
object directory names, and can be consulted in the make(1) |
string that is suitable for use as part of a file or |
|
directory name. 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 |
configuration file in order to set additional build |
parameters, such as compiler flags. |
parameters, such as compiler flags. It will also be used as |
|
part of the kernel version string, which can be printed by |
|
``uname -v''. |
|
|
|
Default: Unset. |
|
|
|
BUILDINFO This may be a multi-line string containing information about |
|
the build. This will appear in DESTDIR/etc/release, and it |
|
will be stored in the buildinfo variable in any kernels that |
|
are built. When such kernels are booted, the sysctl(7) |
|
kern.buildinfo variable will report this value. The string |
|
may contain backslash escape sequences, such as ``\\'' |
|
(representing a backslash character) and ``\n'' (representing |
|
a newline). |
|
|
|
Default: Unset. |
|
|
BUILDSEED GCC uses random numbers when compiling C++ code. This |
BUILDSEED GCC uses random numbers when compiling C++ code. This |
variable seeds the gcc random number generator using the |
variable seeds the gcc random number generator using the |
|
|
Note: build.sh will provide a default of destdir.MACHINE (in |
Note: build.sh will provide a default of destdir.MACHINE (in |
the top-level .OBJDIR) unless run in `expert' mode. |
the top-level .OBJDIR) unless run in `expert' mode. |
|
|
|
EXTSRCSRCDIR |
|
Directory containing sources of externally added programs and |
|
libraries. If specified, must be an absolute path. |
|
|
|
Default: NETBSDRCDIR/../extsrc, if that exists; otherwise |
|
/usr/extsrc. |
|
|
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: ``no'' |
Default: ``no'' |
|
|
|
MKCROSSGDB Can be set to ``yes'' or ``no''. Create a cross-gdb as a |
|
host tool. |
|
|
|
Default: ``no'' |
|
|
MKCRYPTO Can be set to ``yes'' or ``no''. Indicates whether |
MKCRYPTO Can be set to ``yes'' or ``no''. Indicates whether |
cryptographic code will be included in a build; provided for |
cryptographic code will be included in a build; provided for |
the benefit of countries that do not allow strong |
the benefit of countries that do not allow strong |
|
|
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
MKDEBUG Can be set to ``yes'' or ``no''. Indicates whether debug |
|
information should be generated for all userland binaries |
|
compiled. The result is collected as an additional debug.tgz |
|
and xdebug.tgz set and installed in /usr/libdata/debug. |
|
|
|
Default: ``no'' |
|
|
|
MKDEBUGLIB Can be set to ``yes'' or ``no''. Indicates whether debug |
|
information (see MKDEBUG) should also be generated for all |
|
libraries build. |
|
|
|
Default: ``no'' |
|
|
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 DESTDIR/usr/share/doc will be |
documentation destined for DESTDIR/usr/share/doc will be |
installed during a build. |
installed during a build. |
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
MKEXTSRC Can be set to ``yes'' or ``no''. Indicates whether extsrc is |
|
built from EXTSRCSRCDIR. |
|
|
|
Default: ``no'' |
|
|
MKHTML Can be set to ``yes'' or ``no''. Indicates whether |
MKHTML Can be set to ``yes'' or ``no''. Indicates whether |
preformatted HTML manual pages will be built and installed |
preformatted HTML manual pages will be built and installed |
|
|
|
|
|
|
Default: ``yes'' |
Default: ``yes'' |
|
|
|
MKKDEBUG Can be set to ``yes'' or ``no''. Force generation of full- |
|
debug symbol versions of all kernels compiled. Alongside of |
|
the netbsd kernel file, an unstripped version netbsd.gdb is |
|
created. This is useful if a cross-gdb is built as well (see |
|
MKCROSSGDB). |
|
|
|
Default: ``no'' |
|
|
MKKMOD Can be set to ``yes'' or ``no''. Indicates whether kernel |
MKKMOD Can be set to ``yes'' or ``no''. Indicates whether kernel |
modules are built and installed. |
modules are built and installed. |
|
|
|
|
set (see above). |
set (see above). |
|
|
iso-image Create a NetBSD installation CD-ROM image in the |
iso-image Create a NetBSD installation CD-ROM image in the |
RELEASEDIR/iso directory. The CD-ROM file system will have |
RELEASEDIR/images directory. The CD-ROM file system will |
a layout as described in release(7). |
have a layout as described in release(7). |
|
|
For most machine types, the CD-ROM will be bootable, and |
For most machine types, the CD-ROM will be bootable, and |
will automatically run the sysinst(8) menu-based |
will automatically run the sysinst(8) menu-based |
|
|
the RELEASEDIR/RELEASEMACHINEDIR/installation/cdrom |
the RELEASEDIR/RELEASEMACHINEDIR/installation/cdrom |
directory by ``make release''. These smaller images |
directory by ``make release''. These smaller images |
usually contain the same tools as the larger images in |
usually contain the same tools as the larger images in |
RELEASEDIR/iso, but do not contain additional content such |
RELEASEDIR/images, but do not contain additional content |
as the distribution sets. |
such as the distribution sets. |
|
|
Note that the mac68k port still uses an older method of |
Note that the mac68k port still uses an older method of |
creating CD-ROM images. This requires the mkisofs(1) |
creating CD-ROM images. This requires the mkisofs(1) |
|
|
|
|
iso-image-source |
iso-image-source |
Create a NetBSD installation CD-ROM image in the |
Create a NetBSD installation CD-ROM image in the |
RELEASEDIR/iso directory. The CD-ROM file system will have |
RELEASEDIR/images directory. The CD-ROM file system will |
a layout as described in release(7). It will have top |
have a layout as described in release(7). It will have top |
level directories for the machine type and source. |
level directories for the machine type and source. |
|
|
For most machine types, the CD-ROM will be bootable, and |
For most machine types, the CD-ROM will be bootable, and |
|
|
the RELEASEDIR/RELEASEMACHINEDIR/installation/cdrom |
the RELEASEDIR/RELEASEMACHINEDIR/installation/cdrom |
directory by ``make release''. These smaller images |
directory by ``make release''. These smaller images |
usually contain the same tools as the larger images in |
usually contain the same tools as the larger images in |
RELEASEDIR/iso, but do not contain additional content such |
RELEASEDIR/images, but do not contain additional content |
as the distribution sets. |
such as the distribution sets. |
|
|
Note that the mac68k port still uses an older method of |
Note that the mac68k port still uses an older method of |
creating CD-ROM images. This requires the mkisofs(1) |
creating CD-ROM images. This requires the mkisofs(1) |
|
|
This command will run ``make cleandir'' on the kernel in |
This command will run ``make cleandir'' on the kernel in |
question first unless the -u option is given. |
question first unless the -u option is given. |
|
|
|
kernel.gdb=kconf |
|
Build a new kernel with debug information. Similar to the |
|
above kernel=kconf operation, but creates a netbsd.gdb file |
|
alongside of the kernel netbsd, which contains a full |
|
symbol table and can be used for debugging (for example |
|
with a cross-gdb built by MKCROSSGDB). |
|
|
|
kernels This command will build all kernels defined in port |
|
specific release build procedure. |
|
|
|
This command internally calls the kernel=kconf operation |
|
for each found kernel configuration file. |
|
|
modules This command will build kernel modules and install them |
modules This command will build kernel modules and install them |
into DESTDIR. |
into DESTDIR. |
|
|
|
|
|
|
live-image Perform ``make live-image''. |
live-image Perform ``make live-image''. |
|
|
|
list-arch Prints a list of valid MACHINE and MACHINE_ARCH settings, |
|
the default MACHINE_ARCH for each MACHINE, and aliases for |
|
MACHINE/MACHINE_ARCH pairs, and then exits. The -m or -a |
|
options (or both) may be used to specify glob patterns that |
|
will be used to narrow the list of results; for example, |
|
``build.sh -m 'evm*' -a '*arm*' list-arch'' will list all |
|
known MACHINE/MACHINE_ARCH values in which either MACHINE |
|
or ALIAS matches the pattern `evb*', and MACHINE_ARCH |
|
matches the pattern `*arm*'. |
|
|
The following command line options alter the behaviour of the build.sh |
The following command line options alter the behaviour of the build.sh |
operations described above: |
operations described above: |
|
|
-a arch Set the value of MACHINE_ARCH to arch. |
-a arch Set the value of MACHINE_ARCH to arch. See the -m option for |
|
more information. |
|
|
-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 |
|
|
bandwidth. |
bandwidth. |
|
|
-M obj Set MAKEOBJDIRPREFIX to obj. Unsets MAKEOBJDIR. See ``-O |
-M obj Set MAKEOBJDIRPREFIX to obj. Unsets MAKEOBJDIR. See ``-O |
-obj'' for more information. |
obj'' for more information. |
|
|
For instance, if the source directory is /usr/src, a setting of |
For instance, if the source directory is /usr/src, a setting of |
``-M /usr/obj'' will place build-time files under |
``-M /usr/obj'' will place build-time files under |
|
|
relative path. If the directory does not already exist, |
relative path. If the directory does not already exist, |
build.sh will create it. |
build.sh will create it. |
|
|
-m mach Set the value of MACHINE to mach, except in some special cases |
-m mach Set the value of MACHINE to mach, unless the mach argument is |
listed below. This will also override any value of |
an alias that refers to a MACHINE/MACHINE_ARCH pair, in which |
MACHINE_ARCH in the process environment with a value deduced |
case both MACHINE and MACHINE_ARCH are set from the alias. |
from mach, unless -a is specified. All cross builds require |
Such aliases are interpreted entirely by build.sh; they are not |
-m, but if unset on a NetBSD host, the host's value of MACHINE |
used by any other part of the build system. The MACHINE_ARCH |
will be detected and used automatically. |
setting implied by mach will override any value of MACHINE_ARCH |
|
in the process environment, but will not override a value set |
Some machines support multiple values for MACHINE_ARCH. The |
by the -a option. All cross builds require -m, but if unset on |
following special cases for the mach argument are defined to |
a NetBSD host, the host's value of MACHINE will be detected and |
set the listed values of MACHINE and MACHINE_ARCH: |
used automatically. |
|
|
mach MACHINE MACHINE_ARCH |
See the list-arch operation for a way to get a list of valid |
evbarm evbarm (not set) |
MACHINE and MACHINE_ARCH settings. |
evbarm-eb evbarm armeb |
|
evbarm-el evbarm arm |
|
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 noiselevel |
-N noiselevel |
Set the ``noisyness'' level of the build, by setting |
Set the ``noisyness'' level of the build, by setting |
|
|
by the values of several variables and by the location of the |
by the values of several variables and by the location of the |
source directory. |
source directory. |
|
|
|
Note that placing the obj directory location outside of the |
|
default source tree hierarchy makes it easier to manually clear |
|
out old files in the event the ``make cleandir'' operation is |
|
unable to do so. (See CAVEATS below.) |
|
|
|
Note also that use of one of -M or -O is the only means of |
|
building multiple machine architecture userlands from the same |
|
source tree without cleaning between builds (in which case, one |
|
would specify distinct obj locations for each). |
|
|
-o Set the value of MKOBJDIRS to ``no''. Otherwise, it will be |
-o Set the value of MKOBJDIRS to ``no''. Otherwise, it will be |
automatically set to ``yes''. This default is opposite to the |
automatically set to ``yes''. This default is opposite to the |
behaviour when not using build.sh. |
behaviour when not using build.sh. |
|
|
|
|
-x Set MKX11=yes. |
-x Set MKX11=yes. |
|
|
|
-Y extsrcdir |
|
Set the value of EXTSRCSRCDIR to extsrcdir. If a relative path |
|
is specified, it will be converted to an absolute path before |
|
being used. |
|
|
|
-y Set MKEXTSRC=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. |
|
|
|
|
The build.sh based build scheme was introduced for NetBSD 1.6 as |
The build.sh based build scheme was introduced for NetBSD 1.6 as |
USE_NEW_TOOLCHAIN, and re-worked to TOOLCHAIN_MISSING after that. |
USE_NEW_TOOLCHAIN, and re-worked to TOOLCHAIN_MISSING after that. |
|
|
NetBSD November 8, 2012 NetBSD |
CAVEATS |
|
After significant updates to third-party components in the source tree, |
|
the ``make cleandir'' operation may be insufficient to clean out old |
|
files in object directories. Instead, one may have to manually remove |
|
the files. Consult the UPDATING file for notices concerning this. |
|
|
|
NetBSD August 7, 2014 NetBSD |