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