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