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 August 10, 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 targets 314Print a list of supported 315.Va TARGET 316/ 317.Va TARGET_ARCH 318pairs for world and kernel targets. 319.It Cm tinderbox 320Execute the same targets as 321.Cm universe . 322In addition print a summary of all failed targets at the end and 323exit with an error if there were any. 324.It Cm toolchains 325Create a build toolchain for each architecture supported by the build system. 326.It Cm xdev 327Builds and installs a cross-toolchain and sysroot for the given 328.Sy TARGET 329and 330.Sy TARGET_ARCH . 331The sysroot contains target library and headers. 332The target is an alias for 333.Cm xdev-build 334and 335.Cm xdev-install . 336The location of the files installed can be controlled with 337.Va DESTDIR . 338The target location in 339.Va DESTDIR 340is 341.Pa ${DESTDIR}/${XDTP} 342where 343.Va XDTP 344defaults to 345.Pa /usr/${XDDIR} 346and 347.Va XDDIR 348defaults to 349.Pa ${TARGET_ARCH}-freebsd . 350.It Cm xdev-build 351Builds for the 352.Cm xdev 353target. 354.It Cm xdev-install 355Installs the files for the 356.Cm xdev 357target. 358.It Cm xdev-links 359Installs autoconf-style symlinks to 360.Pa ${DESTDIR}/usr/bin 361pointing into the xdev toolchain in 362.Pa ${DESTDIR}/${XDTP} . 363.El 364.Pp 365Kernel specific build targets in 366.Pa /usr/src 367are: 368.Bl -tag -width ".Cm distributekernel" 369.It Cm buildkernel 370Rebuild the kernel and the kernel modules. 371The object directory can be changed from the default 372.Pa /usr/obj 373by setting the 374.Pa MAKEOBJDIRPREFIX 375.Xr make 1 376variable. 377.It Cm installkernel 378Install the kernel and the kernel modules to directory 379.Pa ${DESTDIR}/boot/kernel , 380renaming any pre-existing directory with this name to 381.Pa kernel.old 382if it contained the currently running kernel. 383The target directory under 384.Pa ${DESTDIR} 385may be modified using the 386.Va INSTKERNNAME 387and 388.Va KODIR 389.Xr make 1 390variables. 391.It Cm distributekernel 392Install the kernel to the directory 393.Pa ${DISTDIR}/kernel/boot/kernel . 394This target is used while building a release; see 395.Xr release 7 . 396.It Cm packagekernel 397Archive the results of 398.Cm distributekernel , 399placing the results in 400.Va DISTDIR . 401This target is used while building a release; see 402.Xr release 7 . 403.It Cm kernel 404Equivalent to 405.Cm buildkernel 406followed by 407.Cm installkernel 408.It Cm kernel-toolchain 409Rebuild the tools needed for kernel compilation. 410Use this if you did not do a 411.Cm buildworld 412first. 413.It Cm reinstallkernel 414Reinstall the kernel and the kernel modules, overwriting the contents 415of the target directory. 416As with the 417.Cm installkernel 418target, the target directory can be specified using the 419.Xr make 1 420variable 421.Va INSTKERNNAME . 422.El 423.Pp 424Convenience targets for cleaning up the install destination directory 425denoted by variable 426.Va DESTDIR 427include: 428.Bl -tag -width ".Cm delete-old-libs" 429.It Cm check-old 430Print a list of old files and directories in the system. 431.It Cm delete-old 432Delete obsolete base system files and directories interactively. 433When 434.Li -DBATCH_DELETE_OLD_FILES 435is specified at the command line, the delete operation will be 436non-interactive. 437The variables 438.Va DESTDIR , 439.Va TARGET_ARCH 440and 441.Va TARGET 442should be set as with 443.Dq Li "make installworld" . 444.It Cm delete-old-libs 445Delete obsolete base system libraries interactively. 446This target should only be used if no third party software uses these 447libraries. 448When 449.Li -DBATCH_DELETE_OLD_FILES 450is specified at the command line, the delete operation will be 451non-interactive. 452The variables 453.Va DESTDIR , 454.Va TARGET_ARCH 455and 456.Va TARGET 457should be set as with 458.Dq Li "make installworld" . 459.El 460.Sh ENVIRONMENT 461Variables that influence all builds include: 462.Bl -tag -width ".Va MAKEOBJDIRPREFIX" 463.It Va DEBUG_FLAGS 464Defines a set of debugging flags that will be used to build all userland 465binaries under 466.Pa /usr/src . 467When 468.Va DEBUG_FLAGS 469is defined, the 470.Cm install 471and 472.Cm installworld 473targets install binaries from the current 474.Va MAKEOBJDIRPREFIX 475without stripping, 476so that debugging information is retained in the installed binaries. 477.It Va DESTDIR 478The directory hierarchy prefix where built objects will be installed. 479If not set, 480.Va DESTDIR 481defaults to the empty string. 482.It Va MAKEOBJDIRPREFIX 483Defines the prefix for directory names in the tree of built objects. 484Defaults to 485.Pa /usr/obj 486if not defined. 487This variable should only be set in the environment or 488.Pa /etc/src-env.conf 489and not via 490.Pa /etc/make.conf 491or 492.Pa /etc/src.conf 493or the command line. 494.It Va WITHOUT_WERROR 495If defined, compiler warnings will not cause the build to halt, 496even if the makefile says otherwise. 497.It Va WITH_CTF 498If defined, the build process will run the DTrace CTF conversion 499tools on built objects. 500.El 501.Pp 502Additionally, builds in 503.Pa /usr/src 504are influenced by the following 505.Xr make 1 506variables: 507.Bl -tag -width ".Va SUBDIR_OVERRIDE" 508.It Va KERNCONF 509Overrides which kernel to build and install for the various kernel 510make targets. 511It defaults to 512.Cm GENERIC . 513.It Va KERNCONFDIR 514Overrides the directory in which 515.Va KERNCONF 516and any files included by 517.Va KERNCONF 518should be found. 519Defaults to 520.Pa sys/${ARCH}/conf . 521.It Va KERNFAST 522If set, the build target 523.Cm buildkernel 524defaults to setting 525.Va NO_KERNELCLEAN , 526.Va NO_KERNELCONFIG , 527and 528.Va NO_KERNELOBJ . 529When set to a value other than 530.Cm 1 531then 532.Va KERNCONF 533is set to the value of 534.Va KERNFAST . 535.It Va LOCAL_DIRS 536If set, this variable supplies a list of additional directories relative to 537the root of the source tree to build as part of the 538.Cm everything 539target. 540The directories are built in parallel with each other, 541and with the base system directories. 542Insert a 543.Va .WAIT 544directive at the beginning of the 545.Va LOCAL_DIRS 546list to ensure all base system directories are built first. 547.Va .WAIT 548may also be used as needed elsewhere within the list. 549.It Va LOCAL_ITOOLS 550If set, this variable supplies a list of additional tools that are used by the 551.Cm installworld 552and 553.Cm distributeworld 554targets. 555.It Va LOCAL_LIB_DIRS 556If set, this variable supplies a list of additional directories relative to 557the root of the source tree to build as part of the 558.Cm libraries 559target. 560The directories are built in parallel with each other, 561and with the base system libraries. 562Insert a 563.Va .WAIT 564directive at the beginning of the 565.Va LOCAL_DIRS 566list to ensure all base system libraries are built first. 567.Va .WAIT 568may also be used as needed elsewhere within the list. 569.It Va LOCAL_MTREE 570If set, this variable supplies a list of additional mtrees relative to the 571root of the source tree to use as part of the 572.Cm hierarchy 573target. 574.It Va LOCAL_LEGACY_DIRS 575If set, this variable supplies a list of additional directories relative to 576the root of the source tree to build as part of the 577.Cm legacy 578target. 579.It Va LOCAL_BSTOOL_DIRS 580If set, this variable supplies a list of additional directories relative to 581the root of the source tree to build as part of the 582.Cm bootstrap-tools 583target. 584.It Va LOCAL_TOOL_DIRS 585If set, this variable supplies a list of additional directories relative to 586the root of the source tree to build as part of the 587.Cm build-tools 588target. 589.It Va LOCAL_XTOOL_DIRS 590If set, this variable supplies a list of additional directories relative to 591the root of the source tree to build as part of the 592.Cm cross-tools 593target. 594.It Va PORTS_MODULES 595A list of ports with kernel modules that should be built and installed 596as part of the 597.Cm buildkernel 598and 599.Cm installkernel 600process. 601.Bd -literal -offset indent 602make PORTS_MODULES=emulators/virtualbox-ose-kmod kernel 603.Ed 604.It Va LOCAL_MODULES 605A list of external kernel modules that should be built and installed 606as part of the 607.Cm buildkernel 608and 609.Cm installkernel 610process. 611Defaults to the list of sub-directories of 612.Va LOCAL_MODULES_DIR . 613.It Va LOCAL_MODULES_DIR 614The directory in which to search for the kernel modules specified by 615.Va LOCAL_MODULES . 616Each kernel module should consist of a directory containing a makefile. 617Defaults to 618.Pa ${LOCALBASE}/sys/modules . 619.It Va SRCCONF 620Specify a file to override the default 621.Pa /etc/src.conf . 622The src.conf file controls the components to build. 623See 624.Xr src.conf 5 625.It Va STRIPBIN 626Command to use at install time when stripping binaries. 627Be sure to add any additional tools required to run 628.Va STRIPBIN 629to the 630.Va LOCAL_ITOOLS 631.Xr make 1 632variable before running the 633.Cm distributeworld 634or 635.Cm installworld 636targets. 637See 638.Xr install 1 639for more details. 640.It Va SUBDIR_OVERRIDE 641Override the default list of sub-directories and only build the 642sub-directory named in this variable. 643If combined with 644.Cm buildworld 645then all libraries and includes, and some of the build tools will still build 646as well. 647Specifying 648.Cm -DNO_LIBS , 649and 650.Cm -DWORLDFAST 651will only build the specified directory as was done historically. 652When combined with 653.Cm buildworld 654it is necesarry to override 655.Va LOCAL_LIB_DIRS 656with any custom directories containing libraries. 657This allows building a subset of the system in the same way as 658.Cm buildworld 659does using its sysroot handling. 660This variable can also be useful when debugging failed builds. 661.Bd -literal -offset indent 662make some-target SUBDIR_OVERRIDE=foo/bar 663.Ed 664.It Va SYSDIR 665Specify the location of the kernel source to override the default 666.Pa /usr/src/sys . 667The kernel source is located in the 668.Pa sys 669subdirectory of the source tree checked out from the 670.Pa src.git 671repository. 672.It Va TARGET 673The target hardware platform. 674This is analogous to the 675.Dq Nm uname Fl m 676output. 677This is necessary to cross-build some target architectures. 678For example, cross-building for ARM64 machines requires 679.Va TARGET_ARCH Ns = Ns Li aarch64 680and 681.Va TARGET Ns = Ns Li arm64 . 682If not set, 683.Va TARGET 684defaults to the current hardware platform, unless 685.Va TARGET_ARCH 686is also set, in which case it defaults to the appropriate 687value for that architecture. 688.It Va TARGET_ARCH 689The target machine processor architecture. 690This is analogous to the 691.Dq Nm uname Fl p 692output. 693Set this to cross-build for a different architecture. 694If not set, 695.Va TARGET_ARCH 696defaults to the current machine architecture, unless 697.Va TARGET 698is also set, in which case it defaults to the appropriate 699value for that platform. 700Typically, one only needs to set 701.Va TARGET . 702.El 703.Pp 704Builds under directory 705.Pa /usr/src 706are also influenced by defining one or more of the following symbols, 707using the 708.Fl D 709option of 710.Xr make 1 : 711.Bl -tag -width ".Va -DNO_KERNELCONFIG" 712.It Va LOADER_DEFAULT_INTERP 713Defines what interpreter the default loader program will have. 714Valid values include 715.Dq 4th , 716.Dq lua , 717and 718.Dq simp . 719This creates the default link for 720.Pa /boot/loader 721to the loader with that interpreter. 722It also determines what interpreter is compiled into 723.Pa userboot . 724.It Va NO_CLEANDIR 725If set, the build targets that clean parts of the object tree use the 726equivalent of 727.Dq make clean 728instead of 729.Dq make cleandir . 730.It Va NO_CLEAN 731If set, no object tree files are cleaned at all. 732This is the default when 733.Va WITH_META_MODE 734is used with 735.Xr filemon 4 736loaded. 737See 738.Xr src.conf 5 739for more details. 740Setting 741.Va NO_CLEAN 742implies 743.Va NO_KERNELCLEAN , 744so when 745.Va NO_CLEAN 746is set no kernel objects are cleaned either. 747.It Va NO_CTF 748If set, the build process does not run the DTrace CTF conversion tools 749on built objects. 750.It Va NO_SHARE 751If set, the build does not descend into the 752.Pa /usr/src/share 753subdirectory (i.e., manual pages, locale data files, timezone data files and 754other 755.Pa /usr/src/share 756files will not be rebuild from their sources). 757.It Va NO_KERNELCLEAN 758If set, the build process does not run 759.Dq make clean 760as part of the 761.Cm buildkernel 762target. 763.It Va NO_KERNELCONFIG 764If set, the build process does not run 765.Xr config 8 766as part of the 767.Cm buildkernel 768target. 769.It Va NO_KERNELOBJ 770If set, the build process does not run 771.Dq make obj 772as part of the 773.Cm buildkernel 774target. 775.It Va NO_LIBS 776If set, the libraries phase will be skipped. 777.It Va NO_OBJWALK 778If set, no object directories will be created. 779This should only be used if object directories were created in a 780previous build and no new directories are connected. 781.It Va WORLDFAST 782If set, the build target 783.Cm buildworld 784defaults to setting 785.Va NO_CLEAN , 786.Va NO_OBJWALK , 787and will skip most bootstrap phases. 788It will only bootstrap libraries and build all of userland. 789This option should be used only when it is known that none of the bootstrap 790needs changed and that no new directories have been connected to the build. 791.El 792.Pp 793Builds under directory 794.Pa /usr/doc 795are influenced by the following 796.Xr make 1 797variables: 798.Bl -tag -width ".Va DOC_LANG" 799.It Va DOC_LANG 800If set, restricts the documentation build to the language subdirectories 801specified as its content. 802The default action is to build documentation for all languages. 803.El 804.Pp 805Builds using the 806.Cm universe 807and related targets are influenced by the following 808.Xr make 1 809variables: 810.Bl -tag -width ".Va MAKE_JUST_KERNELS" 811.It Va JFLAG 812Pass the value of this variable to each 813.Xr make 1 814invocation used to build worlds and kernels. 815This can be used to enable multiple jobs within a single architecture's build 816while still building each architecture serially. 817.It Va MAKE_JUST_KERNELS 818Only build kernels for each supported architecture. 819.It Va MAKE_JUST_WORLDS 820Only build worlds for each supported architecture. 821.It Va WITHOUT_WORLDS 822Only build kernels for each supported architecture. 823.It Va WITHOUT_KERNELS 824Only build worlds for each supported architecture. 825.It Va UNIVERSE_TARGET 826Execute the specified 827.Xr make 1 828target for each supported architecture instead of the default action of 829building a world and one or more kernels. 830This variable implies 831.Va WITHOUT_KERNELS . 832.It Va TARGETS 833Only build the listed targets instead of each supported architecture. 834.It Va EXTRA_TARGETS 835In addition to the supported architectures, build the semi-supported 836architectures. 837A semi-supported architecture has build support in the 838.Fx 839tree, but receives significantly less testing and is generally for 840fringe uses that do not have a wide appeal. 841.El 842.Sh FILES 843.Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact 844.It Pa /usr/doc/Makefile 845.It Pa /usr/doc/share/mk/doc.project.mk 846.It Pa /usr/ports/Mk/bsd.port.mk 847.It Pa /usr/ports/Mk/bsd.sites.mk 848.It Pa /usr/share/examples/etc/make.conf 849.It Pa /usr/src/Makefile 850.It Pa /usr/src/Makefile.inc1 851.El 852.Sh EXAMPLES 853For an 854.Dq approved 855method of updating your system from the latest sources, please see the 856.Sx COMMON ITEMS 857section in 858.Pa src/UPDATING . 859.Pp 860The following sequence of commands can be used to cross-build the 861system for the armv6 architecture on an amd64 host: 862.Bd -literal -offset indent 863cd /usr/src 864make TARGET_ARCH=armv6 buildworld buildkernel 865make TARGET_ARCH=armv6 DESTDIR=/clients/arm installworld installkernel 866.Ed 867.Sh HISTORY 868The 869.Nm 870manpage first appeared in 871.Fx 4.3 . 872.Sh SEE ALSO 873.Xr cc 1 , 874.Xr install 1 , 875.Xr make 1 , 876.Xr make.conf 5 , 877.Xr src.conf 5 , 878.Xr arch 7 , 879.Xr pkg 7 , 880.Xr ports 7 , 881.Xr release 7 , 882.Xr tests 7 , 883.Xr config 8 , 884.Xr etcupdate 8 , 885.Xr mergemaster 8 , 886.Xr reboot 8 , 887.Xr shutdown 8 888.Sh AUTHORS 889.An Mike W. Meyer Aq Mt mwm@mired.org 890