e1b9162f48
Document the kernels and worlds targets. Document the TARGETS and EXTRA_TARGETS variables. Reviewed by: brooks, bdrewery, emaste (LGTM) MFC After: 3 days Differential Revision: https://reviews.freebsd.org/D24212
855 lines
22 KiB
Groff
855 lines
22 KiB
Groff
.\" Copyright (c) 2000
|
|
.\" Mike W. Meyer
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd March 29, 2020
|
|
.Dt BUILD 7
|
|
.Os
|
|
.Sh NAME
|
|
.Nm build
|
|
.Nd information on how to build the system
|
|
.Sh DESCRIPTION
|
|
The sources for the
|
|
.Fx
|
|
system and its applications are contained in three different directories,
|
|
normally
|
|
.Pa /usr/src ,
|
|
.Pa /usr/doc ,
|
|
and
|
|
.Pa /usr/ports .
|
|
These directories may be initially empty or non-existent until updated with
|
|
.Xr svn 1
|
|
or
|
|
.Xr svnlite 1
|
|
or
|
|
.Xr portsnap 8 .
|
|
Directory
|
|
.Pa /usr/src
|
|
contains the
|
|
.Dq "base system"
|
|
sources, which is loosely defined as the things required to rebuild
|
|
the system to a useful state.
|
|
Directory
|
|
.Pa /usr/doc
|
|
contains the source for the system documentation, excluding the manual
|
|
pages.
|
|
Directory
|
|
.Pa /usr/ports
|
|
contains a tree that provides a consistent interface for building and
|
|
installing third party applications.
|
|
For more information about the ports build process, see
|
|
.Xr ports 7 .
|
|
.Pp
|
|
The
|
|
.Xr make 1
|
|
command is used in each of these directories to build and install the
|
|
things in that directory.
|
|
Issuing the
|
|
.Xr make 1
|
|
command in any directory or
|
|
subdirectory of those directories has the same effect as issuing the
|
|
same command in all subdirectories of that directory.
|
|
With no target specified, the things in that directory are just built.
|
|
.Pp
|
|
A source tree is allowed to be read-only.
|
|
As described in
|
|
.Xr make 1 ,
|
|
objects are usually built in a separate object directory hierarchy
|
|
specified by the environment variable
|
|
.Va MAKEOBJDIRPREFIX ,
|
|
or under
|
|
.Pa /usr/obj
|
|
if variable
|
|
.Va MAKEOBJDIRPREFIX
|
|
is not set.
|
|
The canonical object directory is described in the documentation for the
|
|
.Cm buildworld
|
|
target below.
|
|
.Pp
|
|
The build may be controlled by defining
|
|
.Xr make 1
|
|
variables described in the
|
|
.Sx ENVIRONMENT
|
|
section below, and by the variables documented in
|
|
.Xr make.conf 5 .
|
|
.Pp
|
|
The following list provides the names and actions for the targets
|
|
supported by the build system:
|
|
.Bl -tag -width ".Cm cleandepend"
|
|
.It Cm analyze
|
|
Run Clang static analyzer against all objects and present output on stdout.
|
|
.It Cm check
|
|
Run tests for a given subdirectory.
|
|
The default directory used is
|
|
.Pa ${.OBJDIR} ,
|
|
but the check directory can be changed with
|
|
.Pa ${CHECKDIR} .
|
|
.It Cm checkworld
|
|
Run the
|
|
.Fx
|
|
test suite on installed world.
|
|
.It Cm clean
|
|
Remove any files created during the build process.
|
|
.It Cm cleandepend
|
|
Remove the
|
|
.Pa ${.OBJDIR}/${DEPENDFILE}*
|
|
files generated by prior
|
|
.Dq Li "make"
|
|
and
|
|
.Dq Li "make depend"
|
|
steps.
|
|
.It Cm cleandir
|
|
Remove the canonical object directory if it exists, or perform
|
|
actions equivalent to
|
|
.Dq Li "make clean cleandepend"
|
|
if it does not.
|
|
This target will also remove an
|
|
.Pa obj
|
|
link in
|
|
.Pa ${.CURDIR}
|
|
if that exists.
|
|
.Pp
|
|
It is advisable to run
|
|
.Dq Li "make cleandir"
|
|
twice: the first invocation will remove the canonical object directory
|
|
and the second one will clean up
|
|
.Pa ${.CURDIR} .
|
|
.It Cm depend
|
|
Generate a list of build dependencies in file
|
|
.Pa ${.OBJDIR}/${DEPENDFILE} .
|
|
Per-object dependencies are generated at build time and stored in
|
|
.Pa ${.OBJDIR}/${DEPENDFILE}.${OBJ} .
|
|
.It Cm install
|
|
Install the results of the build to the appropriate location in the
|
|
installation directory hierarchy specified in variable
|
|
.Va DESTDIR .
|
|
.It Cm obj
|
|
Create the canonical object directory associated with the current
|
|
directory.
|
|
.It Cm objlink
|
|
Create a symbolic link to the canonical object directory in
|
|
.Pa ${.CURDIR} .
|
|
.It Cm tags
|
|
Generate a tags file using the program specified in the
|
|
.Xr make 1
|
|
variable
|
|
.Va CTAGS .
|
|
The build system supports
|
|
.Xr ctags 1
|
|
and
|
|
.Nm "GNU Global" .
|
|
.El
|
|
.Pp
|
|
The other supported targets under directory
|
|
.Pa /usr/src
|
|
are:
|
|
.Bl -tag -width ".Cm distributeworld"
|
|
.It Cm buildenv
|
|
Spawn an interactive shell with environment variables set up for
|
|
building the system or individual components.
|
|
For cross-building the target architecture needs to be specified with
|
|
.Xr make 1
|
|
variables
|
|
.Va TARGET_ARCH
|
|
and
|
|
.Va TARGET .
|
|
.Pp
|
|
This target is only useful after a complete toolchain (including
|
|
the compiler, linker, assembler, headers and libraries) has been
|
|
built; see the
|
|
.Cm toolchain
|
|
target below.
|
|
.It Cm buildworld
|
|
Build everything but the kernel, configure files in
|
|
.Pa etc ,
|
|
and
|
|
.Pa release .
|
|
The object directory can be changed from the default
|
|
.Pa /usr/obj
|
|
by setting the
|
|
.Pa MAKEOBJDIRPREFIX
|
|
.Xr make 1
|
|
variable.
|
|
The actual build location prefix used
|
|
depends on the
|
|
.Va WITH_UNIFIED_OBJDIR
|
|
option from
|
|
.Xr src.conf 5 .
|
|
If enabled it is
|
|
.Pa ${MAKEOBJDIRPREFIX}${.CURDIR}/${TARGET}.${TARGET_ARCH}
|
|
for all builds.
|
|
If disabled it is
|
|
.Pa ${MAKEOBJDIRPREFIX}${.CURDIR}
|
|
for native builds, and
|
|
.Pa ${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH}${.CURDIR}
|
|
for cross builds and native builds with variable
|
|
.Va CROSS_BUILD_TESTING
|
|
set.
|
|
.It Cm cleanworld
|
|
Attempt to clean up targets built by a preceding
|
|
.Cm buildworld ,
|
|
or similar step built from this source directory.
|
|
.It Cm cleanuniverse
|
|
When
|
|
.Va WITH_UNIFIED_OBJDIR
|
|
is enabled, attempt to clean up targets built by a preceding
|
|
.Cm buildworld ,
|
|
.Cm universe ,
|
|
or similar step, for any architecture built from this source directory.
|
|
.It Cm distributeworld
|
|
Distribute everything compiled by a preceding
|
|
.Cm buildworld
|
|
step.
|
|
Files are placed in the directory hierarchy specified by
|
|
.Xr make 1
|
|
variable
|
|
.Va DISTDIR .
|
|
This target is used while building a release; see
|
|
.Xr release 7 .
|
|
.It Cm native-xtools
|
|
This target builds a cross-toolchain for the given
|
|
.Sy TARGET
|
|
and
|
|
.Sy TARGET_ARCH ,
|
|
as well as a select list of static userland tools for the host system.
|
|
This is intended to be used in a jail where QEMU is used to improve
|
|
performance by avoiding emulating binaries that do not need to be emulated.
|
|
.Sy TARGET
|
|
and
|
|
.Sy TARGET_ARCH
|
|
should be defined.
|
|
.It Cm native-xtools-install
|
|
Installs the results to
|
|
.Pa ${DESTDIR}/${NXTP}
|
|
where
|
|
.Va NXTP
|
|
defaults to
|
|
.Pa nxb-bin .
|
|
.Sy TARGET
|
|
and
|
|
.Sy TARGET_ARCH
|
|
must be defined.
|
|
.It Cm packageworld
|
|
Archive the results of
|
|
.Cm distributeworld ,
|
|
placing the results in
|
|
.Va DISTDIR .
|
|
This target is used while building a release; see
|
|
.Xr release 7 .
|
|
.It Cm installworld
|
|
Install everything built by a preceding
|
|
.Cm buildworld
|
|
step into the directory hierarchy pointed to by
|
|
.Xr make 1
|
|
variable
|
|
.Va DESTDIR .
|
|
.Pp
|
|
If installing onto an NFS file system and running
|
|
.Xr make 1
|
|
with the
|
|
.Fl j
|
|
option, make sure that
|
|
.Xr rpc.lockd 8
|
|
is running on both client and server.
|
|
See
|
|
.Xr rc.conf 5
|
|
on how to make it start at boot time.
|
|
.It Cm toolchain
|
|
Create the build toolchain needed to build the rest of the system.
|
|
For cross-architecture builds, this step creates a cross-toolchain.
|
|
.It Cm universe
|
|
For each architecture,
|
|
execute a
|
|
.Cm buildworld
|
|
followed by a
|
|
.Cm buildkernel
|
|
for all kernels for that architecture,
|
|
including
|
|
.Pa LINT .
|
|
This command takes a long time.
|
|
.It Cm kernels
|
|
Like
|
|
.Cm universe
|
|
with
|
|
.Va WITHOUT_WORLDS
|
|
defined so only the kernels for each architecture are built.
|
|
.It Cm worlds
|
|
Like
|
|
.Cm universe
|
|
with
|
|
.Va WITHOUT_KERNELS
|
|
defined so only the worlds for each architecture are built.
|
|
.It Cm update
|
|
Get updated sources as configured in
|
|
.Xr make.conf 5 .
|
|
.It Cm targets
|
|
Print a list of supported
|
|
.Va TARGET
|
|
/
|
|
.Va TARGET_ARCH
|
|
pairs for world and kernel targets.
|
|
.It Cm tinderbox
|
|
Execute the same targets as
|
|
.Cm universe .
|
|
In addition print a summary of all failed targets at the end and
|
|
exit with an error if there were any.
|
|
.It Cm toolchains
|
|
Create a build toolchain for each architecture supported by the build system.
|
|
.It Cm xdev
|
|
Builds and installs a cross-toolchain and sysroot for the given
|
|
.Sy TARGET
|
|
and
|
|
.Sy TARGET_ARCH .
|
|
The sysroot contains target library and headers.
|
|
The target is an alias for
|
|
.Cm xdev-build
|
|
and
|
|
.Cm xdev-install .
|
|
The location of the files installed can be controlled with
|
|
.Va DESTDIR .
|
|
The target location in
|
|
.Va DESTDIR
|
|
is
|
|
.Pa ${DESTDIR}/${XDTP}
|
|
where
|
|
.Va XDTP
|
|
defaults to
|
|
.Pa /usr/${XDDIR}
|
|
and
|
|
.Va XDDIR
|
|
defaults to
|
|
.Pa ${TARGET_ARCH}-freebsd .
|
|
.It Cm xdev-build
|
|
Builds for the
|
|
.Cm xdev
|
|
target.
|
|
.It Cm xdev-install
|
|
Installs the files for the
|
|
.Cm xdev
|
|
target.
|
|
.It Cm xdev-links
|
|
Installs autoconf-style symlinks to
|
|
.Pa ${DESTDIR}/usr/bin
|
|
pointing into the xdev toolchain in
|
|
.Pa ${DESTDIR}/${XDTP} .
|
|
.El
|
|
.Pp
|
|
Kernel specific build targets in
|
|
.Pa /usr/src
|
|
are:
|
|
.Bl -tag -width ".Cm distributekernel"
|
|
.It Cm buildkernel
|
|
Rebuild the kernel and the kernel modules.
|
|
The object directory can be changed from the default
|
|
.Pa /usr/obj
|
|
by setting the
|
|
.Pa MAKEOBJDIRPREFIX
|
|
.Xr make 1
|
|
variable.
|
|
.It Cm installkernel
|
|
Install the kernel and the kernel modules to directory
|
|
.Pa ${DESTDIR}/boot/kernel ,
|
|
renaming any pre-existing directory with this name to
|
|
.Pa kernel.old
|
|
if it contained the currently running kernel.
|
|
The target directory under
|
|
.Pa ${DESTDIR}
|
|
may be modified using the
|
|
.Va INSTKERNNAME
|
|
and
|
|
.Va KODIR
|
|
.Xr make 1
|
|
variables.
|
|
.It Cm distributekernel
|
|
Install the kernel to the directory
|
|
.Pa ${DISTDIR}/kernel/boot/kernel .
|
|
This target is used while building a release; see
|
|
.Xr release 7 .
|
|
.It Cm packagekernel
|
|
Archive the results of
|
|
.Cm distributekernel ,
|
|
placing the results in
|
|
.Va DISTDIR .
|
|
This target is used while building a release; see
|
|
.Xr release 7 .
|
|
.It Cm kernel
|
|
Equivalent to
|
|
.Cm buildkernel
|
|
followed by
|
|
.Cm installkernel
|
|
.It Cm kernel-toolchain
|
|
Rebuild the tools needed for kernel compilation.
|
|
Use this if you did not do a
|
|
.Cm buildworld
|
|
first.
|
|
.It Cm reinstallkernel
|
|
Reinstall the kernel and the kernel modules, overwriting the contents
|
|
of the target directory.
|
|
As with the
|
|
.Cm installkernel
|
|
target, the target directory can be specified using the
|
|
.Xr make 1
|
|
variable
|
|
.Va INSTKERNNAME .
|
|
.El
|
|
.Pp
|
|
Convenience targets for cleaning up the install destination directory
|
|
denoted by variable
|
|
.Va DESTDIR
|
|
include:
|
|
.Bl -tag -width ".Cm delete-old-libs"
|
|
.It Cm check-old
|
|
Print a list of old files and directories in the system.
|
|
.It Cm delete-old
|
|
Delete obsolete base system files and directories interactively.
|
|
When
|
|
.Li -DBATCH_DELETE_OLD_FILES
|
|
is specified at the command line, the delete operation will be
|
|
non-interactive.
|
|
The variables
|
|
.Va DESTDIR ,
|
|
.Va TARGET_ARCH
|
|
and
|
|
.Va TARGET
|
|
should be set as with
|
|
.Dq Li "make installworld" .
|
|
.It Cm delete-old-libs
|
|
Delete obsolete base system libraries interactively.
|
|
This target should only be used if no third party software uses these
|
|
libraries.
|
|
When
|
|
.Li -DBATCH_DELETE_OLD_FILES
|
|
is specified at the command line, the delete operation will be
|
|
non-interactive.
|
|
The variables
|
|
.Va DESTDIR ,
|
|
.Va TARGET_ARCH
|
|
and
|
|
.Va TARGET
|
|
should be set as with
|
|
.Dq Li "make installworld" .
|
|
.El
|
|
.Sh ENVIRONMENT
|
|
Variables that influence all builds include:
|
|
.Bl -tag -width ".Va MAKEOBJDIRPREFIX"
|
|
.It Va DEBUG_FLAGS
|
|
Defines a set of debugging flags that will be used to build all userland
|
|
binaries under
|
|
.Pa /usr/src .
|
|
When
|
|
.Va DEBUG_FLAGS
|
|
is defined, the
|
|
.Cm install
|
|
and
|
|
.Cm installworld
|
|
targets install binaries from the current
|
|
.Va MAKEOBJDIRPREFIX
|
|
without stripping,
|
|
so that debugging information is retained in the installed binaries.
|
|
.It Va DESTDIR
|
|
The directory hierarchy prefix where built objects will be installed.
|
|
If not set,
|
|
.Va DESTDIR
|
|
defaults to the empty string.
|
|
.It Va MAKEOBJDIRPREFIX
|
|
Defines the prefix for directory names in the tree of built objects.
|
|
Defaults to
|
|
.Pa /usr/obj
|
|
if not defined.
|
|
This variable should only be set in the environment or
|
|
.Pa /etc/src-env.conf
|
|
and not via
|
|
.Pa /etc/make.conf
|
|
or
|
|
.Pa /etc/src.conf
|
|
or the command line.
|
|
.It Va NO_WERROR
|
|
If defined, compiler warnings will not cause the build to halt,
|
|
even if the makefile says otherwise.
|
|
.It Va WITH_CTF
|
|
If defined, the build process will run the DTrace CTF conversion
|
|
tools on built objects.
|
|
.El
|
|
.Pp
|
|
Additionally, builds in
|
|
.Pa /usr/src
|
|
are influenced by the following
|
|
.Xr make 1
|
|
variables:
|
|
.Bl -tag -width ".Va SUBDIR_OVERRIDE"
|
|
.It Va KERNCONF
|
|
Overrides which kernel to build and install for the various kernel
|
|
make targets.
|
|
It defaults to
|
|
.Cm GENERIC .
|
|
.It Va KERNCONFDIR
|
|
Overrides the directory in which
|
|
.Va KERNCONF
|
|
and any files included by
|
|
.Va KERNCONF
|
|
should be found.
|
|
Defaults to
|
|
.Pa sys/${ARCH}/conf .
|
|
.It Va KERNFAST
|
|
If set, the build target
|
|
.Cm buildkernel
|
|
defaults to setting
|
|
.Va NO_KERNELCLEAN ,
|
|
.Va NO_KERNELCONFIG ,
|
|
and
|
|
.Va NO_KERNELOBJ .
|
|
When set to a value other than
|
|
.Cm 1
|
|
then
|
|
.Va KERNCONF
|
|
is set to the value of
|
|
.Va KERNFAST .
|
|
.It Va LOCAL_DIRS
|
|
If set, this variable supplies a list of additional directories relative to
|
|
the root of the source tree to build as part of the
|
|
.Cm everything
|
|
target.
|
|
The directories are built in parallel with each other,
|
|
and with the base system directories.
|
|
Insert a
|
|
.Va .WAIT
|
|
directive at the beginning of the
|
|
.Va LOCAL_DIRS
|
|
list to ensure all base system directories are built first.
|
|
.Va .WAIT
|
|
may also be used as needed elsewhere within the list.
|
|
.It Va LOCAL_ITOOLS
|
|
If set, this variable supplies a list of additional tools that are used by the
|
|
.Cm installworld
|
|
and
|
|
.Cm distributeworld
|
|
targets.
|
|
.It Va LOCAL_LIB_DIRS
|
|
If set, this variable supplies a list of additional directories relative to
|
|
the root of the source tree to build as part of the
|
|
.Cm libraries
|
|
target.
|
|
The directories are built in parallel with each other,
|
|
and with the base system libraries.
|
|
Insert a
|
|
.Va .WAIT
|
|
directive at the beginning of the
|
|
.Va LOCAL_DIRS
|
|
list to ensure all base system libraries are built first.
|
|
.Va .WAIT
|
|
may also be used as needed elsewhere within the list.
|
|
.It Va LOCAL_MTREE
|
|
If set, this variable supplies a list of additional mtrees relative to the
|
|
root of the source tree to use as part of the
|
|
.Cm hierarchy
|
|
target.
|
|
.It Va LOCAL_TOOL_DIRS
|
|
If set, this variable supplies a list of additional directories relative to
|
|
the root of the source tree to build as part of the
|
|
.Cm build-tools
|
|
target.
|
|
.It Va LOCAL_XTOOL_DIRS
|
|
If set, this variable supplies a list of additional directories relative to
|
|
the root of the source tree to build as part of the
|
|
.Cm cross-tools
|
|
target.
|
|
.It Va PORTS_MODULES
|
|
A list of ports with kernel modules that should be built and installed
|
|
as part of the
|
|
.Cm buildkernel
|
|
and
|
|
.Cm installkernel
|
|
process.
|
|
.Bd -literal -offset indent
|
|
make PORTS_MODULES=emulators/kqemu-kmod kernel
|
|
.Ed
|
|
.It Va STRIPBIN
|
|
Command to use at install time when stripping binaries.
|
|
Be sure to add any additional tools required to run
|
|
.Va STRIPBIN
|
|
to the
|
|
.Va LOCAL_ITOOLS
|
|
.Xr make 1
|
|
variable before running the
|
|
.Cm distributeworld
|
|
or
|
|
.Cm installworld
|
|
targets.
|
|
See
|
|
.Xr install 1
|
|
for more details.
|
|
.It Va SUBDIR_OVERRIDE
|
|
Override the default list of sub-directories and only build the
|
|
sub-directory named in this variable.
|
|
If combined with
|
|
.Cm buildworld
|
|
then all libraries and includes, and some of the build tools will still build
|
|
as well.
|
|
Specifying
|
|
.Cm -DNO_LIBS ,
|
|
and
|
|
.Cm -DWORLDFAST
|
|
will only build the specified directory as was done historically.
|
|
When combined with
|
|
.Cm buildworld
|
|
it is necesarry to override
|
|
.Va LOCAL_LIB_DIRS
|
|
with any custom directories containing libraries.
|
|
This allows building a subset of the system in the same way as
|
|
.Cm buildworld
|
|
does using its sysroot handling.
|
|
This variable can also be useful when debugging failed builds.
|
|
.Bd -literal -offset indent
|
|
make some-target SUBDIR_OVERRIDE=foo/bar
|
|
.Ed
|
|
.It Va TARGET
|
|
The target hardware platform.
|
|
This is analogous to the
|
|
.Dq Nm uname Fl m
|
|
output.
|
|
This is necessary to cross-build some target architectures.
|
|
For example, cross-building for ARM64 machines requires
|
|
.Va TARGET_ARCH Ns = Ns Li aarch64
|
|
and
|
|
.Va TARGET Ns = Ns Li arm64 .
|
|
If not set,
|
|
.Va TARGET
|
|
defaults to the current hardware platform, unless
|
|
.Va TARGET_ARCH
|
|
is also set, in which case it defaults to the appropriate
|
|
value for that architecture.
|
|
.It Va TARGET_ARCH
|
|
The target machine processor architecture.
|
|
This is analogous to the
|
|
.Dq Nm uname Fl p
|
|
output.
|
|
Set this to cross-build for a different architecture.
|
|
If not set,
|
|
.Va TARGET_ARCH
|
|
defaults to the current machine architecture, unless
|
|
.Va TARGET
|
|
is also set, in which case it defaults to the appropriate
|
|
value for that platform.
|
|
Typically, one only needs to set
|
|
.Va TARGET .
|
|
.El
|
|
.Pp
|
|
Builds under directory
|
|
.Pa /usr/src
|
|
are also influenced by defining one or more of the following symbols,
|
|
using the
|
|
.Fl D
|
|
option of
|
|
.Xr make 1 :
|
|
.Bl -tag -width ".Va -DNO_KERNELCONFIG"
|
|
.It Va LOADER_DEFAULT_INTERP
|
|
Defines what interpreter the default loader program will have.
|
|
Valid values include
|
|
.Dq 4th ,
|
|
.Dq lua ,
|
|
and
|
|
.Dq simp .
|
|
This creates the default link for
|
|
.Pa /boot/loader
|
|
to the loader with that interpreter.
|
|
It also determines what interpreter is compiled into
|
|
.Pa userboot .
|
|
.It Va NO_CLEANDIR
|
|
If set, the build targets that clean parts of the object tree use the
|
|
equivalent of
|
|
.Dq make clean
|
|
instead of
|
|
.Dq make cleandir .
|
|
.It Va NO_CLEAN
|
|
If set, no object tree files are cleaned at all.
|
|
This is the default when
|
|
.Va WITH_META_MODE
|
|
is used with
|
|
.Xr filemon 4
|
|
loaded.
|
|
See
|
|
.Xr src.conf 5
|
|
for more details.
|
|
Setting
|
|
.Va NO_CLEAN
|
|
implies
|
|
.Va NO_KERNELCLEAN ,
|
|
so when
|
|
.Va NO_CLEAN
|
|
is set no kernel objects are cleaned either.
|
|
.It Va NO_CTF
|
|
If set, the build process does not run the DTrace CTF conversion tools
|
|
on built objects.
|
|
.It Va NO_SHARE
|
|
If set, the build does not descend into the
|
|
.Pa /usr/src/share
|
|
subdirectory (i.e., manual pages, locale data files, timezone data files and
|
|
other
|
|
.Pa /usr/src/share
|
|
files will not be rebuild from their sources).
|
|
.It Va NO_KERNELCLEAN
|
|
If set, the build process does not run
|
|
.Dq make clean
|
|
as part of the
|
|
.Cm buildkernel
|
|
target.
|
|
.It Va NO_KERNELCONFIG
|
|
If set, the build process does not run
|
|
.Xr config 8
|
|
as part of the
|
|
.Cm buildkernel
|
|
target.
|
|
.It Va NO_KERNELOBJ
|
|
If set, the build process does not run
|
|
.Dq make obj
|
|
as part of the
|
|
.Cm buildkernel
|
|
target.
|
|
.It Va NO_DOCUPDATE
|
|
If set, the update process does not update the source of the
|
|
.Fx
|
|
documentation as part of the
|
|
.Dq make update
|
|
target.
|
|
.It Va NO_LIBS
|
|
If set, the libraries phase will be skipped.
|
|
.It Va NO_OBJWALK
|
|
If set, no object directories will be created.
|
|
This should only be used if object directories were created in a
|
|
previous build and no new directories are connected.
|
|
.It Va NO_PORTSUPDATE
|
|
If set, the update process does not update the Ports tree as part of the
|
|
.Dq make update
|
|
target.
|
|
.It Va NO_WWWUPDATE
|
|
If set, the update process does not update the www tree as part of the
|
|
.Dq make update
|
|
target.
|
|
.It Va WORLDFAST
|
|
If set, the build target
|
|
.Cm buildworld
|
|
defaults to setting
|
|
.Va NO_CLEAN ,
|
|
.Va NO_OBJWALK ,
|
|
and will skip most bootstrap phases.
|
|
It will only bootstrap libraries and build all of userland.
|
|
This option should be used only when it is known that none of the bootstrap
|
|
needs changed and that no new directories have been connected to the build.
|
|
.El
|
|
.Pp
|
|
Builds under directory
|
|
.Pa /usr/doc
|
|
are influenced by the following
|
|
.Xr make 1
|
|
variables:
|
|
.Bl -tag -width ".Va DOC_LANG"
|
|
.It Va DOC_LANG
|
|
If set, restricts the documentation build to the language subdirectories
|
|
specified as its content.
|
|
The default action is to build documentation for all languages.
|
|
.El
|
|
.Pp
|
|
Builds using the
|
|
.Cm universe
|
|
and related targets are influenced by the following
|
|
.Xr make 1
|
|
variables:
|
|
.Bl -tag -width ".Va MAKE_JUST_KERNELS"
|
|
.It Va JFLAG
|
|
Pass the value of this variable to each
|
|
.Xr make 1
|
|
invocation used to build worlds and kernels.
|
|
This can be used to enable multiple jobs within a single architecture's build
|
|
while still building each architecture serially.
|
|
.It Va MAKE_JUST_KERNELS
|
|
Only build kernels for each supported architecture.
|
|
.It Va MAKE_JUST_WORLDS
|
|
Only build worlds for each supported architecture.
|
|
.It Va WITHOUT_WORLDS
|
|
Only build kernels for each supported architecture.
|
|
.It Va WITHOUT_KERNELS
|
|
Only build worlds for each supported architecture.
|
|
.It Va UNIVERSE_TARGET
|
|
Execute the specified
|
|
.Xr make 1
|
|
target for each supported architecture instead of the default action of
|
|
building a world and one or more kernels.
|
|
This variable implies
|
|
.Va WITHOUT_KERNELS .
|
|
.It Va TARGETS
|
|
Only build the listed targets instead of each supported architecture.
|
|
.It Va EXTRA_TARGETS
|
|
In addition to the supported architectures, build the semi-supported
|
|
architectures.
|
|
A semi-supported architecture has build support in the
|
|
.Fx
|
|
tree, but receives significantly less testing and is generally for
|
|
fringe uses that do not have a wide appeal.
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact
|
|
.It Pa /usr/doc/Makefile
|
|
.It Pa /usr/doc/share/mk/doc.project.mk
|
|
.It Pa /usr/ports/Mk/bsd.port.mk
|
|
.It Pa /usr/ports/Mk/bsd.sites.mk
|
|
.It Pa /usr/share/examples/etc/make.conf
|
|
.It Pa /usr/src/Makefile
|
|
.It Pa /usr/src/Makefile.inc1
|
|
.El
|
|
.Sh EXAMPLES
|
|
For an
|
|
.Dq approved
|
|
method of updating your system from the latest sources, please see the
|
|
.Sx COMMON ITEMS
|
|
section in
|
|
.Pa src/UPDATING .
|
|
.Pp
|
|
The following sequence of commands can be used to cross-build the
|
|
system for the armv6 architecture on an amd64 host:
|
|
.Bd -literal -offset indent
|
|
cd /usr/src
|
|
make TARGET_ARCH=armv6 buildworld buildkernel
|
|
make TARGET_ARCH=armv6 DESTDIR=/clients/arm installworld installkernel
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr cc 1 ,
|
|
.Xr install 1 ,
|
|
.Xr make 1 ,
|
|
.Xr svn 1 ,
|
|
.Xr svnlite 1 ,
|
|
.Xr make.conf 5 ,
|
|
.Xr src.conf 5 ,
|
|
.Xr arch 7 ,
|
|
.Xr ports 7 ,
|
|
.Xr release 7 ,
|
|
.Xr tests 7 ,
|
|
.Xr config 8 ,
|
|
.Xr mergemaster 8 ,
|
|
.Xr portsnap 8 ,
|
|
.Xr reboot 8 ,
|
|
.Xr shutdown 8
|
|
.Sh AUTHORS
|
|
.An Mike W. Meyer Aq Mt mwm@mired.org
|