xref: /freebsd/share/man/man7/build.7 (revision 25ecdc7d52770caf1c9b44b5ec11f468f6b636f3)
1.\" Copyright (c) 2000
2.\"	Mike W. Meyer
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" $FreeBSD$
26.\"
27.Dd May 15, 2021
28.Dt BUILD 7
29.Os
30.Sh NAME
31.Nm build
32.Nd General instructions on how to build the system
33.Sh DESCRIPTION
34The sources for the
35.Fx
36system and its applications are contained in three different directories,
37normally
38.Pa /usr/src ,
39.Pa /usr/doc ,
40and
41.Pa /usr/ports .
42These directories may be initially empty or non-existent until updated with
43Git
44.Po installed from packages with
45.Xr pkg 7
46or from
47.Xr ports 7 Pc .
48Directory
49.Pa /usr/src
50contains the
51.Dq "base system"
52sources, which is loosely defined as the things required to rebuild
53the system to a useful state.
54Directory
55.Pa /usr/doc
56contains the source for the system documentation, excluding the manual
57pages.
58Directory
59.Pa /usr/ports
60contains a tree that provides a consistent interface for building and
61installing third party applications.
62For more information about the ports build process, see
63.Xr ports 7 .
64.Pp
65The
66.Xr make 1
67command is used in each of these directories to build and install the
68things in that directory.
69Issuing the
70.Xr make 1
71command in any directory issues the
72.Xr make 1
73command recursively in all subdirectories.
74With no target specified, the items in the directories are built
75and no further action is taken.
76.Pp
77A source tree is allowed to be read-only.
78As described in
79.Xr make 1 ,
80objects are usually built in a separate object directory hierarchy
81specified by the environment variable
82.Va MAKEOBJDIRPREFIX ,
83or under
84.Pa /usr/obj
85if variable
86.Va MAKEOBJDIRPREFIX
87is not set.
88The canonical object directory is described in the documentation for the
89.Cm buildworld
90target below.
91.Pp
92The build may be controlled by defining
93.Xr make 1
94variables described in the
95.Sx ENVIRONMENT
96section below, and by the variables documented in
97.Xr make.conf 5 .
98.Pp
99The default components included in the build are specified in the file
100.Pa /etc/src.conf
101in the source tree.
102To override the default file, include the SRCCONF option in the make steps,
103pointing to a custom src.conf file.
104For more information see
105.Xr src.conf 5 .
106.Pp
107The following list provides the names and actions for the targets
108supported by the build system:
109.Bl -tag -width ".Cm cleandepend"
110.It Cm analyze
111Run Clang static analyzer against all objects and present output on stdout.
112.It Cm check
113Run tests for a given subdirectory.
114The default directory used is
115.Pa ${.OBJDIR} ,
116but the check directory can be changed with
117.Pa ${CHECKDIR} .
118.It Cm checkworld
119Run the
120.Fx
121test suite on installed world.
122.It Cm clean
123Remove any files created during the build process.
124.It Cm cleandepend
125Remove the
126.Pa ${.OBJDIR}/${DEPENDFILE}*
127files generated by prior
128.Dq Li "make"
129and
130.Dq Li "make depend"
131steps.
132.It Cm cleandir
133Remove the canonical object directory if it exists, or perform
134actions equivalent to
135.Dq Li "make clean cleandepend"
136if it does not.
137This target will also remove an
138.Pa obj
139link in
140.Pa ${.CURDIR}
141if that exists.
142.Pp
143It is advisable to run
144.Dq Li "make cleandir"
145twice: the first invocation will remove the canonical object directory
146and the second one will clean up
147.Pa ${.CURDIR} .
148.It Cm depend
149Generate a list of build dependencies in file
150.Pa ${.OBJDIR}/${DEPENDFILE} .
151Per-object dependencies are generated at build time and stored in
152.Pa ${.OBJDIR}/${DEPENDFILE}.${OBJ} .
153.It Cm install
154Install the results of the build to the appropriate location in the
155installation directory hierarchy specified in variable
156.Va DESTDIR .
157.It Cm obj
158Create the canonical object directory associated with the current
159directory.
160.It Cm objlink
161Create a symbolic link to the canonical object directory in
162.Pa ${.CURDIR} .
163.It Cm tags
164Generate a tags file using the program specified in the
165.Xr make 1
166variable
167.Va CTAGS .
168The build system supports
169.Xr ctags 1
170and
171.Nm "GNU Global" .
172.El
173.Pp
174The other supported targets under directory
175.Pa /usr/src
176are:
177.Bl -tag -width ".Cm distributeworld"
178.It Cm buildenv
179Spawn an interactive shell with environment variables set up for
180building the system or individual components.
181For cross-building the target architecture needs to be specified with
182.Xr make 1
183variables
184.Va TARGET_ARCH
185and
186.Va TARGET .
187.Pp
188This target is only useful after a complete toolchain (including
189the compiler, linker, assembler, headers and libraries) has been
190built; see the
191.Cm toolchain
192target below.
193.It Cm buildworld
194Build everything but the kernel, configure files in
195.Pa etc ,
196and
197.Pa release .
198The object directory can be changed from the default
199.Pa /usr/obj
200by setting the
201.Pa MAKEOBJDIRPREFIX
202.Xr make 1
203variable.
204The actual build location prefix used
205depends on the
206.Va WITH_UNIFIED_OBJDIR
207option from
208.Xr src.conf 5 .
209If enabled it is
210.Pa ${MAKEOBJDIRPREFIX}${.CURDIR}/${TARGET}.${TARGET_ARCH}
211for all builds.
212If disabled it is
213.Pa ${MAKEOBJDIRPREFIX}${.CURDIR}
214for native builds, and
215.Pa ${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH}${.CURDIR}
216for cross builds and native builds with variable
217.Va CROSS_BUILD_TESTING
218set.
219.It Cm cleanworld
220Attempt to clean up targets built by a preceding
221.Cm buildworld ,
222or similar step built from this source directory.
223.It Cm cleanuniverse
224When
225.Va WITH_UNIFIED_OBJDIR
226is enabled, attempt to clean up targets built by a preceding
227.Cm buildworld ,
228.Cm universe ,
229or similar step, for any architecture built from this source directory.
230.It Cm distributeworld
231Distribute everything compiled by a preceding
232.Cm buildworld
233step.
234Files are placed in the directory hierarchy specified by
235.Xr make 1
236variable
237.Va DISTDIR .
238This target is used while building a release; see
239.Xr release 7 .
240.It Cm native-xtools
241This target builds a cross-toolchain for the given
242.Sy TARGET
243and
244.Sy TARGET_ARCH ,
245as well as a select list of static userland tools for the host system.
246This is intended to be used in a jail where QEMU is used to improve
247performance by avoiding emulating binaries that do not need to be emulated.
248.Sy TARGET
249and
250.Sy TARGET_ARCH
251should be defined.
252.It Cm native-xtools-install
253Installs the results to
254.Pa ${DESTDIR}/${NXTP}
255where
256.Va NXTP
257defaults to
258.Pa nxb-bin .
259.Sy TARGET
260and
261.Sy TARGET_ARCH
262must be defined.
263.It Cm packageworld
264Archive the results of
265.Cm distributeworld ,
266placing the results in
267.Va DISTDIR .
268This target is used while building a release; see
269.Xr release 7 .
270.It Cm installworld
271Install everything built by a preceding
272.Cm buildworld
273step into the directory hierarchy pointed to by
274.Xr make 1
275variable
276.Va DESTDIR .
277.Pp
278If installing onto an NFS file system and running
279.Xr make 1
280with the
281.Fl j
282option, make sure that
283.Xr rpc.lockd 8
284is running on both client and server.
285See
286.Xr rc.conf 5
287on how to make it start at boot time.
288.It Cm toolchain
289Create the build toolchain needed to build the rest of the system.
290For cross-architecture builds, this step creates a cross-toolchain.
291.It Cm universe
292For each architecture,
293execute a
294.Cm buildworld
295followed by a
296.Cm buildkernel
297for all kernels for that architecture,
298including
299.Pa LINT .
300This command takes a long time.
301.It Cm kernels
302Like
303.Cm universe
304with
305.Va WITHOUT_WORLDS
306defined so only the kernels for each architecture are built.
307.It Cm worlds
308Like
309.Cm universe
310with
311.Va WITHOUT_KERNELS
312defined so only the worlds for each architecture are built.
313.It Cm update
314Get updated sources as configured in
315.Xr make.conf 5 .
316.It Cm targets
317Print a list of supported
318.Va TARGET
319/
320.Va TARGET_ARCH
321pairs for world and kernel targets.
322.It Cm tinderbox
323Execute the same targets as
324.Cm universe .
325In addition print a summary of all failed targets at the end and
326exit with an error if there were any.
327.It Cm toolchains
328Create a build toolchain for each architecture supported by the build system.
329.It Cm xdev
330Builds and installs a cross-toolchain and sysroot for the given
331.Sy TARGET
332and
333.Sy TARGET_ARCH .
334The sysroot contains target library and headers.
335The target is an alias for
336.Cm xdev-build
337and
338.Cm xdev-install .
339The location of the files installed can be controlled with
340.Va DESTDIR .
341The target location in
342.Va DESTDIR
343is
344.Pa ${DESTDIR}/${XDTP}
345where
346.Va XDTP
347defaults to
348.Pa /usr/${XDDIR}
349and
350.Va XDDIR
351defaults to
352.Pa ${TARGET_ARCH}-freebsd .
353.It Cm xdev-build
354Builds for the
355.Cm xdev
356target.
357.It Cm xdev-install
358Installs the files for the
359.Cm xdev
360target.
361.It Cm xdev-links
362Installs autoconf-style symlinks to
363.Pa ${DESTDIR}/usr/bin
364pointing into the xdev toolchain in
365.Pa ${DESTDIR}/${XDTP} .
366.El
367.Pp
368Kernel specific build targets in
369.Pa /usr/src
370are:
371.Bl -tag -width ".Cm distributekernel"
372.It Cm buildkernel
373Rebuild the kernel and the kernel modules.
374The object directory can be changed from the default
375.Pa /usr/obj
376by setting the
377.Pa MAKEOBJDIRPREFIX
378.Xr make 1
379variable.
380.It Cm installkernel
381Install the kernel and the kernel modules to directory
382.Pa ${DESTDIR}/boot/kernel ,
383renaming any pre-existing directory with this name to
384.Pa kernel.old
385if it contained the currently running kernel.
386The target directory under
387.Pa ${DESTDIR}
388may be modified using the
389.Va INSTKERNNAME
390and
391.Va KODIR
392.Xr make 1
393variables.
394.It Cm distributekernel
395Install the kernel to the directory
396.Pa ${DISTDIR}/kernel/boot/kernel .
397This target is used while building a release; see
398.Xr release 7 .
399.It Cm packagekernel
400Archive the results of
401.Cm distributekernel ,
402placing the results in
403.Va DISTDIR .
404This target is used while building a release; see
405.Xr release 7 .
406.It Cm kernel
407Equivalent to
408.Cm buildkernel
409followed by
410.Cm installkernel
411.It Cm kernel-toolchain
412Rebuild the tools needed for kernel compilation.
413Use this if you did not do a
414.Cm buildworld
415first.
416.It Cm reinstallkernel
417Reinstall the kernel and the kernel modules, overwriting the contents
418of the target directory.
419As with the
420.Cm installkernel
421target, the target directory can be specified using the
422.Xr make 1
423variable
424.Va INSTKERNNAME .
425.El
426.Pp
427Convenience targets for cleaning up the install destination directory
428denoted by variable
429.Va DESTDIR
430include:
431.Bl -tag -width ".Cm delete-old-libs"
432.It Cm check-old
433Print a list of old files and directories in the system.
434.It Cm delete-old
435Delete obsolete base system files and directories interactively.
436When
437.Li -DBATCH_DELETE_OLD_FILES
438is specified at the command line, the delete operation will be
439non-interactive.
440The variables
441.Va DESTDIR ,
442.Va TARGET_ARCH
443and
444.Va TARGET
445should be set as with
446.Dq Li "make installworld" .
447.It Cm delete-old-libs
448Delete obsolete base system libraries interactively.
449This target should only be used if no third party software uses these
450libraries.
451When
452.Li -DBATCH_DELETE_OLD_FILES
453is specified at the command line, the delete operation will be
454non-interactive.
455The variables
456.Va DESTDIR ,
457.Va TARGET_ARCH
458and
459.Va TARGET
460should be set as with
461.Dq Li "make installworld" .
462.El
463.Sh ENVIRONMENT
464Variables that influence all builds include:
465.Bl -tag -width ".Va MAKEOBJDIRPREFIX"
466.It Va DEBUG_FLAGS
467Defines a set of debugging flags that will be used to build all userland
468binaries under
469.Pa /usr/src .
470When
471.Va DEBUG_FLAGS
472is defined, the
473.Cm install
474and
475.Cm installworld
476targets install binaries from the current
477.Va MAKEOBJDIRPREFIX
478without stripping,
479so that debugging information is retained in the installed binaries.
480.It Va DESTDIR
481The directory hierarchy prefix where built objects will be installed.
482If not set,
483.Va DESTDIR
484defaults to the empty string.
485.It Va MAKEOBJDIRPREFIX
486Defines the prefix for directory names in the tree of built objects.
487Defaults to
488.Pa /usr/obj
489if not defined.
490This variable should only be set in the environment or
491.Pa /etc/src-env.conf
492and not via
493.Pa /etc/make.conf
494or
495.Pa /etc/src.conf
496or the command line.
497.It Va WITHOUT_WERROR
498If defined, compiler warnings will not cause the build to halt,
499even if the makefile says otherwise.
500.It Va WITH_CTF
501If defined, the build process will run the DTrace CTF conversion
502tools on built objects.
503.El
504.Pp
505Additionally, builds in
506.Pa /usr/src
507are influenced by the following
508.Xr make 1
509variables:
510.Bl -tag -width ".Va SUBDIR_OVERRIDE"
511.It Va KERNCONF
512Overrides which kernel to build and install for the various kernel
513make targets.
514It defaults to
515.Cm GENERIC .
516.It Va KERNCONFDIR
517Overrides the directory in which
518.Va KERNCONF
519and any files included by
520.Va KERNCONF
521should be found.
522Defaults to
523.Pa sys/${ARCH}/conf .
524.It Va KERNFAST
525If set, the build target
526.Cm buildkernel
527defaults to setting
528.Va NO_KERNELCLEAN ,
529.Va NO_KERNELCONFIG ,
530and
531.Va NO_KERNELOBJ .
532When set to a value other than
533.Cm 1
534then
535.Va KERNCONF
536is set to the value of
537.Va KERNFAST .
538.It Va LOCAL_DIRS
539If set, this variable supplies a list of additional directories relative to
540the root of the source tree to build as part of the
541.Cm everything
542target.
543The directories are built in parallel with each other,
544and with the base system directories.
545Insert a
546.Va .WAIT
547directive at the beginning of the
548.Va LOCAL_DIRS
549list to ensure all base system directories are built first.
550.Va .WAIT
551may also be used as needed elsewhere within the list.
552.It Va LOCAL_ITOOLS
553If set, this variable supplies a list of additional tools that are used by the
554.Cm installworld
555and
556.Cm distributeworld
557targets.
558.It Va LOCAL_LIB_DIRS
559If set, this variable supplies a list of additional directories relative to
560the root of the source tree to build as part of the
561.Cm libraries
562target.
563The directories are built in parallel with each other,
564and with the base system libraries.
565Insert a
566.Va .WAIT
567directive at the beginning of the
568.Va LOCAL_DIRS
569list to ensure all base system libraries are built first.
570.Va .WAIT
571may also be used as needed elsewhere within the list.
572.It Va LOCAL_MTREE
573If set, this variable supplies a list of additional mtrees relative to the
574root of the source tree to use as part of the
575.Cm hierarchy
576target.
577.It Va LOCAL_LEGACY_DIRS
578If set, this variable supplies a list of additional directories relative to
579the root of the source tree to build as part of the
580.Cm legacy
581target.
582.It Va LOCAL_BSTOOL_DIRS
583If set, this variable supplies a list of additional directories relative to
584the root of the source tree to build as part of the
585.Cm bootstrap-tools
586target.
587.It Va LOCAL_TOOL_DIRS
588If set, this variable supplies a list of additional directories relative to
589the root of the source tree to build as part of the
590.Cm build-tools
591target.
592.It Va LOCAL_XTOOL_DIRS
593If set, this variable supplies a list of additional directories relative to
594the root of the source tree to build as part of the
595.Cm cross-tools
596target.
597.It Va PORTS_MODULES
598A list of ports with kernel modules that should be built and installed
599as part of the
600.Cm buildkernel
601and
602.Cm installkernel
603process.
604.Bd -literal -offset indent
605make PORTS_MODULES=emulators/virtualbox-ose-kmod kernel
606.Ed
607.It Va SRCCONF
608Specify a file to override the default
609.Pa /etc/src.conf .
610The src.conf file controls the components to build.
611See
612.Xr src.conf 5
613.It Va STRIPBIN
614Command to use at install time when stripping binaries.
615Be sure to add any additional tools required to run
616.Va STRIPBIN
617to the
618.Va LOCAL_ITOOLS
619.Xr make 1
620variable before running the
621.Cm distributeworld
622or
623.Cm installworld
624targets.
625See
626.Xr install 1
627for more details.
628.It Va SUBDIR_OVERRIDE
629Override the default list of sub-directories and only build the
630sub-directory named in this variable.
631If combined with
632.Cm buildworld
633then all libraries and includes, and some of the build tools will still build
634as well.
635Specifying
636.Cm -DNO_LIBS ,
637and
638.Cm -DWORLDFAST
639will only build the specified directory as was done historically.
640When combined with
641.Cm buildworld
642it is necesarry to override
643.Va LOCAL_LIB_DIRS
644with any custom directories containing libraries.
645This allows building a subset of the system in the same way as
646.Cm buildworld
647does using its sysroot handling.
648This variable can also be useful when debugging failed builds.
649.Bd -literal -offset indent
650make some-target SUBDIR_OVERRIDE=foo/bar
651.Ed
652.It Va SYSDIR
653Specify the location of the kernel source to override the default
654.Pa /usr/src/sys .
655The kernel source is located in the
656.Pa sys
657subdirectory of the source tree checked out from the
658.Pa src.git
659repository.
660.It Va TARGET
661The target hardware platform.
662This is analogous to the
663.Dq Nm uname Fl m
664output.
665This is necessary to cross-build some target architectures.
666For example, cross-building for ARM64 machines requires
667.Va TARGET_ARCH Ns = Ns Li aarch64
668and
669.Va TARGET Ns = Ns Li arm64 .
670If not set,
671.Va TARGET
672defaults to the current hardware platform, unless
673.Va TARGET_ARCH
674is also set, in which case it defaults to the appropriate
675value for that architecture.
676.It Va TARGET_ARCH
677The target machine processor architecture.
678This is analogous to the
679.Dq Nm uname Fl p
680output.
681Set this to cross-build for a different architecture.
682If not set,
683.Va TARGET_ARCH
684defaults to the current machine architecture, unless
685.Va TARGET
686is also set, in which case it defaults to the appropriate
687value for that platform.
688Typically, one only needs to set
689.Va TARGET .
690.El
691.Pp
692Builds under directory
693.Pa /usr/src
694are also influenced by defining one or more of the following symbols,
695using the
696.Fl D
697option of
698.Xr make 1 :
699.Bl -tag -width ".Va -DNO_KERNELCONFIG"
700.It Va LOADER_DEFAULT_INTERP
701Defines what interpreter the default loader program will have.
702Valid values include
703.Dq 4th ,
704.Dq lua ,
705and
706.Dq simp .
707This creates the default link for
708.Pa /boot/loader
709to the loader with that interpreter.
710It also determines what interpreter is compiled into
711.Pa userboot .
712.It Va NO_CLEANDIR
713If set, the build targets that clean parts of the object tree use the
714equivalent of
715.Dq make clean
716instead of
717.Dq make cleandir .
718.It Va NO_CLEAN
719If set, no object tree files are cleaned at all.
720This is the default when
721.Va WITH_META_MODE
722is used with
723.Xr filemon 4
724loaded.
725See
726.Xr src.conf 5
727for more details.
728Setting
729.Va NO_CLEAN
730implies
731.Va NO_KERNELCLEAN ,
732so when
733.Va NO_CLEAN
734is set no kernel objects are cleaned either.
735.It Va NO_CTF
736If set, the build process does not run the DTrace CTF conversion tools
737on built objects.
738.It Va NO_SHARE
739If set, the build does not descend into the
740.Pa /usr/src/share
741subdirectory (i.e., manual pages, locale data files, timezone data files and
742other
743.Pa /usr/src/share
744files will not be rebuild from their sources).
745.It Va NO_KERNELCLEAN
746If set, the build process does not run
747.Dq make clean
748as part of the
749.Cm buildkernel
750target.
751.It Va NO_KERNELCONFIG
752If set, the build process does not run
753.Xr config 8
754as part of the
755.Cm buildkernel
756target.
757.It Va NO_KERNELOBJ
758If set, the build process does not run
759.Dq make obj
760as part of the
761.Cm buildkernel
762target.
763.It Va NO_DOCUPDATE
764If set, the update process does not update the source of the
765.Fx
766documentation as part of the
767.Dq make update
768target.
769.It Va NO_LIBS
770If set, the libraries phase will be skipped.
771.It Va NO_OBJWALK
772If set, no object directories will be created.
773This should only be used if object directories were created in a
774previous build and no new directories are connected.
775.It Va NO_PORTSUPDATE
776If set, the update process does not update the Ports tree as part of the
777.Dq make update
778target.
779.It Va NO_WWWUPDATE
780If set, the update process does not update the www tree as part of the
781.Dq make update
782target.
783.It Va WORLDFAST
784If set, the build target
785.Cm buildworld
786defaults to setting
787.Va NO_CLEAN ,
788.Va NO_OBJWALK ,
789and will skip most bootstrap phases.
790It will only bootstrap libraries and build all of userland.
791This option should be used only when it is known that none of the bootstrap
792needs changed and that no new directories have been connected to the build.
793.El
794.Pp
795Builds under directory
796.Pa /usr/doc
797are influenced by the following
798.Xr make 1
799variables:
800.Bl -tag -width ".Va DOC_LANG"
801.It Va DOC_LANG
802If set, restricts the documentation build to the language subdirectories
803specified as its content.
804The default action is to build documentation for all languages.
805.El
806.Pp
807Builds using the
808.Cm universe
809and related targets are influenced by the following
810.Xr make 1
811variables:
812.Bl -tag -width ".Va MAKE_JUST_KERNELS"
813.It Va JFLAG
814Pass the value of this variable to each
815.Xr make 1
816invocation used to build worlds and kernels.
817This can be used to enable multiple jobs within a single architecture's build
818while still building each architecture serially.
819.It Va MAKE_JUST_KERNELS
820Only build kernels for each supported architecture.
821.It Va MAKE_JUST_WORLDS
822Only build worlds for each supported architecture.
823.It Va WITHOUT_WORLDS
824Only build kernels for each supported architecture.
825.It Va WITHOUT_KERNELS
826Only build worlds for each supported architecture.
827.It Va UNIVERSE_TARGET
828Execute the specified
829.Xr make 1
830target for each supported architecture instead of the default action of
831building a world and one or more kernels.
832This variable implies
833.Va WITHOUT_KERNELS .
834.It Va TARGETS
835Only build the listed targets instead of each supported architecture.
836.It Va EXTRA_TARGETS
837In addition to the supported architectures, build the semi-supported
838architectures.
839A semi-supported architecture has build support in the
840.Fx
841tree, but receives significantly less testing and is generally for
842fringe uses that do not have a wide appeal.
843.El
844.Sh FILES
845.Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact
846.It Pa /usr/doc/Makefile
847.It Pa /usr/doc/share/mk/doc.project.mk
848.It Pa /usr/ports/Mk/bsd.port.mk
849.It Pa /usr/ports/Mk/bsd.sites.mk
850.It Pa /usr/share/examples/etc/make.conf
851.It Pa /usr/src/Makefile
852.It Pa /usr/src/Makefile.inc1
853.El
854.Sh EXAMPLES
855For an
856.Dq approved
857method of updating your system from the latest sources, please see the
858.Sx COMMON ITEMS
859section in
860.Pa src/UPDATING .
861.Pp
862The following sequence of commands can be used to cross-build the
863system for the armv6 architecture on an amd64 host:
864.Bd -literal -offset indent
865cd /usr/src
866make TARGET_ARCH=armv6 buildworld buildkernel
867make TARGET_ARCH=armv6 DESTDIR=/clients/arm installworld installkernel
868.Ed
869.Sh HISTORY
870The
871.Nm
872manpage first appeared in
873.Fx 4.3 .
874.Sh SEE ALSO
875.Xr cc 1 ,
876.Xr install 1 ,
877.Xr make 1 ,
878.Xr make.conf 5 ,
879.Xr src.conf 5 ,
880.Xr arch 7 ,
881.Xr pkg 7 ,
882.Xr ports 7 ,
883.Xr release 7 ,
884.Xr tests 7 ,
885.Xr config 8 ,
886.Xr etcupdate 8 ,
887.Xr mergemaster 8 ,
888.Xr reboot 8 ,
889.Xr shutdown 8
890.Sh AUTHORS
891.An Mike W. Meyer Aq Mt mwm@mired.org
892