xref: /freebsd/share/man/man7/build.7 (revision 1caae0570275167e18162d38d7ae0ff73615feb6)
1786aa69aSBen Smithurst.\" Copyright (c) 2000
2786aa69aSBen Smithurst.\"	Mike W. Meyer
3786aa69aSBen Smithurst.\"
4786aa69aSBen Smithurst.\" Redistribution and use in source and binary forms, with or without
5786aa69aSBen Smithurst.\" modification, are permitted provided that the following conditions
6786aa69aSBen Smithurst.\" are met:
7786aa69aSBen Smithurst.\" 1. Redistributions of source code must retain the above copyright
8786aa69aSBen Smithurst.\"    notice, this list of conditions and the following disclaimer.
9786aa69aSBen Smithurst.\" 2. Redistributions in binary form must reproduce the above copyright
10786aa69aSBen Smithurst.\"    notice, this list of conditions and the following disclaimer in the
11786aa69aSBen Smithurst.\"    documentation and/or other materials provided with the distribution.
12786aa69aSBen Smithurst.\"
13786aa69aSBen Smithurst.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
14786aa69aSBen Smithurst.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15786aa69aSBen Smithurst.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16786aa69aSBen Smithurst.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
17786aa69aSBen Smithurst.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18786aa69aSBen Smithurst.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19786aa69aSBen Smithurst.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20786aa69aSBen Smithurst.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21786aa69aSBen Smithurst.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22786aa69aSBen Smithurst.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23786aa69aSBen Smithurst.\" SUCH DAMAGE.
24786aa69aSBen Smithurst.\"
25786aa69aSBen Smithurst.\" $FreeBSD$
26786aa69aSBen Smithurst.\"
271caae057SRuslan Ermilov.Dd March 15, 2002
28786aa69aSBen Smithurst.Dt BUILD 7
293d45e180SRuslan Ermilov.Os
30786aa69aSBen Smithurst.Sh NAME
31786aa69aSBen Smithurst.Nm build
32eb083802SRuslan Ermilov.Nd information on how to build the system
33786aa69aSBen Smithurst.Sh DESCRIPTION
34786aa69aSBen SmithurstThe source for the
35d003b779SRuslan Ermilov.Fx
36786aa69aSBen Smithurstsystem and applications are contained in three different directories,
37786aa69aSBen Smithurstnormally
38786aa69aSBen Smithurst.Pa /usr/src ,
39786aa69aSBen Smithurst.Pa /usr/doc ,
40786aa69aSBen Smithurstand
41786aa69aSBen Smithurst.Pa /usr/ports .
42786aa69aSBen Smithurst.Pa /usr/src
43786aa69aSBen Smithurstcontains the
44786aa69aSBen Smithurst.Dq "base system"
45786aa69aSBen Smithurstsources, which is loosely defined as the things required to rebuild
46786aa69aSBen Smithurstthe system to a useful state.
47786aa69aSBen Smithurst.Pa /usr/doc
48786aa69aSBen Smithurstcontains the source for the system documentation, excluding the manual
49786aa69aSBen Smithurstpages.
50786aa69aSBen Smithurst.Pa /usr/ports
51786aa69aSBen Smithurstis a tree that provides a consistent interface for building and
52786aa69aSBen Smithurstinstalling third party applications.
53786aa69aSBen Smithurst.Pp
54786aa69aSBen SmithurstThe
55786aa69aSBen Smithurst.Xr make 1
56786aa69aSBen Smithurstcommand is used in each of these directories to build and install the
571caae057SRuslan Ermilovthings in that directory.
581caae057SRuslan ErmilovIssuing the
591caae057SRuslan Ermilov.Xr make 1
601caae057SRuslan Ermilovcommand in any directory or
61786aa69aSBen Smithurstsubdirectory of those directories has the same effect as issuing the
621caae057SRuslan Ermilovsame command in all subdirectories of that directory.
631caae057SRuslan ErmilovWith no target specified, the things in that directory are just built.
641caae057SRuslan ErmilovThe following
65786aa69aSBen Smithurstlist provides the names and actions for other targets:
661caae057SRuslan Ermilov.Bl -tag -width indent-two
671caae057SRuslan Ermilov.It Cm clean
68786aa69aSBen SmithurstRemoves any files created during the build process.
691caae057SRuslan Ermilov.It Cm install
70786aa69aSBen SmithurstInstalls the results of the build for this directory.
711caae057SRuslan Ermilov.It Cm update
72786aa69aSBen SmithurstGets updated sources as configured in
73786aa69aSBen Smithurst.Pa /etc/make.conf .
74786aa69aSBen Smithurst.El
75786aa69aSBen Smithurst.Pp
76786aa69aSBen SmithurstThe other
77786aa69aSBen Smithurst.Pa /usr/src
78786aa69aSBen Smithurstmake targets are:
791caae057SRuslan Ermilov.Bl -tag -width indent-two
801caae057SRuslan Ermilov.It Cm buildworld
81786aa69aSBen SmithurstRebuild everything but the kernel, configure files in
82786aa69aSBen Smithurst.Pa /etc ,
83786aa69aSBen Smithurstand release.
841caae057SRuslan Ermilov.It Cm installworld
85786aa69aSBen SmithurstInstall everything built by
861caae057SRuslan Ermilov.Cm buildworld .
871caae057SRuslan Ermilov.It Cm world
881caae057SRuslan Ermilov.Cm buildworld
891caae057SRuslan Ermilov+
901caae057SRuslan Ermilov.Cm installworld .
911caae057SRuslan Ermilov.It Cm buildkernel
921caae057SRuslan ErmilovRebuild the kernel and the kernel modules.
931caae057SRuslan Ermilov.It Cm installkernel
941caae057SRuslan ErmilovInstall the kernel and the kernel modules.
951caae057SRuslan Ermilov.It Cm reinstallkernel
961caae057SRuslan ErmilovReinstall the kernel and the kernel modules.
971caae057SRuslan Ermilov.It Cm upgrade
981caae057SRuslan ErmilovUpgrade
991caae057SRuslan Ermilov.Xr a.out 5
1001caae057SRuslan Ermilov(2.2.x/3.0) system to the new
1011caae057SRuslan Ermilov.Xr elf 5
1021caae057SRuslan Ermilovway.
1031caae057SRuslan Ermilov.It Cm most
104786aa69aSBen SmithurstBuild user commands, no libraries or include files.
1051caae057SRuslan Ermilov.It Cm installmost
106786aa69aSBen SmithurstInstall user commands, no libraries or include files.
1071caae057SRuslan Ermilov.It Cm aout-to-elf
1081caae057SRuslan ErmilovUpgrade a system from
1091caae057SRuslan Ermilov.Xr a.out 5
1101caae057SRuslan Ermilovto
1111caae057SRuslan Ermilov.Xr elf 5
1121caae057SRuslan Ermilovformat.
1131caae057SRuslan Ermilov.It Cm aout-to-elf-build
1141caae057SRuslan ErmilovBuild everything required to upgrade a system from
1151caae057SRuslan Ermilov.Xr a.out 5
1161caae057SRuslan Ermilovto
1171caae057SRuslan Ermilov.Xr elf 5
1181caae057SRuslan Ermilovformat.
1191caae057SRuslan Ermilov.It Cm aout-to-elf-install
1201caae057SRuslan ErmilovInstall everything built by
1211caae057SRuslan Ermilov.Cm aout-to-elf-build .
1221caae057SRuslan Ermilov.It Cm move-aout-libs
1231caae057SRuslan ErmilovMove the
1241caae057SRuslan Ermilov.Xr a.out 5
1251caae057SRuslan Ermilovlibraries into an
1261caae057SRuslan Ermilov.Pa aout
1271caae057SRuslan Ermilovsubdirectory of each
1281caae057SRuslan Ermilov.Xr elf 5
1291caae057SRuslan Ermilovlibrary subdirectory.
130786aa69aSBen Smithurst.El
131786aa69aSBen Smithurst.Pp
132786aa69aSBen SmithurstFor more information about the ports build process, see
133786aa69aSBen Smithurst.Xr ports 7 .
134b82e53e2SMurray Stokely.Sh ENVIRONMENT
1356f9ac6feSMurray Stokely.Bl -tag -width ".Va TARGET_ARCH"
1366f9ac6feSMurray Stokely.It Va TARGET_ARCH
137b3a43ea3SMurray StokelyThe target machine processor architecture.
138365a17c0SMurray StokelyThis is analogous to the
1391caae057SRuslan Ermilov.Dq Nm uname Fl p
140b3a43ea3SMurray Stokelyoutput.
141b82e53e2SMurray StokelySet this to cross-build for a different architecture.
1426f9ac6feSMurray Stokely.It Va TARGET
143b3a43ea3SMurray StokelyThe target hardware platform.
144365a17c0SMurray StokelyThis is analogous to the
1451caae057SRuslan Ermilov.Dq Nm uname Fl m
146b3a43ea3SMurray Stokelyoutput.
147b3a43ea3SMurray StokelyThis is necessary to cross-build some target architectures.
148b3a43ea3SMurray StokelyFor example, cross-building for PC98 machines requires
1491caae057SRuslan Ermilov.Va TARGET_ARCH Ns = Ns Li i386
150b3a43ea3SMurray Stokelyand
1511caae057SRuslan Ermilov.Va TARGET Ns = Ns Li pc98 .
1526f9ac6feSMurray Stokely.It Va NO_WERROR
153b82e53e2SMurray StokelyIf defined, warnings will not cause the build to halt, even if the
154b82e53e2SMurray Stokelymakefile says otherwise.
1556f9ac6feSMurray Stokely.It Va DESTDIR
156b3a43ea3SMurray StokelyThe directory hierarchy where the resulting binaries will be
157b3a43ea3SMurray Stokelyinstalled.
158b82e53e2SMurray Stokely.El
159786aa69aSBen Smithurst.Sh FILES
1600c0eb9beSRuslan Ermilov.Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact
161786aa69aSBen Smithurst.It Pa /etc/make.conf
162786aa69aSBen Smithurst.It Pa /usr/doc/Makefile
163786aa69aSBen Smithurst.It Pa /usr/doc/share/mk/doc.project.mk
164786aa69aSBen Smithurst.It Pa /usr/ports/Mk/bsd.port.mk
165786aa69aSBen Smithurst.It Pa /usr/ports/Mk/bsd.sites.mk
1661caae057SRuslan Ermilov.It Pa /usr/share/examples/etc/make.conf
1670c0eb9beSRuslan Ermilov.It Pa /usr/src/Makefile
1680c0eb9beSRuslan Ermilov.It Pa /usr/src/Makefile.inc1
1693136363fSRuslan Ermilov.El
1703faf5fc9SBen Smithurst.Sh EXAMPLES
1713faf5fc9SBen SmithurstThe
1723faf5fc9SBen Smithurst.Dq approved
1733faf5fc9SBen Smithurstmethod of updating your system from the latest sources is:
1743faf5fc9SBen Smithurst.Bd -literal -offset indent
1753faf5fc9SBen Smithurstmake buildworld
176120bcabcSJohn Baldwinmake buildkernel KERNCONF=FOO
177120bcabcSJohn Baldwinmake installkernel KERNCONF=FOO
1783faf5fc9SBen Smithurstmake installworld
17947f77d8cSBen Smithurstmergemaster
1803faf5fc9SBen Smithurst.Ed
1813faf5fc9SBen Smithurst.Pp
1821caae057SRuslan Ermilov.Dq Li FOO
1833faf5fc9SBen Smithurstmust be replaced with the name of the kernel configuration file from which
1843faf5fc9SBen Smithurstthe kernel should be built.
1853faf5fc9SBen SmithurstAlternatively, the
186120bcabcSJohn Baldwin.Va KERNCONF
1873faf5fc9SBen Smithurstvariable in
1883faf5fc9SBen Smithurst.Pa /etc/make.conf
1893faf5fc9SBen Smithurstcan be set to the name of the kernel to build;
1903faf5fc9SBen Smithurstin this case the
1911caae057SRuslan Ermilov.Va KERNCONF Ns = Ns Li FOO
1923faf5fc9SBen Smithurstpart of the
1931caae057SRuslan Ermilov.Cm buildkernel
1943faf5fc9SBen Smithurstand
1951caae057SRuslan Ermilov.Cm installkernel
1963faf5fc9SBen Smithurstcommands can be omitted.
1973faf5fc9SBen Smithurst.Pp
1983faf5fc9SBen SmithurstAfter running these commands a system reboot is required,
1993faf5fc9SBen Smithurstotherwise many programs which have been rebuilt
2003faf5fc9SBen Smithurst(such as
2011caae057SRuslan Ermilov.Xr ps 1 ,
2021caae057SRuslan Ermilov.Xr top 1 ,
2031caae057SRuslan Ermilovetc.\&)
204a81996b6SBen Smithurstmay not work with the old kernel which is still running.
205b82e53e2SMurray Stokely.Pp
206b82e53e2SMurray StokelyThe following sequence of commands can be used to cross-build the
207b82e53e2SMurray Stokelysystem for the Alpha architecture on an i386 host:
208b82e53e2SMurray Stokely.Bd -literal -offset indent
209b82e53e2SMurray Stokelycd /usr/src
210b3a43ea3SMurray Stokelymake TARGET_ARCH=alpha buildworld
211b3a43ea3SMurray Stokelymake TARGET_ARCH=alpha DESTDIR=/clients/axp installworld
212b82e53e2SMurray Stokely.Ed
213786aa69aSBen Smithurst.Sh SEE ALSO
2147c20a493SBen Smithurst.Xr cc 1 ,
215786aa69aSBen Smithurst.Xr install 1 ,
216786aa69aSBen Smithurst.Xr make 1 ,
217786aa69aSBen Smithurst.Xr make.conf 5 ,
218a81996b6SBen Smithurst.Xr ports 7 ,
219a54bda91SMurray Stokely.Xr release 7 ,
22047f77d8cSBen Smithurst.Xr mergemaster 8 ,
221a81996b6SBen Smithurst.Xr reboot 8 ,
222a81996b6SBen Smithurst.Xr shutdown 8
223786aa69aSBen Smithurst.Sh AUTHORS
224786aa69aSBen Smithurst.An Mike W. Meyer Aq mwm@mired.org .
225