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.16 2008/04/14 22:18:14 swildner Exp $ 27.\" 28.Dd February 5, 2008 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. 45Third party applications have to be built using the 46.Xr pkgsrc 7 47system. 48The file 49.Pa /usr/src/UPDATING 50gives specifics on how to obtain the tree for building packages. 51.Pp 52The 53.Xr make 1 54command is used in 55.Pa /usr/src 56to build and install the things in that directory. 57Issuing the 58.Xr make 1 59command in any directory or 60subdirectory of those directories has the same effect as issuing the 61same command in all subdirectories of that directory. 62With no target specified, the things in that directory are just built. 63The following list provides the names and actions for other targets: 64.Bl -tag -width ".Cm install" 65.It Cm clean 66Removes any files created during the build process. 67.It Cm install 68Installs the results of the build for this directory. 69.It Cm update 70Gets updated sources as configured in 71.Pa /etc/make.conf . 72.El 73.Pp 74The other 75.Pa /usr/src 76make targets are: 77.Bl -tag -width ".Cm reinstallkernel" 78.It Cm buildworld 79Rebuild everything but the kernel. 80.It Cm quickworld 81Same as 82.Cm buildworld , 83but skip bootstrap, build and cross-build tool steps. 84This target can be used for incremental upgrades once a full build of the 85world has been done with 86.Cm buildworld . 87.It Cm realquickworld 88Same as 89.Cm quickworld , 90but also skip the depend step. 91.It Cm crossworld 92Just do the bootstrap, build and cross-build steps. 93.It Cm installworld 94Install everything built by 95.Cm buildworld . 96.It Cm world 97.Cm buildworld + 98.Cm installworld . 99.It Cm buildkernel 100Rebuild the kernel and the kernel-modules. 101.It Cm nativekernel 102Rebuild the kernel and the kernel-modules using native tools. 103.It Cm quickkernel 104Same as 105.Cm buildkernel , 106but skip the depend step and do not clean out the 107obj modules. 108This target can be used for incremental upgrades once a full 109build of the kernel has been done with 110.Cm buildkernel . 111.It Cm installkernel 112Install the kernel and the kernel-modules. 113.It Cm reinstallkernel 114Reinstall the kernel and the kernel-modules. 115.It Cm kernel 116.Cm buildkernel + 117.Cm installkernel . 118.It Cm preupgrade 119Perform certain upgrades that have to be done before 120.Cm installworld . 121.Cm installworld 122will complain if they have not been done. 123.It Cm upgrade 124Upgrade the files in /etc and also setup the rest of the system for 125the version of 126.Dx 127just installed. 128.It Cm most 129Build user commands, no libraries or include files. 130.It Cm installmost 131Install user commands, no libraries or include files. 132.El 133.Sh ENVIRONMENT 134.Bl -tag -width ".Ev TARGET_ARCH" 135.It Ev TARGET_ARCH 136The target machine processor architecture. 137This is analogous to the 138.Dq Nm uname Fl p 139output. 140.\"Set this to cross-build for a different architecture. 141.It Ev TARGET 142The target hardware platform. 143This is analogous to the 144.Dq Nm uname Fl m 145output. 146.\"This is necessary to cross-build some target architectures. 147.It Ev NO_WERROR 148If defined, warnings will not cause the build to halt, even if the 149makefile says otherwise. 150.It Ev DESTDIR 151The directory hierarchy where the resulting binaries will be 152installed (the default is 153.Pa / ) . 154.It Ev MAKEOBJDIRPREFIX 155The directory hierarchy where the object files will be built (the default is 156.Pa /usr/obj ) . 157.It Ev __MAKE_CONF 158Used to override the path of 159.Xr make.conf 5 160(the default is 161.Pa /etc/make.conf ) . 162.It Ev KERNCONF 163The name of the kernel configuration file from which the kernel should 164be built (the default is 165.Li GENERIC ) . 166.It Ev KERNCONFDIR 167The directory where the kernel configuration files are kept (the default is 168.Pa /usr/src/sys/config ) . 169.El 170.Sh FILES 171.Bl -tag -width ".Pa /usr/src/share/doc/Makefile" -compact 172.It Pa /etc/make.conf 173.It Pa /etc/defaults/make.conf 174.It Pa /usr/src/share/doc/Makefile 175.It Pa /usr/src/Makefile 176.It Pa /usr/src/Makefile.inc1 177.El 178.Sh EXAMPLES 179The 180.Dq approved 181method of updating your system from the latest sources is: 182.Bd -literal -offset indent 183make buildworld 184make buildkernel KERNCONF=FOO 185make installkernel KERNCONF=FOO 186make installworld 187make upgrade 188.Ed 189.Pp 190After running these commands a system reboot is required, 191otherwise many programs which have been rebuilt (such as 192.Xr ps 1 , 193.Xr top 1 , 194etc.) may not work with the old kernel which is still running. 195.Sh CAVEATS 196The build and install order in the 197.Sx EXAMPLES 198section enforces that the new kernel is installed before the new 199world. 200Sometimes it might be necessary to reboot the system between those two 201steps. 202In this case 203.Dq Nm make Cm installworld 204will tell you to do so. 205.Sh SEE ALSO 206.Xr cc 1 , 207.Xr install 1 , 208.Xr make 1 , 209.Xr wmake 1 , 210.Xr make.conf 5 , 211.Xr pkgsrc 7 , 212.Xr release 7 , 213.Xr config 8 , 214.Xr reboot 8 , 215.Xr shutdown 8 216.Sh AUTHORS 217.An -nosplit 218.An Mike W. Meyer Aq mwm@mired.org 219and 220.An Sascha Wildner Aq swildner@gmail.com . 221