1@c Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
2@c This is part of the GCC manual.
3@c For copying conditions, see the file gcc.texi.
4
5@node Makefile
6@subsection Makefile Targets
7@cindex makefile targets
8@cindex targets, makefile
9
10These targets are available from the @samp{gcc} directory:
11
12@table @code
13@item all
14This is the default target.  Depending on what your build/host/target
15configuration is, it coordinates all the things that need to be built.
16
17@item doc
18Produce info-formatted documentation and man pages.  Essentially it
19calls @samp{make man} and @samp{make info}.
20
21@item dvi
22Produce DVI-formatted documentation.
23
24@item pdf
25Produce PDF-formatted documentation.
26
27@item html
28Produce HTML-formatted documentation.
29
30@item man
31Generate man pages.
32
33@item info
34Generate info-formatted pages.
35
36@item mostlyclean
37Delete the files made while building the compiler.
38
39@item clean
40That, and all the other files built by @samp{make all}.
41
42@item distclean
43That, and all the files created by @command{configure}.
44
45@item maintainer-clean
46Distclean plus any file that can be generated from other files.  Note
47that additional tools may be required beyond what is normally needed to
48build gcc.
49
50@item srcextra
51Generates files in the source directory that do not exist in CVS but
52should go into a release tarball.  One example is @file{gcc/java/parse.c}
53which is generated from the CVS source file @file{gcc/java/parse.y}.
54
55@item srcinfo
56@itemx srcman
57Copies the info-formatted and manpage documentation into the source
58directory usually for the purpose of generating a release tarball.
59
60@item install
61Installs gcc.
62
63@item uninstall
64Deletes installed files.
65
66@item check
67Run the testsuite.  This creates a @file{testsuite} subdirectory that
68has various @file{.sum} and @file{.log} files containing the results of
69the testing.  You can run subsets with, for example, @samp{make check-gcc}.
70You can specify specific tests by setting RUNTESTFLAGS to be the name
71of the @file{.exp} file, optionally followed by (for some tests) an equals
72and a file wildcard, like:
73
74@smallexample
75make check-gcc RUNTESTFLAGS="execute.exp=19980413-*"
76@end smallexample
77
78Note that running the testsuite may require additional tools be
79installed, such as TCL or dejagnu.
80@end table
81
82The toplevel tree from which you start GCC compilation is not
83the GCC directory, but rather a complex Makefile that coordinates
84the various steps of the build, including bootstrapping the compiler
85and using the new compiler to build target libraries.
86
87When GCC is configured for a native configuration, the default action
88for @command{make} is to do a full three-stage bootstrap.  This means
89that GCC is built three times---once with the native compiler, once with
90the native-built compiler it just built, and once with the compiler it
91built the second time.  In theory, the last two should produce the same
92results, which @samp{make compare} can check.  Each stage is configured
93separately and compiled into a separate directory, to minimize problems
94due to ABI incompatibilities between the native compiler and GCC.
95
96If you do a change, rebuilding will also start from the first stage
97and ``bubble'' up the change through the three stages.  Each stage
98is taken from its build directory (if it had been built previously),
99rebuilt, and copied to its subdirectory.  This will allow you to, for
100example, continue a bootstrap after fixing a bug which causes the
101stage2 build to crash.  It does not provide as good coverage of the
102compiler as bootstrapping from scratch, but it ensures that the new
103code is syntactically correct (e.g. that you did not use GCC extensions
104by mistake), and avoids spurious bootstrap comparison
105failures@footnote{Except if the compiler was buggy and miscompiled
106  some of the files that were not modified.  In this case, it's best
107  to use @command{make restrap}.}.
108
109Other targets available from the top level include:
110
111@table @code
112@item bootstrap-lean
113Like @code{bootstrap}, except that the various stages are removed once
114they're no longer needed.  This saves disk space.
115
116@item bootstrap2
117@itemx bootstrap2-lean
118Performs only the first two stages of bootstrap.  Unlike a three-stage
119bootstrap, this does not perform a comparison to test that the compiler
120is running properly.  Note that the disk space required by a ``lean''
121bootstrap is approximately independent of the number of stages.
122
123@item stage@var{N}-bubble (@var{N} = 1@dots{}4)
124Rebuild all the stages up to @var{N}, with the appropriate flags,
125``bubbling'' the changes as described above.
126
127@item all-stage@var{N} (@var{N} = 1@dots{}4)
128Assuming that stage @var{N} has already been built, rebuild it with the
129appropriate flags.  This is rarely needed.
130
131@item cleanstrap
132Remove everything (@samp{make clean}) and rebuilds (@samp{make bootstrap}).
133
134@item compare
135Compares the results of stages 2 and 3.  This ensures that the compiler
136is running properly, since it should produce the same object files
137regardless of how it itself was compiled.
138
139@item profiledbootstrap
140Builds a compiler with profiling feedback information.  For more
141information, see
142@ref{Building,,Building with profile feedback,gccinstall,Installing GCC}.
143
144@item restrap
145Restart a bootstrap, so that everything that was not built with
146the system compiler is rebuilt.
147
148@item stage@var{N}-start (@var{N} = 1@dots{}4)
149For each package that is bootstrapped, rename directories so that,
150for example, @file{gcc} points to the stage@var{N} GCC, compiled
151with the stage@var{N-1} GCC@footnote{Customarily, the system compiler
152  is also termed the @file{stage0} GCC.}.
153
154You will invoke this target if you need to test or debug the
155stage@var{N} GCC.  If you only need to execute GCC (but you need
156not run @samp{make} either to rebuild it or to run test suites),
157you should be able to work directly in the @file{stage@var{N}-gcc}
158directory.  This makes it easier to debug multiple stages in
159parallel.
160
161@item stage
162For each package that is bootstrapped, relocate its build directory
163to indicate its stage.  For example, if the @file{gcc} directory
164points to the stage2 GCC, after invoking this target it will be
165renamed to @file{stage2-gcc}.
166
167@end table
168
169If you wish to use non-default GCC flags when compiling the stage2 and
170stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing
171@samp{make}.
172
173Usually, the first stage only builds the languages that the compiler
174is written in: typically, C and maybe Ada.  If you are debugging a
175miscompilation of a different stage2 front-end (for example, of the
176Fortran front-end), you may want to have front-ends for other languages
177in the first stage as well.  To do so, set @code{STAGE1_LANGUAGES}
178on the command line when doing @samp{make}.
179
180For example, in the aforementioned scenario of debugging a Fortran
181front-end miscompilation caused by the stage1 compiler, you may need a
182command like
183
184@example
185make stage2-bubble STAGE1_LANGUAGES=c,fortran
186@end example
187
188Alternatively, you can use per-language targets to build and test
189languages that are not enabled by default in stage1.  For example,
190@command{make f951} will build a Fortran compiler even in the stage1
191build directory.
192
193