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: src/share/man/man7/build.7,v 1.19.2.1 2002/03/18 08:33:02 murray Exp $ 26.\" $DragonFly: src/share/man/man7/build.7,v 1.18 2008/11/14 15:04:42 swildner Exp $ 27.\" 28.Dd Februar 23, 2009 29.Dt BUILD 7 30.Os 31.Sh NAME 32.Nm build 33.Nd information on how to build the system 34.Sh DESCRIPTION 35The source for the 36.Dx 37system and applications is located in 38.Pa /usr/src . 39This directory contains the 40.Dq "base system" 41sources, which is loosely defined as the things required to rebuild 42the system to a useful state. 43It also contains the source for the system documentation, including 44manual pages. 45Refer to 46.Xr development 7 47for more information on how to obtain the 48.Dx 49sources. 50.Pp 51Third party applications have to be built using the 52.Xr pkgsrc 7 53system. 54The file 55.Pa /usr/src/UPDATING 56gives specifics on how to obtain the tree for building packages. 57.Pp 58The 59.Xr make 1 60command is used in 61.Pa /usr/src 62to build and install the things in that directory. 63Issuing the 64.Xr make 1 65command in any directory or 66subdirectory of those directories has the same effect as issuing the 67same command in all subdirectories of that directory. 68With no target specified, the things in that directory are just built. 69The following list provides the names and actions for other targets: 70.Bl -tag -width ".Cm install" 71.It Cm clean 72Removes any files created during the build process. 73.It Cm install 74Installs the results of the build for this directory. 75.El 76.Pp 77The other 78.Pa /usr/src 79make targets are: 80.Bl -tag -width ".Cm reinstallkernel" 81.It Cm buildworld 82Rebuild everything but the kernel. 83.It Cm quickworld 84Same as 85.Cm buildworld , 86but skip bootstrap, build and cross-build tool steps. 87This target can be used for incremental upgrades once a full build of the 88world has been done with 89.Cm buildworld . 90.It Cm realquickworld 91Same as 92.Cm quickworld , 93but also skip the depend step. 94.It Cm crossworld 95Just do the bootstrap, build and cross-build steps. 96.It Cm installworld 97Install everything built by 98.Cm buildworld . 99.It Cm world 100.Cm buildworld + 101.Cm installworld . 102.It Cm buildkernel 103Rebuild the kernel and the kernel-modules. 104.It Cm nativekernel 105Rebuild the kernel and the kernel-modules using native tools. 106.It Cm quickkernel 107Same as 108.Cm buildkernel , 109but skip the depend step and do not clean out the 110obj modules. 111This target can be used for incremental upgrades once a full 112build of the kernel has been done with 113.Cm buildkernel . 114.It Cm installkernel 115Install the kernel and the kernel-modules. 116.It Cm reinstallkernel 117Reinstall the kernel and the kernel-modules. 118.It Cm kernel 119.Cm buildkernel + 120.Cm installkernel . 121.It Cm preupgrade 122Perform certain upgrades that have to be done before 123.Cm installworld . 124.Cm installworld 125will complain if they have not been done. 126.It Cm upgrade 127Upgrade the files in /etc and also setup the rest of the system for 128the version of 129.Dx 130just installed. 131.It Cm most 132Build user commands, no libraries or include files. 133.It Cm installmost 134Install user commands, no libraries or include files. 135.El 136.Sh ENVIRONMENT 137.Bl -tag -width ".Ev TARGET_ARCH" 138.It Ev TARGET_ARCH 139The target machine processor architecture. 140This is analogous to the 141.Dq Nm uname Fl p 142output. 143.\"Set this to cross-build for a different architecture. 144.It Ev TARGET 145The target hardware platform. 146This is analogous to the 147.Dq Nm uname Fl m 148output. 149.\"This is necessary to cross-build some target architectures. 150.\".It Ev NO_WERROR 151.\"If defined, warnings will not cause the build to halt, even if the 152.\"makefile says otherwise. 153.It Ev DESTDIR 154An existing directory to be the root of 155the hierarchy where the resulting binaries will be 156installed (the default is 157.Pa / ) . 158.It Ev MAKEOBJDIRPREFIX 159The directory hierarchy where the object files will be built (the default is 160.Pa /usr/obj ) . 161.It Ev __MAKE_CONF 162Used to override the path of 163.Xr make.conf 5 164(the default is 165.Pa /etc/make.conf ) . 166.It Ev KERNCONF 167The name of the kernel configuration file from which the kernel should 168be built (the default is 169.Li GENERIC ) . 170.It Ev KERNCONFDIR 171The directory where the kernel configuration files are kept (the default is 172.Pa /usr/src/sys/config ) . 173.It Ev DESTLABEL 174Common suffix added to kernel and modules directory names, prefixed by 175a single dot. For example, 176.Bd -literal -offset indent 177make DESTLABEL=test installkernel 178.Ed 179.Pp 180installs them as 181.Pa /boot/kernel.test 182and 183.Pa /boot/modules.test , 184respectively. 185.It Ev DESTKERNDIR 186Where to install the kernel and the modules (the default is 187.Pa /boot ) , 188in the directory hierarchy specified by the environment variable 189.Ev DESTDIR . 190.It Ev DESTKERNNAME 191The name of the installed kernel file (the default is 192.Pa kernel ) , 193under the directory specified by 194.Ev DESTKERNDIR . 195This overrides the effect of 196.Ev DESTLABEL . 197.It Ev DESTMODULESNAME 198The name of the directory to install the kernel modules (the default is 199.Pa modules ) , 200under the directory specified by 201.Ev DESTKERNDIR . 202This overrides the effect of 203.Ev DESTLABEL . 204.El 205.Sh FILES 206.Bl -tag -width ".Pa /usr/src/share/doc/Makefile" -compact 207.It Pa /etc/make.conf 208.It Pa /etc/defaults/make.conf 209.It Pa /usr/src/share/doc/Makefile 210.It Pa /usr/src/Makefile 211.It Pa /usr/src/Makefile.inc1 212.El 213.Sh EXAMPLES 214The 215.Dq approved 216method of updating your system from the latest sources is: 217.Bd -literal -offset indent 218make buildworld 219make buildkernel KERNCONF=FOO 220make installkernel KERNCONF=FOO 221make installworld 222make upgrade 223.Ed 224.Pp 225After running these commands a system reboot is required, 226otherwise many programs which have been rebuilt (such as 227.Xr ps 1 , 228.Xr top 1 , 229etc.) may not work with the old kernel which is still running. 230.Sh CAVEATS 231The build and install order in the 232.Sx EXAMPLES 233section enforces that the new kernel is installed before the new 234world. 235Sometimes it might be necessary to reboot the system between those two 236steps. 237In this case 238.Dq Nm make Cm installworld 239will tell you to do so. 240.Sh SEE ALSO 241.Xr cc 1 , 242.Xr install 1 , 243.Xr make 1 , 244.Xr wmake 1 , 245.Xr make.conf 5 , 246.Xr development 7 , 247.Xr pkgsrc 7 , 248.Xr release 7 , 249.Xr config 8 , 250.Xr reboot 8 , 251.Xr shutdown 8 252.Sh AUTHORS 253.An -nosplit 254.An Mike W. Meyer Aq mwm@mired.org 255and 256.An Sascha Wildner Aq swildner@gmail.com . 257