]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/doc/install.texi
c99_classification_macros_c.cc: Don't xfail test on darwin8 or later.
[thirdparty/gcc.git] / gcc / doc / install.texi
CommitLineData
f42974dc
DW
1\input texinfo.tex @c -*-texinfo-*-
2@c @ifnothtml
3@c %**start of header
d7f8491b 4@setfilename gccinstall.info
f42974dc
DW
5@settitle Installing GCC
6@setchapternewpage odd
7@c %**end of header
8@c @end ifnothtml
9
7771bb62
BM
10@include gcc-common.texi
11
f42974dc
DW
12@c Specify title for specific html page
13@ifset indexhtml
14@settitle Installing GCC
15@end ifset
16@ifset specifichtml
17@settitle Host/Target specific installation notes for GCC
18@end ifset
67b1fbb9
KG
19@ifset prerequisiteshtml
20@settitle Prerequisites for GCC
21@end ifset
f42974dc
DW
22@ifset downloadhtml
23@settitle Downloading GCC
24@end ifset
25@ifset configurehtml
26@settitle Installing GCC: Configuration
27@end ifset
28@ifset buildhtml
29@settitle Installing GCC: Building
30@end ifset
31@ifset testhtml
32@settitle Installing GCC: Testing
33@end ifset
34@ifset finalinstallhtml
35@settitle Installing GCC: Final installation
36@end ifset
37@ifset binarieshtml
38@settitle Installing GCC: Binaries
39@end ifset
73e2155a
JM
40@ifset oldhtml
41@settitle Installing GCC: Old documentation
42@end ifset
aed5964b
JM
43@ifset gfdlhtml
44@settitle Installing GCC: GNU Free Documentation License
45@end ifset
f42974dc 46
aed5964b 47@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
8d8da227 48@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
f42974dc
DW
49@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
50
d7f755c3
PB
51@c IMPORTANT: whenever you modify this file, run `install.texi2html' to
52@c test the generation of HTML documents for the gcc.gnu.org web pages.
53@c
54@c Do not use @footnote{} in this file as it breaks install.texi2html!
55
f42974dc
DW
56@c Include everything if we're not making html
57@ifnothtml
58@set indexhtml
59@set specifichtml
67b1fbb9 60@set prerequisiteshtml
f42974dc
DW
61@set downloadhtml
62@set configurehtml
63@set buildhtml
64@set testhtml
65@set finalinstallhtml
66@set binarieshtml
73e2155a 67@set oldhtml
aed5964b 68@set gfdlhtml
f42974dc
DW
69@end ifnothtml
70
71@c Part 2 Summary Description and Copyright
bdefb2ab 72@copying
70b1e376
RW
73Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
741998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
752008 Free Software Foundation, Inc.
aed5964b
JM
76@sp 1
77Permission is granted to copy, distribute and/or modify this document
b3a8389d 78under the terms of the GNU Free Documentation License, Version 1.2 or
aed5964b
JM
79any later version published by the Free Software Foundation; with no
80Invariant Sections, the Front-Cover texts being (a) (see below), and
81with the Back-Cover Texts being (b) (see below). A copy of the
82license is included in the section entitled ``@uref{./gfdl.html,,GNU
83Free Documentation License}''.
84
85(a) The FSF's Front-Cover Text is:
86
87 A GNU Manual
88
89(b) The FSF's Back-Cover Text is:
90
91 You have freedom to copy and modify this GNU Manual, like GNU
92 software. Copies published by the Free Software Foundation raise
93 funds for GNU development.
bdefb2ab 94@end copying
f42974dc 95@ifinfo
bdefb2ab 96@insertcopying
f42974dc 97@end ifinfo
c3cb54c6 98@dircategory Software development
802f6d4b
JM
99@direntry
100* gccinstall: (gccinstall). Installing the GNU Compiler Collection.
101@end direntry
f42974dc
DW
102
103@c Part 3 Titlepage and Copyright
104@titlepage
7771bb62
BM
105@title Installing GCC
106@versionsubtitle
f42974dc
DW
107
108@c The following two commands start the copyright page.
109@page
ef88b07d 110@vskip 0pt plus 1filll
bdefb2ab 111@insertcopying
f42974dc
DW
112@end titlepage
113
7771bb62 114@c Part 4 Top node, Master Menu, and/or Table of Contents
f42974dc
DW
115@ifinfo
116@node Top, , , (dir)
117@comment node-name, next, Previous, up
118
119@menu
120* Installing GCC:: This document describes the generic installation
121 procedure for GCC as well as detailing some target
f9047ed3 122 specific installation instructions.
f42974dc
DW
123
124* Specific:: Host/target specific installation notes for GCC.
125* Binaries:: Where to get pre-compiled binaries.
126
73e2155a
JM
127* Old:: Old installation documentation.
128
aed5964b 129* GNU Free Documentation License:: How you can copy and share this manual.
f42974dc
DW
130* Concept Index:: This index has two entries.
131@end menu
132@end ifinfo
133
7771bb62
BM
134@iftex
135@contents
136@end iftex
137
f42974dc
DW
138@c Part 5 The Body of the Document
139@c ***Installing GCC**********************************************************
6cfb3f16 140@ifnothtml
f42974dc
DW
141@comment node-name, next, previous, up
142@node Installing GCC, Binaries, , Top
6cfb3f16 143@end ifnothtml
f42974dc 144@ifset indexhtml
f42974dc
DW
145@ifnothtml
146@chapter Installing GCC
147@end ifnothtml
148
149The latest version of this document is always available at
f9047ed3 150@uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}.
f42974dc
DW
151
152This document describes the generic installation procedure for GCC as well
f9047ed3 153as detailing some target specific installation instructions.
f42974dc 154
f9047ed3
JM
155GCC includes several components that previously were separate distributions
156with their own installation instructions. This document supersedes all
eea81d3e 157package specific installation instructions.
f42974dc 158
f9047ed3 159@emph{Before} starting the build/install procedure please check the
f42974dc 160@ifnothtml
eea81d3e 161@ref{Specific, host/target specific installation notes}.
f42974dc 162@end ifnothtml
c009f01f 163@ifhtml
f9047ed3 164@uref{specific.html,,host/target specific installation notes}.
c009f01f 165@end ifhtml
f9047ed3 166We recommend you browse the entire generic installation instructions before
f42974dc
DW
167you proceed.
168
c009f01f 169Lists of successful builds for released versions of GCC are
daf2f129 170available at @uref{http://gcc.gnu.org/buildstat.html}.
c009f01f
JJ
171These lists are updated as new information becomes available.
172
f9047ed3 173The installation procedure itself is broken into five steps.
f42974dc
DW
174
175@ifinfo
176@menu
67b1fbb9 177* Prerequisites::
f42974dc
DW
178* Downloading the source::
179* Configuration::
180* Building::
181* Testing:: (optional)
182* Final install::
183@end menu
184@end ifinfo
c009f01f 185@ifhtml
f42974dc 186@enumerate
f9047ed3 187@item
67b1fbb9
KG
188@uref{prerequisites.html,,Prerequisites}
189@item
f42974dc 190@uref{download.html,,Downloading the source}
f42974dc 191@item
f9047ed3
JM
192@uref{configure.html,,Configuration}
193@item
194@uref{build.html,,Building}
195@item
196@uref{test.html,,Testing} (optional)
f42974dc
DW
197@item
198@uref{finalinstall.html,,Final install}
199@end enumerate
c009f01f 200@end ifhtml
f42974dc 201
38209993 202Please note that GCC does not support @samp{make uninstall} and probably
f9047ed3 203won't do so in the near future as this would open a can of worms. Instead,
f42974dc 204we suggest that you install GCC into a directory of its own and simply
38209993 205remove that directory when you do not need that specific version of GCC
eea81d3e
RO
206any longer, and, if shared libraries are installed there as well, no
207more binaries exist that use them.
f42974dc 208
73e2155a
JM
209@ifhtml
210There are also some @uref{old.html,,old installation instructions},
211which are mostly obsolete but still contain some information which has
212not yet been merged into the main part of this manual.
213@end ifhtml
214
f42974dc 215@html
b8db17af 216<hr />
f42974dc
DW
217<p>
218@end html
219@ifhtml
220@uref{./index.html,,Return to the GCC Installation page}
aed5964b 221
bdefb2ab 222@insertcopying
f42974dc
DW
223@end ifhtml
224@end ifset
225
67b1fbb9
KG
226@c ***Prerequisites**************************************************
227@ifnothtml
228@comment node-name, next, previous, up
229@node Prerequisites, Downloading the source, , Installing GCC
230@end ifnothtml
231@ifset prerequisiteshtml
232@ifnothtml
233@chapter Prerequisites
234@end ifnothtml
235@cindex Prerequisites
236
237GCC requires that various tools and packages be available for use in the
238build procedure. Modifying GCC sources requires additional tools
239described below.
240
241@heading Tools/packages necessary for building GCC
242@table @asis
243@item ISO C90 compiler
80521187 244Necessary to bootstrap GCC, although versions of GCC prior
67b1fbb9
KG
245to 3.4 also allow bootstrapping with a traditional (K&R) C compiler.
246
80521187 247To build all languages in a cross-compiler or other configuration where
67b1fbb9
KG
2483-stage bootstrap is not performed, you need to start with an existing
249GCC binary (version 2.95 or later) because source code for language
250frontends other than C might use GCC extensions.
251
252@item GNAT
253
254In order to build the Ada compiler (GNAT) you must already have GNAT
255installed because portions of the Ada frontend are written in Ada (with
256GNAT extensions.) Refer to the Ada installation instructions for more
257specific information.
258
259@item A ``working'' POSIX compatible shell, or GNU bash
260
261Necessary when running @command{configure} because some
262@command{/bin/sh} shells have bugs and may crash when configuring the
80521187
GP
263target libraries. In other cases, @command{/bin/sh} or @command{ksh}
264have disastrous corner-case performance problems. This
67b1fbb9
KG
265can cause target @command{configure} runs to literally take days to
266complete in some cases.
267
268So on some platforms @command{/bin/ksh} is sufficient, on others it
269isn't. See the host/target specific instructions for your platform, or
270use @command{bash} to be sure. Then set @env{CONFIG_SHELL} in your
271environment to your ``good'' shell prior to running
272@command{configure}/@command{make}.
273
daf2f129 274@command{zsh} is not a fully compliant POSIX shell and will not
8a36672b 275work when configuring GCC@.
1b49d06f 276
3f737aa9
RW
277@item A POSIX or SVR4 awk
278
279Necessary for creating some of the generated source files for GCC@.
280If in doubt, use a recent GNU awk version, as some of the older ones
281are broken. GNU awk version 3.1.5 is known to work.
282
67b1fbb9
KG
283@item GNU binutils
284
285Necessary in some circumstances, optional in others. See the
286host/target specific instructions for your platform for the exact
287requirements.
288
289@item gzip version 1.2.4 (or later) or
290@itemx bzip2 version 1.0.2 (or later)
291
292Necessary to uncompress GCC @command{tar} files when source code is
293obtained via FTP mirror sites.
294
6cba282a 295@item GNU make version 3.80 (or later)
e158a5fb 296
8a36672b 297You must have GNU make installed to build GCC@.
e158a5fb 298
f44a5ab6 299@item GNU tar version 1.14 (or later)
67b1fbb9
KG
300
301Necessary (only on some platforms) to untar the source code. Many
302systems' @command{tar} programs will also work, only try GNU
303@command{tar} if you have problems.
304
e48d66a9 305@item GNU Multiple Precision Library (GMP) version 4.1 (or later)
bda4d063 306
0ee2ea09 307Necessary to build GCC@. If you do not have it installed in your
70ec446f 308library search path, you will have to configure with the
c02c7cb1
TS
309@option{--with-gmp} configure option. See also @option{--with-gmp-lib}
310and @option{--with-gmp-include}. Alternatively, if a GMP source
311distribution is found in a subdirectory of your GCC sources named
312@file{gmp}, it will be built together with GCC@.
bda4d063 313
36c713e0 314@item MPFR Library version 2.3.2 (or later)
bebf829d 315
0ee2ea09 316Necessary to build GCC@. It can be downloaded from
b5147de7
KG
317@uref{http://www.mpfr.org/}. The version of MPFR that is bundled with
318GMP 4.1.x contains numerous bugs. Although GCC may appear to function
319with the buggy versions of MPFR, there are a few bugs that will not be
320fixed when using this version. It is strongly recommended to upgrade
321to the recommended version of MPFR.
bebf829d 322
8a877c9c 323The @option{--with-mpfr} configure option should be used if your MPFR
641afcff
TS
324Library is not installed in your default library search path. See also
325@option{--with-mpfr-lib} and @option{--with-mpfr-include}.
c02c7cb1
TS
326Alternatively, if a MPFR source distribution is found in a subdirectory
327of your GCC sources named @file{mpfr}, it will be built together with
641afcff
TS
328GCC@.
329
bebf829d 330
02809848 331@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
b52be2c8
TT
332
333Necessary to build libgcj, the GCJ runtime.
334
67b1fbb9
KG
335@end table
336
337
338@heading Tools/packages necessary for modifying GCC
339@table @asis
565f8ce5 340@item autoconf version 2.59
67b1fbb9
KG
341@itemx GNU m4 version 1.4 (or later)
342
89acbae0 343Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@:
565f8ce5 344to regenerate @file{configure} and @file{config.in} files.
67b1fbb9 345
2d142abd 346@item automake version 1.9.6
67b1fbb9
KG
347
348Necessary when modifying a @file{Makefile.am} file to regenerate its
ce5c1cf3
KC
349associated @file{Makefile.in}.
350
351Much of GCC does not use automake, so directly edit the @file{Makefile.in}
352file. Specifically this applies to the @file{gcc}, @file{intl},
078e3ffe
PB
353@file{libcpp}, @file{libiberty}, @file{libobjc} directories as well
354as any of their subdirectories.
ce5c1cf3 355
ae8cacc6 356For directories that use automake, GCC requires the latest release in
2d142abd 357the 1.9.x series, which is currently 1.9.6. When regenerating a directory
ae8cacc6
KC
358to a newer version, please update all the directories using an older 1.9.x
359to the latest released version.
ccfca4ae 360
4b794eaf 361@item gettext version 0.14.5 (or later)
4f3ce03f
JM
362
363Needed to regenerate @file{gcc.pot}.
67b1fbb9
KG
364
365@item gperf version 2.7.2 (or later)
366
367Necessary when modifying @command{gperf} input files, e.g.@:
368@file{gcc/cp/cfns.gperf} to regenerate its associated header file, e.g.@:
369@file{gcc/cp/cfns.h}.
370
80521187
GP
371@item DejaGnu 1.4.4
372@itemx Expect
373@itemx Tcl
67b1fbb9 374
80521187 375Necessary to run the GCC testsuite; see the section on testing for details.
67b1fbb9
KG
376
377@item autogen version 5.5.4 (or later) and
378@itemx guile version 1.4.1 (or later)
379
380Necessary to regenerate @file{fixinc/fixincl.x} from
381@file{fixinc/inclhack.def} and @file{fixinc/*.tpl}.
382
80521187 383Necessary to run @samp{make check} for @file{fixinc}.
67b1fbb9 384
ce5c1cf3 385Necessary to regenerate the top level @file{Makefile.in} file from
67b1fbb9
KG
386@file{Makefile.tpl} and @file{Makefile.def}.
387
67b1fbb9
KG
388@item Flex version 2.5.4 (or later)
389
390Necessary when modifying @file{*.l} files.
391
392Necessary to build GCC during development because the generated output
80521187 393files are not included in the SVN repository. They are included in
67b1fbb9
KG
394releases.
395
7326a39e 396@item Texinfo version 4.7 (or later)
67b1fbb9
KG
397
398Necessary for running @command{makeinfo} when modifying @file{*.texi}
399files to test your changes.
400
cc5c2741
BM
401Necessary for running @command{make dvi} or @command{make pdf} to
402create printable documentation in DVI or PDF format. Texinfo version
4034.8 or later is required for @command{make pdf}.
404
67b1fbb9 405Necessary to build GCC documentation during development because the
80521187 406generated output files are not included in the SVN repository. They are
67b1fbb9
KG
407included in releases.
408
409@item @TeX{} (any working version)
410
cc5c2741
BM
411Necessary for running @command{texi2dvi} and @command{texi2pdf}, which
412are used when running @command{make dvi} or @command{make pdf} to create
413DVI or PDF files, respectively.
67b1fbb9 414
80521187
GP
415@item SVN (any version)
416@itemx SSH (any version)
67b1fbb9 417
80521187 418Necessary to access the SVN repository. Public releases and weekly
8a36672b 419snapshots of the development sources are also available via FTP@.
67b1fbb9 420
80521187 421@item Perl version 5.6.1 (or later)
67b1fbb9
KG
422
423Necessary when regenerating @file{Makefile} dependencies in libiberty.
4f3ce03f
JM
424Necessary when regenerating @file{libiberty/functions.texi}.
425Necessary when generating manpages from Texinfo manuals.
a9fdd472
GK
426Necessary when targetting Darwin, building libstdc++,
427and not using @option{--disable-symvers}.
80521187 428Used by various scripts to generate some files included in SVN (mainly
4f3ce03f 429Unicode-related and rarely changing) from source tables.
67b1fbb9
KG
430
431@item GNU diffutils version 2.7 (or later)
432
80521187 433Useful when submitting patches for the GCC source code.
67b1fbb9
KG
434
435@item patch version 2.5.4 (or later)
436
437Necessary when applying patches, created with @command{diff}, to one's
438own sources.
439
69403237
TT
440@item ecj1
441@itemx gjavah
442
443If you wish to modify @file{.java} files in libjava, you will need to
444configure with @option{--enable-java-maintainer-mode}, and you will need
445to have executables named @command{ecj1} and @command{gjavah} in your path.
446The @command{ecj1} executable should run the Eclipse Java compiler via
447the GCC-specific entry point. You can download a suitable jar from
448@uref{ftp://sourceware.org/pub/java/}, or by running the script
449@command{contrib/download_ecj}.
450
793c44bd
MK
451@item antlr.jar version 2.7.1 (or later)
452@itemx antlr binary
453
454If you wish to build the @command{gjdoc} binary in libjava, you will
455need to have a @file{antlr.jar} library available. The library is
456searched in system locations but can be configured with
457@option{--with-antlr-jar=} instead. When configuring with
458@option{--enable-java-maintainer-mode}, you will need to have one of
459the executables named @command{cantlr}, @command{runantlr} or
460@command{antlr} in your path.
461
67b1fbb9
KG
462@end table
463
464@html
465<hr />
466<p>
467@end html
468@ifhtml
469@uref{./index.html,,Return to the GCC Installation page}
470@end ifhtml
471@end ifset
472
f42974dc 473@c ***Downloading the source**************************************************
6cfb3f16 474@ifnothtml
f42974dc 475@comment node-name, next, previous, up
67b1fbb9 476@node Downloading the source, Configuration, Prerequisites, Installing GCC
6cfb3f16 477@end ifnothtml
f42974dc 478@ifset downloadhtml
f42974dc
DW
479@ifnothtml
480@chapter Downloading GCC
481@end ifnothtml
482@cindex Downloading GCC
483@cindex Downloading the Source
484
80521187 485GCC is distributed via @uref{http://gcc.gnu.org/svn.html,,SVN} and FTP
eea81d3e 486tarballs compressed with @command{gzip} or
6cfb3f16 487@command{bzip2}. It is possible to download a full distribution or specific
f42974dc
DW
488components.
489
962e6e00 490Please refer to the @uref{http://gcc.gnu.org/releases.html,,releases web page}
161d7b59 491for information on how to obtain GCC@.
f42974dc 492
374716e7
BM
493The full distribution includes the C, C++, Objective-C, Fortran, Java,
494and Ada (in the case of GCC 3.1 and later) compilers. The full
495distribution also includes runtime libraries for C++, Objective-C,
496Fortran, and Java. In GCC 3.0 and later versions, the GNU compiler
497testsuites are also included in the full distribution.
f42974dc
DW
498
499If you choose to download specific components, you must download the core
eea81d3e 500GCC distribution plus any language specific distributions you wish to
6c0a4eab 501use. The core distribution includes the C language front end as well as the
767094dd 502shared components. Each language has a tarball which includes the language
6c0a4eab 503front end as well as the language runtime (when appropriate).
f42974dc
DW
504
505Unpack the core distribution as well as any language specific
506distributions in the same directory.
507
508If you also intend to build binutils (either to upgrade an existing
509installation or for use in place of the corresponding tools of your
510OS), unpack the binutils distribution either in the same directory or
511a separate one. In the latter case, add symbolic links to any
512components of the binutils you intend to build alongside the compiler
6cfb3f16
JM
513(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld},
514@file{opcodes}, @dots{}) to the directory containing the GCC sources.
f42974dc 515
641afcff
TS
516Likewise, the GMP and MPFR libraries can be automatically built together
517with GCC. Unpack the GMP and/or MPFR source distributions in the
518directory containing the GCC sources and rename their directories to
519@file{gmp} and @file{mpfr}, respectively (or use symbolic links with the
520same name).
521
f42974dc 522@html
b8db17af 523<hr />
f42974dc
DW
524<p>
525@end html
526@ifhtml
527@uref{./index.html,,Return to the GCC Installation page}
528@end ifhtml
529@end ifset
530
531@c ***Configuration***********************************************************
6cfb3f16 532@ifnothtml
f42974dc
DW
533@comment node-name, next, previous, up
534@node Configuration, Building, Downloading the source, Installing GCC
6cfb3f16 535@end ifnothtml
f42974dc 536@ifset configurehtml
f42974dc
DW
537@ifnothtml
538@chapter Installing GCC: Configuration
539@end ifnothtml
540@cindex Configuration
541@cindex Installing GCC: Configuration
542
543Like most GNU software, GCC must be configured before it can be built.
544This document describes the recommended configuration procedure
545for both native and cross targets.
546
38209993
LG
547We use @var{srcdir} to refer to the toplevel source directory for
548GCC; we use @var{objdir} to refer to the toplevel build/object directory.
549
80521187 550If you obtained the sources via SVN, @var{srcdir} must refer to the top
38209993
LG
551@file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
552and not its @file{gcc} subdirectory, otherwise the build will fail.
f42974dc 553
b4b0fb02
RO
554If either @var{srcdir} or @var{objdir} is located on an automounted NFS
555file system, the shell's built-in @command{pwd} command will return
556temporary pathnames. Using these can lead to various sorts of build
557problems. To avoid this issue, set the @env{PWDCMD} environment
558variable to an automounter-aware @command{pwd} command, e.g.,
7ba4ca63 559@command{pawd} or @samp{amq -w}, during the configuration and build
b4b0fb02
RO
560phases.
561
102b60d1
GP
562First, we @strong{highly} recommend that GCC be built into a
563separate directory than the sources which does @strong{not} reside
564within the source tree. This is how we generally build GCC; building
565where @var{srcdir} == @var{objdir} should still work, but doesn't
566get extensive testing; building where @var{objdir} is a subdirectory
567of @var{srcdir} is unsupported.
f42974dc 568
eea81d3e 569If you have previously built GCC in the same directory for a
f85b8d1a 570different target machine, do @samp{make distclean} to delete all files
377dfc82
GP
571that might be invalid. One of the files this deletes is @file{Makefile};
572if @samp{make distclean} complains that @file{Makefile} does not exist
573or issues a message like ``don't know how to make distclean'' it probably
574means that the directory is already suitably clean. However, with the
575recommended method of building in a separate @var{objdir}, you should
576simply use a different @var{objdir} for each target.
f85b8d1a 577
38209993
LG
578Second, when configuring a native system, either @command{cc} or
579@command{gcc} must be in your path or you must set @env{CC} in
df002c7d
DE
580your environment before running configure. Otherwise the configuration
581scripts may fail.
f42974dc 582
cc11cc9b 583@ignore
eea81d3e
RO
584Note that the bootstrap compiler and the resulting GCC must be link
585compatible, else the bootstrap will fail with linker errors about
586incompatible object file formats. Several multilibed targets are
e69aa433
GP
587affected by this requirement, see
588@ifnothtml
589@ref{Specific, host/target specific installation notes}.
590@end ifnothtml
c009f01f 591@ifhtml
e69aa433 592@uref{specific.html,,host/target specific installation notes}.
c009f01f 593@end ifhtml
cc11cc9b 594@end ignore
eea81d3e 595
f42974dc
DW
596To configure GCC:
597
3ab51846 598@smallexample
38209993
LG
599 % mkdir @var{objdir}
600 % cd @var{objdir}
eea81d3e 601 % @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 602@end smallexample
f42974dc 603
2f41c1d6
PB
604@heading Distributor options
605
606If you will be distributing binary versions of GCC, with modifications
607to the source code, you should use the options described in this
608section to make clear that your version contains modifications.
609
610@table @code
611@item --with-pkgversion=@var{version}
612Specify a string that identifies your package. You may wish
613to include a build number or build date. This version string will be
614included in the output of @command{gcc --version}. This suffix does
615not replace the default version string, only the @samp{GCC} part.
616
617The default value is @samp{GCC}.
618
619@item --with-bugurl=@var{url}
620Specify the URL that users should visit if they wish to report a bug.
621You are of course welcome to forward bugs reported to you to the FSF,
622if you determine that they are not bugs in your modifications.
623
624The default value refers to the FSF's GCC bug tracker.
625
626@end table
f42974dc 627
ef88b07d 628@heading Target specification
f42974dc
DW
629@itemize @bullet
630@item
38209993 631GCC has code to correctly determine the correct value for @var{target}
f9047ed3 632for nearly all native systems. Therefore, we highly recommend you not
f42974dc
DW
633provide a configure target when configuring a native compiler.
634
635@item
6cfb3f16 636@var{target} must be specified as @option{--target=@var{target}}
f9047ed3 637when configuring a cross compiler; examples of valid targets would be
a4a4b1d3 638m68k-coff, sh-elf, etc.
f42974dc
DW
639
640@item
6cfb3f16 641Specifying just @var{target} instead of @option{--target=@var{target}}
38209993 642implies that the host defaults to @var{target}.
f42974dc
DW
643@end itemize
644
645
ef88b07d 646@heading Options specification
f42974dc 647
ef88b07d 648Use @var{options} to override several configure time options for
7ba4ca63 649GCC@. A list of supported @var{options} follows; @samp{configure
80f9249a
JM
650--help} may list other options, but those not listed below may not
651work and should not normally be used.
f42974dc 652
c1c3bb0c
ME
653Note that each @option{--enable} option has a corresponding
654@option{--disable} option and that each @option{--with} option has a
655corresponding @option{--without} option.
656
ef88b07d
JM
657@table @code
658@item --prefix=@var{dirname}
659Specify the toplevel installation
f42974dc
DW
660directory. This is the recommended way to install the tools into a directory
661other than the default. The toplevel installation directory defaults to
6cfb3f16 662@file{/usr/local}.
f42974dc 663
38209993 664We @strong{highly} recommend against @var{dirname} being the same or a
a7582c8c
BE
665subdirectory of @var{objdir} or vice versa. If specifying a directory
666beneath a user's home directory tree, some shells will not expand
667@var{dirname} correctly if it contains the @samp{~} metacharacter; use
668@env{$HOME} instead.
f42974dc 669
8e5f33ff
GK
670The following standard @command{autoconf} options are supported. Normally you
671should not need to use these options.
ef88b07d 672@table @code
ab130aa5
JM
673@item --exec-prefix=@var{dirname}
674Specify the toplevel installation directory for architecture-dependent
675files. The default is @file{@var{prefix}}.
676
677@item --bindir=@var{dirname}
678Specify the installation directory for the executables called by users
679(such as @command{gcc} and @command{g++}). The default is
680@file{@var{exec-prefix}/bin}.
681
682@item --libdir=@var{dirname}
683Specify the installation directory for object code libraries and
8e5f33ff
GK
684internal data files of GCC@. The default is @file{@var{exec-prefix}/lib}.
685
686@item --libexecdir=@var{dirname}
687Specify the installation directory for internal executables of GCC@.
6ccde948 688The default is @file{@var{exec-prefix}/libexec}.
ab130aa5
JM
689
690@item --with-slibdir=@var{dirname}
691Specify the installation directory for the shared libgcc library. The
692default is @file{@var{libdir}}.
693
694@item --infodir=@var{dirname}
695Specify the installation directory for documentation in info format.
696The default is @file{@var{prefix}/info}.
697
8567c70f
TT
698@item --datadir=@var{dirname}
699Specify the installation directory for some architecture-independent
700data files referenced by GCC@. The default is @file{@var{prefix}/share}.
701
ab130aa5
JM
702@item --mandir=@var{dirname}
703Specify the installation directory for manual pages. The default is
704@file{@var{prefix}/man}. (Note that the manual pages are only extracts from
8e9a4a45 705the full GCC manuals, which are provided in Texinfo format. The manpages
ab130aa5
JM
706are derived by an automatic conversion process from parts of the full
707manual.)
708
ef88b07d
JM
709@item --with-gxx-include-dir=@var{dirname}
710Specify
eea81d3e 711the installation directory for G++ header files. The default is
e0b24bce 712@file{@var{prefix}/include/c++/@var{version}}.
ecb7d6b3 713
ef88b07d 714@end table
f42974dc 715
b21d216c
AF
716@item --program-prefix=@var{prefix}
717GCC supports some transformations of the names of its programs when
8a36672b
JM
718installing them. This option prepends @var{prefix} to the names of
719programs to install in @var{bindir} (see above). For example, specifying
b21d216c
AF
720@option{--program-prefix=foo-} would result in @samp{gcc}
721being installed as @file{/usr/local/bin/foo-gcc}.
722
723@item --program-suffix=@var{suffix}
724Appends @var{suffix} to the names of programs to install in @var{bindir}
8a36672b 725(see above). For example, specifying @option{--program-suffix=-3.1}
b21d216c
AF
726would result in @samp{gcc} being installed as
727@file{/usr/local/bin/gcc-3.1}.
728
729@item --program-transform-name=@var{pattern}
730Applies the @samp{sed} script @var{pattern} to be applied to the names
8a36672b 731of programs to install in @var{bindir} (see above). @var{pattern} has to
b21d216c 732consist of one or more basic @samp{sed} editing commands, separated by
8a36672b 733semicolons. For example, if you want the @samp{gcc} program name to be
b21d216c
AF
734transformed to the installed program @file{/usr/local/bin/myowngcc} and
735the @samp{g++} program name to be transformed to
736@file{/usr/local/bin/gspecial++} without changing other program names,
737you could use the pattern
738@option{--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'}
739to achieve this effect.
740
741All three options can be combined and used together, resulting in more
8a36672b 742complex conversion patterns. As a basic rule, @var{prefix} (and
b21d216c
AF
743@var{suffix}) are prepended (appended) before further transformations
744can happen with a special transformation script @var{pattern}.
745
8c085f6f 746As currently implemented, this option only takes effect for native
b21d216c 747builds; cross compiler binaries' names are not transformed even when a
8c085f6f 748transformation is explicitly asked for by one of these options.
b21d216c
AF
749
750For native builds, some of the installed programs are also installed
751with the target alias in front of their name, as in
8a36672b 752@samp{i686-pc-linux-gnu-gcc}. All of the above transformations happen
78466c0e 753before the target alias is prepended to the name---so, specifying
b21d216c
AF
754@option{--program-prefix=foo-} and @option{program-suffix=-3.1}, the
755resulting binary would be installed as
756@file{/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1}.
757
8ecab453 758As a last shortcoming, none of the installed Ada programs are
b21d216c
AF
759transformed yet, which will be fixed in some time.
760
ef88b07d
JM
761@item --with-local-prefix=@var{dirname}
762Specify the
6ac48571
JM
763installation directory for local include files. The default is
764@file{/usr/local}. Specify this option if you want the compiler to
765search directory @file{@var{dirname}/include} for locally installed
766header files @emph{instead} of @file{/usr/local/include}.
767
768You should specify @option{--with-local-prefix} @strong{only} if your
769site has a different convention (not @file{/usr/local}) for where to put
770site-specific files.
771
772The default value for @option{--with-local-prefix} is @file{/usr/local}
773regardless of the value of @option{--prefix}. Specifying
774@option{--prefix} has no effect on which directory GCC searches for
775local header files. This may seem counterintuitive, but actually it is
776logical.
777
778The purpose of @option{--prefix} is to specify where to @emph{install
779GCC}. The local header files in @file{/usr/local/include}---if you put
161d7b59 780any in that directory---are not part of GCC@. They are part of other
6ac48571
JM
781programs---perhaps many others. (GCC installs its own header files in
782another directory which is based on the @option{--prefix} value.)
783
48209ce5 784Both the local-prefix include directory and the GCC-prefix include
78466c0e 785directory are part of GCC's ``system include'' directories. Although these
48209ce5
JDA
786two directories are not fixed, they need to be searched in the proper
787order for the correct processing of the include_next directive. The
788local-prefix include directory is searched before the GCC-prefix
789include directory. Another characteristic of system include directories
790is that pedantic warnings are turned off for headers in these directories.
791
792Some autoconf macros add @option{-I @var{directory}} options to the
793compiler command line, to ensure that directories containing installed
794packages' headers are searched. When @var{directory} is one of GCC's
795system include directories, GCC will ignore the option so that system
796directories continue to be processed in the correct order. This
797may result in a search order different from what was specified but the
798directory will still be searched.
799
800GCC automatically searches for ordinary libraries using
801@env{GCC_EXEC_PREFIX}. Thus, when the same installation prefix is
802used for both GCC and packages, GCC will automatically search for
803both headers and libraries. This provides a configuration that is
804easy to use. GCC behaves in a manner similar to that when it is
805installed as a system compiler in @file{/usr}.
806
807Sites that need to install multiple versions of GCC may not want to
808use the above simple configuration. It is possible to use the
809@option{--program-prefix}, @option{--program-suffix} and
810@option{--program-transform-name} options to install multiple versions
811into a single directory, but it may be simpler to use different prefixes
812and the @option{--with-local-prefix} option to specify the location of the
813site-specific files for each version. It will then be necessary for
814users to specify explicitly the location of local site libraries
815(e.g., with @env{LIBRARY_PATH}).
816
817The same value can be used for both @option{--with-local-prefix} and
818@option{--prefix} provided it is not @file{/usr}. This can be used
819to avoid the default search of @file{/usr/local/include}.
820
6ac48571
JM
821@strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}!
822The directory you use for @option{--with-local-prefix} @strong{must not}
823contain any of the system's standard header files. If it did contain
824them, certain programs would be miscompiled (including GNU Emacs, on
825certain targets), because this would override and nullify the header
4c64396e 826file corrections made by the @command{fixincludes} script.
6ac48571
JM
827
828Indications are that people who use this option use it based on mistaken
829ideas of what it is for. People use it as if it specified where to
161d7b59 830install part of GCC@. Perhaps they make this assumption because
6ac48571
JM
831installing GCC creates the directory.
832
6cfb3f16 833@item --enable-shared[=@var{package}[,@dots{}]]
0cb98517
AO
834Build shared versions of libraries, if shared libraries are supported on
835the target platform. Unlike GCC 2.95.x and earlier, shared libraries
07659e97 836are enabled by default on all platforms that support shared libraries.
0cb98517
AO
837
838If a list of packages is given as an argument, build shared libraries
839only for the listed packages. For other packages, only static libraries
840will be built. Package names currently recognized in the GCC tree are
841@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
e22df315 842@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc},
07659e97 843@samp{ada}, @samp{libada}, @samp{libjava} and @samp{libobjc}.
55c45226 844Note @samp{libiberty} does not support shared libraries at all.
0cb98517
AO
845
846Use @option{--disable-shared} to build only static libraries. Note that
847@option{--disable-shared} does not accept a list of package names as
848argument, only @option{--enable-shared} does.
f42974dc 849
ef88b07d
JM
850@item @anchor{with-gnu-as}--with-gnu-as
851Specify that the compiler should assume that the
767094dd 852assembler it finds is the GNU assembler. However, this does not modify
377dfc82
GP
853the rules to find an assembler and will result in confusion if the
854assembler found is not actually the GNU assembler. (Confusion may also
8c26c999
JM
855result if the compiler finds the GNU assembler but has not been
856configured with @option{--with-gnu-as}.) If you have more than one
38209993 857assembler installed on your system, you may want to use this option in
cc11cc9b
PB
858connection with @option{--with-as=@var{pathname}} or
859@option{--with-build-time-tools=@var{pathname}}.
38209993 860
8c085f6f
JJ
861The following systems are the only ones where it makes a difference
862whether you use the GNU assembler. On any other system,
863@option{--with-gnu-as} has no effect.
864
2ff16718 865@itemize @bullet
8c085f6f
JJ
866@item @samp{hppa1.0-@var{any}-@var{any}}
867@item @samp{hppa1.1-@var{any}-@var{any}}
8f2afc21
EB
868@item @samp{sparc-sun-solaris2.@var{any}}
869@item @samp{sparc64-@var{any}-solaris2.@var{any}}
8c085f6f 870@end itemize
8c26c999 871
8f2afc21 872On the systems listed above (except for the HP-PA, the SPARC, for ISC on
82563d35
RS
873the 386, if you use the GNU assembler, you should also use the GNU linker
874(and specify @option{--with-gnu-ld}).
8c26c999 875
8f2afc21 876@item @anchor{with-as}--with-as=@var{pathname}
cc11cc9b
PB
877Specify that the compiler should use the assembler pointed to by
878@var{pathname}, rather than the one found by the standard rules to find
879an assembler, which are:
f42974dc
DW
880@itemize @bullet
881@item
cc11cc9b
PB
882Unless GCC is being built with a cross compiler, check the
883@file{@var{libexec}/gcc/@var{target}/@var{version}} directory.
884@var{libexec} defaults to @file{@var{exec-prefix}/libexec};
885@var{exec-prefix} defaults to @var{prefix}, which
886defaults to @file{/usr/local} unless overridden by the
887@option{--prefix=@var{pathname}} switch described above. @var{target}
888is the target system triple, such as @samp{sparc-sun-solaris2.7}, and
889@var{version} denotes the GCC version, such as 3.0.
890
f42974dc 891@item
cc11cc9b
PB
892If the target system is the same that you are building on, check
893operating system specific directories (e.g.@: @file{/usr/ccs/bin} on
250d5688 894Sun Solaris 2).
cc11cc9b
PB
895
896@item
897Check in the @env{PATH} for a tool whose name is prefixed by the
898target system triple.
899
900@item
901Check in the @env{PATH} for a tool whose name is not prefixed by the
902target system triple, if the host and target system triple are
903the same (in other words, we use a host tool if it can be used for
904the target as well).
f42974dc 905@end itemize
cc11cc9b
PB
906
907You may want to use @option{--with-as} if no assembler
908is installed in the directories listed above, or if you have multiple
909assemblers installed and want to choose one that is not found by the
910above rules.
f42974dc 911
ef88b07d
JM
912@item @anchor{with-gnu-ld}--with-gnu-ld
913Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
8f2afc21 914but for the linker.
f42974dc 915
eea81d3e 916@item --with-ld=@var{pathname}
8f2afc21
EB
917Same as @uref{#with-as,,@option{--with-as}}
918but for the linker.
f42974dc 919
ef88b07d
JM
920@item --with-stabs
921Specify that stabs debugging
38209993
LG
922information should be used instead of whatever format the host normally
923uses. Normally GCC uses the same debug format as the host system.
f42974dc 924
8c26c999
JM
925On MIPS based systems and on Alphas, you must specify whether you want
926GCC to create the normal ECOFF debugging format, or to use BSD-style
927stabs passed through the ECOFF symbol table. The normal ECOFF debug
161d7b59
JM
928format cannot fully handle languages other than C@. BSD stabs format can
929handle other languages, but it only works with the GNU debugger GDB@.
8c26c999
JM
930
931Normally, GCC uses the ECOFF debugging format by default; if you
161d7b59 932prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@.
8c26c999
JM
933
934No matter which default you choose when you configure GCC, the user
935can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly
936the debug format for a particular compilation.
937
938@option{--with-stabs} is meaningful on the ISC system on the 386, also, if
939@option{--with-gas} is used. It selects use of stabs debugging
940information embedded in COFF output. This kind of debugging information
941supports C++ well; ordinary COFF debugging information does not.
942
943@option{--with-stabs} is also meaningful on 386 systems running SVR4. It
944selects use of stabs debugging information embedded in ELF output. The
945C++ compiler currently (2.6.0) does not support the DWARF debugging
946information normally used on 386 SVR4 platforms; stabs provide a
947workable alternative. This requires gas and gdb, as the normal SVR4
948tools can not generate or interpret stabs.
949
eea81d3e 950@item --disable-multilib
ef88b07d 951Specify that multiple target
eea81d3e 952libraries to support different target variants, calling
1eaf20ec 953conventions, etc.@: should not be built. The default is to build a
eea81d3e 954predefined set of them.
f42974dc 955
e8515283
DE
956Some targets provide finer-grained control over which multilibs are built
957(e.g., @option{--disable-softfloat}):
958@table @code
e8515283
DE
959@item arc-*-elf*
960biendian.
961
962@item arm-*-*
963fpu, 26bit, underscore, interwork, biendian, nofmult.
964
965@item m68*-*-*
966softfloat, m68881, m68000, m68020.
967
968@item mips*-*-*
969single-float, biendian, softfloat.
970
971@item powerpc*-*-*, rs6000*-*-*
972aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
f282ffb3 973sysv, aix.
e8515283
DE
974
975@end table
976
ef88b07d
JM
977@item --enable-threads
978Specify that the target
38209993
LG
979supports threads. This affects the Objective-C compiler and runtime
980library, and exception handling for other languages like C++ and Java.
6ac48571 981On some systems, this is the default.
f42974dc 982
f6160ed5
LR
983In general, the best (and, in many cases, the only known) threading
984model available will be configured for use. Beware that on some
2dd76960 985systems, GCC has not been taught what threading models are generally
3c6bb1db
LR
986available for the system. In this case, @option{--enable-threads} is an
987alias for @option{--enable-threads=single}.
f6160ed5
LR
988
989@item --disable-threads
990Specify that threading support should be disabled for the system.
3c6bb1db 991This is an alias for @option{--enable-threads=single}.
f6160ed5 992
ef88b07d
JM
993@item --enable-threads=@var{lib}
994Specify that
38209993
LG
995@var{lib} is the thread support library. This affects the Objective-C
996compiler and runtime library, and exception handling for other languages
f85b8d1a
JM
997like C++ and Java. The possibilities for @var{lib} are:
998
999@table @code
1000@item aix
1001AIX thread support.
1002@item dce
1003DCE thread support.
4c80872c
RK
1004@item gnat
1005Ada tasking support. For non-Ada programs, this setting is equivalent
8a36672b 1006to @samp{single}. When used in conjunction with the Ada run time, it
4c80872c
RK
1007causes GCC to use the same thread primitives as Ada uses. This option
1008is necessary when using both Ada and the back end exception handling,
1009which is the default for most Ada targets.
f85b8d1a 1010@item mach
eea81d3e 1011Generic MACH thread support, known to work on NeXTSTEP@. (Please note
3c6bb1db 1012that the file needed to support this configuration, @file{gthr-mach.h}, is
f6160ed5
LR
1013missing and thus this setting will cause a known bootstrap failure.)
1014@item no
1015This is an alias for @samp{single}.
f85b8d1a 1016@item posix
18167442
EB
1017Generic POSIX/Unix98 thread support.
1018@item posix95
1019Generic POSIX/Unix95 thread support.
f6160ed5
LR
1020@item rtems
1021RTEMS thread support.
f85b8d1a
JM
1022@item single
1023Disable thread support, should work for all platforms.
1024@item solaris
eea81d3e 1025Sun Solaris 2 thread support.
f85b8d1a
JM
1026@item vxworks
1027VxWorks thread support.
1028@item win32
1029Microsoft Win32 API thread support.
61fec9ff
JB
1030@item nks
1031Novell Kernel Services thread support.
f85b8d1a 1032@end table
f42974dc 1033
8dea1cca
DD
1034@item --enable-tls
1035Specify that the target supports TLS (Thread Local Storage). Usually
1036configure can correctly determine if TLS is supported. In cases where
1037it guesses incorrectly, TLS can be explicitly enabled or disabled with
1038@option{--enable-tls} or @option{--disable-tls}. This can happen if
1039the assembler supports TLS but the C library does not, or if the
1040assumptions made by the configure test are incorrect.
1041
1042@item --disable-tls
1043Specify that the target does not support TLS.
1044This is an alias for @option{--enable-tls=no}.
1045
ef88b07d 1046@item --with-cpu=@var{cpu}
8981c15b
JM
1047@itemx --with-cpu-32=@var{cpu}
1048@itemx --with-cpu-64=@var{cpu}
7816bea0
DJ
1049Specify which cpu variant the compiler should generate code for by default.
1050@var{cpu} will be used as the default value of the @option{-mcpu=} switch.
59fbf3cb 1051This option is only supported on some targets, including ARM, i386, M68k,
8981c15b
JM
1052PowerPC, and SPARC@. The @option{--with-cpu-32} and
1053@option{--with-cpu-64} options specify separate default CPUs for
105432-bit and 64-bit modes; these options are only supported for i386 and
1055x86-64.
7816bea0
DJ
1056
1057@item --with-schedule=@var{cpu}
1058@itemx --with-arch=@var{cpu}
8981c15b
JM
1059@itemx --with-arch-32=@var{cpu}
1060@itemx --with-arch-64=@var{cpu}
7816bea0 1061@itemx --with-tune=@var{cpu}
8981c15b
JM
1062@itemx --with-tune-32=@var{cpu}
1063@itemx --with-tune-64=@var{cpu}
7816bea0 1064@itemx --with-abi=@var{abi}
9b66ebb1 1065@itemx --with-fpu=@var{type}
7816bea0
DJ
1066@itemx --with-float=@var{type}
1067These configure options provide default values for the @option{-mschedule=},
9b66ebb1
PB
1068@option{-march=}, @option{-mtune=}, @option{-mabi=}, and @option{-mfpu=}
1069options and for @option{-mhard-float} or @option{-msoft-float}. As with
1070@option{--with-cpu}, which switches will be accepted and acceptable values
1071of the arguments depend on the target.
f42974dc 1072
3cf94279
PB
1073@item --with-mode=@var{mode}
1074Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
1075This option is only supported on ARM targets.
1076
9f0df97a
DD
1077@item --with-divide=@var{type}
1078Specify how the compiler should generate code for checking for
1079division by zero. This option is only supported on the MIPS target.
1080The possibilities for @var{type} are:
1081@table @code
1082@item traps
1083Division by zero checks use conditional traps (this is the default on
1084systems that support conditional traps).
1085@item breaks
1086Division by zero checks use the break instruction.
1087@end table
1088
66471b47
DD
1089@c If you make --with-llsc the default for additional targets,
1090@c update the --with-llsc description in the MIPS section below.
1091
1092@item --with-llsc
1093On MIPS targets, make @option{-mllsc} the default when no
1094@option{-mno-lsc} option is passed. This is the default for
1095Linux-based targets, as the kernel will emulate them if the ISA does
1096not provide them.
1097
1098@item --without-llsc
1099On MIPS targets, make @option{-mno-llsc} the default when no
1100@option{-mllsc} option is passed.
1101
e21d5757
DJ
1102@item --with-mips-plt
1103On MIPS targets, make use of copy relocations and PLTs.
1104These features are extensions to the traditional
1105SVR4-based MIPS ABIs and require support from GNU binutils
1106and the runtime C library.
1107
354b7da5
DH
1108@item --enable-__cxa_atexit
1109Define if you want to use __cxa_atexit, rather than atexit, to
1110register C++ destructors for local statics and global objects.
1111This is essential for fully standards-compliant handling of
8a36672b
JM
1112destructors, but requires __cxa_atexit in libc. This option is currently
1113only available on systems with GNU libc. When enabled, this will cause
cea79118 1114@option{-fuse-cxa-atexit} to be passed by default.
354b7da5 1115
ef88b07d
JM
1116@item --enable-target-optspace
1117Specify that target
38209993
LG
1118libraries should be optimized for code space instead of code speed.
1119This is the default for the m32r platform.
f42974dc 1120
ab130aa5
JM
1121@item --disable-cpp
1122Specify that a user visible @command{cpp} program should not be installed.
1123
1124@item --with-cpp-install-dir=@var{dirname}
1125Specify that the user visible @command{cpp} program should be installed
1126in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
f42974dc 1127
07cf4226
DM
1128@item --enable-initfini-array
1129Force the use of sections @code{.init_array} and @code{.fini_array}
1130(instead of @code{.init} and @code{.fini}) for constructors and
1131destructors. Option @option{--disable-initfini-array} has the
1132opposite effect. If neither option is specified, the configure script
1133will try to guess whether the @code{.init_array} and
1134@code{.fini_array} sections are supported and, if they are, use them.
1135
ef88b07d
JM
1136@item --enable-maintainer-mode
1137The build rules that
6cfb3f16 1138regenerate the GCC master message catalog @file{gcc.pot} are normally
767094dd
JM
1139disabled. This is because it can only be rebuilt if the complete source
1140tree is present. If you have changed the sources and want to rebuild the
6ac48571 1141catalog, configuring with @option{--enable-maintainer-mode} will enable
767094dd 1142this. Note that you need a recent version of the @code{gettext} tools
6ac48571
JM
1143to do so.
1144
f5c3bb4b
PB
1145@item --disable-bootstrap
1146For a native build, the default configuration is to perform
1147a 3-stage bootstrap of the compiler when @samp{make} is invoked,
1148testing that GCC can compile itself correctly. If you want to disable
1149this process, you can configure with @option{--disable-bootstrap}.
1150
1151@item --enable-bootstrap
1152In special cases, you may want to perform a 3-stage build
1153even if the target and host triplets are different.
1154This could happen when the host can run code compiled for
1155the target (e.g.@: host is i686-linux, target is i486-linux).
1156Starting from GCC 4.2, to do this you have to configure explicitly
1157with @option{--enable-bootstrap}.
1158
51b9ff45 1159@item --enable-generated-files-in-srcdir
80521187 1160Neither the .c and .h files that are generated from Bison and flex nor the
51b9ff45 1161info manuals and man pages that are built from the .texi files are present
80521187
GP
1162in the SVN development tree. When building GCC from that development tree,
1163or from one of our snapshots, those generated files are placed in your
1164build directory, which allows for the source to be in a readonly
1165directory.
51b9ff45
KC
1166
1167If you configure with @option{--enable-generated-files-in-srcdir} then those
1168generated files will go into the source directory. This is mainly intended
1169for generating release or prerelease tarballs of the GCC sources, since it
80521187
GP
1170is not a requirement that the users of source releases to have flex, Bison,
1171or makeinfo.
51b9ff45 1172
ef88b07d
JM
1173@item --enable-version-specific-runtime-libs
1174Specify
38209993 1175that runtime libraries should be installed in the compiler specific
8e5f33ff
GK
1176subdirectory (@file{@var{libdir}/gcc}) rather than the usual places. In
1177addition, @samp{libstdc++}'s include files will be installed into
1178@file{@var{libdir}} unless you overruled it by using
6cfb3f16 1179@option{--with-gxx-include-dir=@var{dirname}}. Using this option is
38209993 1180particularly useful if you intend to use several versions of GCC in
8a36672b 1181parallel. This is currently supported by @samp{libgfortran},
b9034bbd
AJ
1182@samp{libjava}, @samp{libmudflap}, @samp{libstdc++}, and @samp{libobjc}.
1183
ef88b07d
JM
1184@item --enable-languages=@var{lang1},@var{lang2},@dots{}
1185Specify that only a particular subset of compilers and
767094dd 1186their runtime libraries should be built. For a list of valid values for
6cfb3f16 1187@var{langN} you can issue the following command in the
eea81d3e 1188@file{gcc} directory of your GCC source tree:@*
3ab51846 1189@smallexample
eea81d3e 1190grep language= */config-lang.in
3ab51846 1191@end smallexample
eea81d3e 1192Currently, you can use any of the following:
47530dd9 1193@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran}, @code{java},
e8645a40 1194@code{objc}, @code{obj-c++}.
f995c51f
JW
1195Building the Ada compiler has special requirements, see below.
1196If you do not pass this flag, or specify the option @code{all}, then all
1197default languages available in the @file{gcc} sub-tree will be configured.
e8645a40 1198Ada and Objective-C++ are not default languages; the rest are.
cc11cc9b
PB
1199Re-defining @code{LANGUAGES} when calling @samp{make} @strong{does not}
1200work anymore, as those language sub-directories might not have been
1201configured!
f42974dc 1202
80ca80e9
BM
1203@item --enable-stage1-languages=@var{lang1},@var{lang2},@dots{}
1204Specify that a particular subset of compilers and their runtime
1205libraries should be built with the system C compiler during stage 1 of
1206the bootstrap process, rather than only in later stages with the
1207bootstrapped C compiler. The list of valid values is the same as for
1208@option{--enable-languages}, and the option @code{all} will select all
1209of the languages enabled by @option{--enable-languages}. This option is
1210primarily useful for GCC development; for instance, when a development
1211version of the compiler cannot bootstrap due to compiler bugs, or when
1212one is debugging front ends other than the C front end. When this
1213option is used, one can then build the target libraries for the
1214specified languages with the stage-1 compiler by using @command{make
1215stage1-bubble all-target}, or run the testsuite on the stage-1 compiler
1216for the specified languages using @command{make stage1-start check-gcc}.
1217
cd271054
AC
1218@item --disable-libada
1219Specify that the run-time libraries and tools used by GNAT should not
1220be built. This can be useful for debugging, or for compatibility with
c2910edf 1221previous Ada build procedures, when it was required to explicitly
cd271054
AC
1222do a @samp{make -C gcc gnatlib_and_tools}.
1223
ef0087a7
KH
1224@item --disable-libssp
1225Specify that the run-time libraries for stack smashing protection
1226should not be built.
1227
4fe7a8bc
AH
1228@item --disable-libgomp
1229Specify that the run-time libraries used by GOMP should not be built.
1230
ef88b07d
JM
1231@item --with-dwarf2
1232Specify that the compiler should
eea81d3e 1233use DWARF 2 debugging information as the default.
f85b8d1a 1234
7f970b70
AM
1235@item --enable-targets=all
1236@itemx --enable-targets=@var{target_list}
1237Some GCC targets, e.g.@: powerpc64-linux, build bi-arch compilers.
1238These are compilers that are able to generate either 64-bit or 32-bit
8ab5f5c9 1239code. Typically, the corresponding 32-bit target, e.g.@:
7f970b70
AM
1240powerpc-linux for powerpc64-linux, only generates 32-bit code. This
1241option enables the 32-bit target to be a bi-arch compiler, which is
1242useful when you want a bi-arch compiler that defaults to 32-bit, and
1243you are building a bi-arch or multi-arch binutils in a combined tree.
5f7ca34b
DM
1244Currently, this option only affects sparc-linux, powerpc-linux and
1245x86-linux.
7f970b70
AM
1246
1247@item --enable-secureplt
1248This option enables @option{-msecure-plt} by default for powerpc-linux.
1249@ifnothtml
1250@xref{RS/6000 and PowerPC Options,, RS/6000 and PowerPC Options, gcc,
1251Using the GNU Compiler Collection (GCC)},
1252@end ifnothtml
1253@ifhtml
1254See ``RS/6000 and PowerPC Options'' in the main manual
1255@end ifhtml
1256
922e3e33
UB
1257@item --enable-cld
1258This option enables @option{-mcld} by default for 32-bit x86 targets.
1259@ifnothtml
1260@xref{i386 and x86-64 Options,, i386 and x86-64 Options, gcc,
1261Using the GNU Compiler Collection (GCC)},
1262@end ifnothtml
1263@ifhtml
1264See ``i386 and x86-64 Options'' in the main manual
1265@end ifhtml
1266
f85b8d1a 1267@item --enable-win32-registry
eea81d3e 1268@itemx --enable-win32-registry=@var{key}
f85b8d1a 1269@itemx --disable-win32-registry
95fef11f 1270The @option{--enable-win32-registry} option enables Microsoft Windows-hosted GCC
f85b8d1a
JM
1271to look up installations paths in the registry using the following key:
1272
1273@smallexample
eea81d3e 1274@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}}
f85b8d1a
JM
1275@end smallexample
1276
eea81d3e 1277@var{key} defaults to GCC version number, and can be overridden by the
8a36672b 1278@option{--enable-win32-registry=@var{key}} option. Vendors and distributors
f85b8d1a
JM
1279who use custom installers are encouraged to provide a different key,
1280perhaps one comprised of vendor name and GCC version number, to
767094dd 1281avoid conflict with existing installations. This feature is enabled
6cfb3f16 1282by default, and can be disabled by @option{--disable-win32-registry}
f85b8d1a
JM
1283option. This option has no effect on the other hosts.
1284
1285@item --nfp
1286Specify that the machine does not have a floating point unit. This
c9693e96
LH
1287option only applies to @samp{m68k-sun-sunos@var{n}}. On any other
1288system, @option{--nfp} has no effect.
f85b8d1a 1289
dd859b8a
KG
1290@item --enable-werror
1291@itemx --disable-werror
1292@itemx --enable-werror=yes
1293@itemx --enable-werror=no
1294When you specify this option, it controls whether certain files in the
1295compiler are built with @option{-Werror} in bootstrap stage2 and later.
1296If you don't specify it, @option{-Werror} is turned on for the main
1297development trunk. However it defaults to off for release branches and
1298final releases. The specific files which get @option{-Werror} are
1299controlled by the Makefiles.
1300
f85b8d1a
JM
1301@item --enable-checking
1302@itemx --enable-checking=@var{list}
cdce5c16 1303When you specify this option, the compiler is built to perform internal
e5080aa6 1304consistency checks of the requested complexity. This does not change the
cdce5c16
NS
1305generated code, but adds error checking within the compiler. This will
1306slow down the compiler and may only work properly if you are building
1307the compiler with GCC@. This is @samp{yes} by default when building
80521187 1308from SVN or snapshots, but @samp{release} for releases. More control
cdce5c16
NS
1309over the checks may be had by specifying @var{list}. The categories of
1310checks available are @samp{yes} (most common checks
1311@samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at
1312all), @samp{all} (all but @samp{valgrind}), @samp{release} (cheapest
1313checks @samp{assert,runtime}) or @samp{none} (same as @samp{no}).
1314Individual checks can be enabled with these flags @samp{assert},
604f825c 1315@samp{df}, @samp{fold}, @samp{gc}, @samp{gcac} @samp{misc}, @samp{rtl},
cdce5c16
NS
1316@samp{rtlflag}, @samp{runtime}, @samp{tree}, and @samp{valgrind}.
1317
1318The @samp{valgrind} check requires the external @command{valgrind}
ccf548a7 1319simulator, available from @uref{http://valgrind.org/}. The
604f825c 1320@samp{df}, @samp{rtl}, @samp{gcac} and @samp{valgrind} checks are very expensive.
cdce5c16
NS
1321To disable all checking, @samp{--disable-checking} or
1322@samp{--enable-checking=none} must be explicitly requested. Disabling
1323assertions will make the compiler and runtime slightly faster but
1324increase the risk of undetected internal errors causing wrong code to be
1325generated.
f85b8d1a 1326
22aa533e 1327@item --enable-coverage
31775d31 1328@itemx --enable-coverage=@var{level}
22aa533e 1329With this option, the compiler is built to collect self coverage
8a36672b
JM
1330information, every time it is run. This is for internal development
1331purposes, and only works when the compiler is being built with gcc. The
22aa533e 1332@var{level} argument controls whether the compiler is built optimized or
8a36672b 1333not, values are @samp{opt} and @samp{noopt}. For coverage analysis you
22aa533e 1334want to disable optimization, for performance analysis you want to
8a36672b 1335enable optimization. When coverage is enabled, the default level is
22aa533e
NS
1336without optimization.
1337
439a7e54 1338@item --enable-gather-detailed-mem-stats
95ea367d 1339When this option is specified more detailed information on memory
439a7e54 1340allocation is gathered. This information is printed when using
daf2f129 1341@option{-fmem-report}.
439a7e54 1342
5dd90688
RG
1343@item --with-gc
1344@itemx --with-gc=@var{choice}
1345With this option you can specify the garbage collector implementation
1346used during the compilation process. @var{choice} can be one of
1347@samp{page} and @samp{zone}, where @samp{page} is the default.
1348
f85b8d1a
JM
1349@item --enable-nls
1350@itemx --disable-nls
6cfb3f16 1351The @option{--enable-nls} option enables Native Language Support (NLS),
f85b8d1a 1352which lets GCC output diagnostics in languages other than American
767094dd 1353English. Native Language Support is enabled by default if not doing a
161d7b59 1354canadian cross build. The @option{--disable-nls} option disables NLS@.
f85b8d1a
JM
1355
1356@item --with-included-gettext
c771326b 1357If NLS is enabled, the @option{--with-included-gettext} option causes the build
021c4bfd 1358procedure to prefer its copy of GNU @command{gettext}.
f85b8d1a
JM
1359
1360@item --with-catgets
1361If NLS is enabled, and if the host lacks @code{gettext} but has the
1362inferior @code{catgets} interface, the GCC build procedure normally
1363ignores @code{catgets} and instead uses GCC's copy of the GNU
6cfb3f16 1364@code{gettext} library. The @option{--with-catgets} option causes the
f85b8d1a 1365build procedure to use the host's @code{catgets} in this situation.
80f9249a 1366
5304400d
CR
1367@item --with-libiconv-prefix=@var{dir}
1368Search for libiconv header files in @file{@var{dir}/include} and
1369libiconv library files in @file{@var{dir}/lib}.
1370
9340544b
ZW
1371@item --enable-obsolete
1372Enable configuration for an obsoleted system. If you attempt to
1373configure GCC for a system (build, host, or target) which has been
1374obsoleted, and you do not specify this flag, configure will halt with an
1375error message.
1376
1377All support for systems which have been obsoleted in one release of GCC
1378is removed entirely in the next major release, unless someone steps
1379forward to maintain the port.
486aa804
BE
1380
1381@item --enable-decimal-float
79b87c74
MM
1382@itemx --enable-decimal-float=yes
1383@itemx --enable-decimal-float=no
1384@itemx --enable-decimal-float=bid
1385@itemx --enable-decimal-float=dpd
486aa804 1386@itemx --disable-decimal-float
79b87c74 1387Enable (or disable) support for the C decimal floating point extension
7292b8e4
BE
1388that is in the IEEE 754-2008 standard. This is enabled by default only
1389on PowerPC, i386, and x86_64 GNU/Linux systems. Other systems may also
1390support it, but require the user to specifically enable it. You can
1391optionally control which decimal floating point format is used (either
1392@samp{bid} or @samp{dpd}). The @samp{bid} (binary integer decimal)
1393format is default on i386 and x86_64 systems, and the @samp{dpd}
1394(densely packed decimal) format is default on PowerPC systems.
486aa804 1395
ab22c1fa
CF
1396@item --enable-fixed-point
1397@itemx --disable-fixed-point
1398Enable (or disable) support for C fixed-point arithmetic.
1399This option is enabled by default for some targets (such as MIPS) which
1400have hardware-support for fixed-point operations. On other targets, you
1401may enable this option manually.
1402
ed965309
JJ
1403@item --with-long-double-128
1404Specify if @code{long double} type should be 128-bit by default on selected
1405GNU/Linux architectures. If using @code{--without-long-double-128},
1406@code{long double} will be by default 64-bit, the same as @code{double} type.
1407When neither of these configure options are used, the default will be
1408128-bit @code{long double} when built against GNU C Library 2.4 and later,
140964-bit @code{long double} otherwise.
1410
8a877c9c
KG
1411@item --with-gmp=@var{pathname}
1412@itemx --with-gmp-include=@var{pathname}
1413@itemx --with-gmp-lib=@var{pathname}
1414@itemx --with-mpfr=@var{pathname}
1415@itemx --with-mpfr-include=@var{pathname}
1416@itemx --with-mpfr-lib=@var{pathname}
1417If you do not have GMP (the GNU Multiple Precision library) and the
1418MPFR Libraries installed in a standard location and you want to build
1419GCC, you can explicitly specify the directory where they are installed
1420(@samp{--with-gmp=@var{gmpinstalldir}},
1421@samp{--with-mpfr=@var{mpfrinstalldir}}). The
1422@option{--with-gmp=@var{gmpinstalldir}} option is shorthand for
1423@option{--with-gmp-lib=@var{gmpinstalldir}/lib} and
1424@option{--with-gmp-include=@var{gmpinstalldir}/include}. Likewise the
1425@option{--with-mpfr=@var{mpfrinstalldir}} option is shorthand for
1426@option{--with-mpfr-lib=@var{mpfrinstalldir}/lib} and
1427@option{--with-mpfr-include=@var{mpfrinstalldir}/include}. If these
1428shorthand assumptions are not correct, you can use the explicit
1429include and lib options directly.
1430
c8aea42c
PB
1431@item --with-debug-prefix-map=@var{map}
1432Convert source directory names using @option{-fdebug-prefix-map} when
1433building runtime libraries. @samp{@var{map}} is a space-separated
1434list of maps of the form @samp{@var{old}=@var{new}}.
1435
ef88b07d 1436@end table
f42974dc 1437
c1c3bb0c
ME
1438@subheading Cross-Compiler-Specific Options
1439The following options only apply to building cross compilers.
ef88b07d 1440@table @code
4977bab6
ZW
1441@item --with-sysroot
1442@itemx --with-sysroot=@var{dir}
1443Tells GCC to consider @var{dir} as the root of a tree that contains a
1444(subset of) the root filesystem of the target operating system.
1445Target system headers, libraries and run-time object files will be
1446searched in there. The specified directory is not copied into the
1447install tree, unlike the options @option{--with-headers} and
1448@option{--with-libs} that this option obsoletes. The default value,
1449in case @option{--with-sysroot} is not given an argument, is
047d636f
DJ
1450@option{$@{gcc_tooldir@}/sys-root}. If the specified directory is a
1451subdirectory of @option{$@{exec_prefix@}}, then it will be found relative to
1452the GCC binaries if the installation tree is moved.
4977bab6 1453
160633c6
MM
1454@item --with-build-sysroot
1455@itemx --with-build-sysroot=@var{dir}
1456Tells GCC to consider @var{dir} as the system root (see
526635cb 1457@option{--with-sysroot}) while building target libraries, instead of
160633c6
MM
1458the directory specified with @option{--with-sysroot}. This option is
1459only useful when you are already using @option{--with-sysroot}. You
526635cb 1460can use @option{--with-build-sysroot} when you are configuring with
160633c6 1461@option{--prefix} set to a directory that is different from the one in
526635cb
MM
1462which you are installing GCC and your target libraries.
1463
1464This option affects the system root for the compiler used to build
1465target libraries (which runs on the build system); it does not affect
1466the compiler which is used to build GCC itself.
160633c6 1467
65a824f6
JT
1468@item --with-headers
1469@itemx --with-headers=@var{dir}
4977bab6 1470Deprecated in favor of @option{--with-sysroot}.
65a824f6
JT
1471Specifies that target headers are available when building a cross compiler.
1472The @var{dir} argument specifies a directory which has the target include
1473files. These include files will be copied into the @file{gcc} install
1474directory. @emph{This option with the @var{dir} argument is required} when
1475building a cross compiler, if @file{@var{prefix}/@var{target}/sys-include}
1476doesn't pre-exist. If @file{@var{prefix}/@var{target}/sys-include} does
1477pre-exist, the @var{dir} argument may be omitted. @command{fixincludes}
8a36672b 1478will be run on these files to make them compatible with GCC@.
264d65c1
AP
1479
1480@item --without-headers
1481Tells GCC not use any target headers from a libc when building a cross
2dd76960 1482compiler. When crossing to GNU/Linux, you need the headers so GCC
264d65c1 1483can build the exception handling for libgcc.
264d65c1 1484
65a824f6
JT
1485@item --with-libs
1486@itemx --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
4977bab6 1487Deprecated in favor of @option{--with-sysroot}.
38209993
LG
1488Specifies a list of directories which contain the target runtime
1489libraries. These libraries will be copied into the @file{gcc} install
65a824f6
JT
1490directory. If the directory list is omitted, this option has no
1491effect.
cc11cc9b 1492
ef88b07d 1493@item --with-newlib
eea81d3e 1494Specifies that @samp{newlib} is
38209993 1495being used as the target C library. This causes @code{__eprintf} to be
eea81d3e
RO
1496omitted from @file{libgcc.a} on the assumption that it will be provided by
1497@samp{newlib}.
cc11cc9b
PB
1498
1499@item --with-build-time-tools=@var{dir}
1500Specifies where to find the set of target tools (assembler, linker, etc.)
1501that will be used while building GCC itself. This option can be useful
1502if the directory layouts are different between the system you are building
1503GCC on, and the system where you will deploy it.
1504
1505For example, on a @option{ia64-hp-hpux} system, you may have the GNU
1506assembler and linker in @file{/usr/bin}, and the native tools in a
1507different path, and build a toolchain that expects to find the
1508native tools in @file{/usr/bin}.
1509
1510When you use this option, you should ensure that @var{dir} includes
1511@command{ar}, @command{as}, @command{ld}, @command{nm},
1512@command{ranlib} and @command{strip} if necessary, and possibly
1513@command{objdump}. Otherwise, GCC may use an inconsistent set of
1514tools.
ef88b07d 1515@end table
f9047ed3 1516
c1c3bb0c
ME
1517@subheading Java-Specific Options
1518
1519The following option applies to the build of the Java front end.
1520
1521@table @code
1522@item --disable-libgcj
1523Specify that the run-time libraries
1524used by GCJ should not be built. This is useful in case you intend
1525to use GCJ with some other run-time, or you're going to install it
1526separately, or it just happens not to build on your particular
1527machine. In general, if the Java front end is enabled, the GCJ
1528libraries will be enabled too, unless they're known to not work on
1529the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you
1530may need to port it; in this case, before modifying the top-level
1531@file{configure.in} so that @samp{libgcj} is enabled by default on this platform,
1532you may use @option{--enable-libgcj} to override the default.
1533
1534@end table
1535
1536The following options apply to building @samp{libgcj}.
1537
1538@subsubheading General Options
1539
1540@table @code
69403237
TT
1541@item --enable-java-maintainer-mode
1542By default the @samp{libjava} build will not attempt to compile the
1543@file{.java} source files to @file{.class}. Instead, it will use the
1544@file{.class} files from the source tree. If you use this option you
1545must have executables named @command{ecj1} and @command{gjavah} in your path
1546for use by the build. You must use this option if you intend to
1547modify any @file{.java} files in @file{libjava}.
1548
1549@item --with-java-home=@var{dirname}
1550This @samp{libjava} option overrides the default value of the
1551@samp{java.home} system property. It is also used to set
1552@samp{sun.boot.class.path} to @file{@var{dirname}/lib/rt.jar}. By
1553default @samp{java.home} is set to @file{@var{prefix}} and
1554@samp{sun.boot.class.path} to
1555@file{@var{datadir}/java/libgcj-@var{version}.jar}.
1556
1557@item --with-ecj-jar=@var{filename}
1558This option can be used to specify the location of an external jar
1559file containing the Eclipse Java compiler. A specially modified
1560version of this compiler is used by @command{gcj} to parse
1561@file{.java} source files. If this option is given, the
1562@samp{libjava} build will create and install an @file{ecj1} executable
1563which uses this jar file at runtime.
1564
1565If this option is not given, but an @file{ecj.jar} file is found in
1566the topmost source tree at configure time, then the @samp{libgcj}
1567build will create and install @file{ecj1}, and will also install the
1568discovered @file{ecj.jar} into a suitable place in the install tree.
1569
1570If @file{ecj1} is not installed, then the user will have to supply one
1571on his path in order for @command{gcj} to properly parse @file{.java}
1572source files. A suitable jar is available from
1573@uref{ftp://sourceware.org/pub/java/}.
1574
c1c3bb0c
ME
1575@item --disable-getenv-properties
1576Don't set system properties from @env{GCJ_PROPERTIES}.
1577
1578@item --enable-hash-synchronization
8a36672b 1579Use a global hash table for monitor locks. Ordinarily,
c1c3bb0c 1580@samp{libgcj}'s @samp{configure} script automatically makes
8a36672b 1581the correct choice for this option for your platform. Only use
c1c3bb0c
ME
1582this if you know you need the library to be configured differently.
1583
1584@item --enable-interpreter
8a36672b
JM
1585Enable the Java interpreter. The interpreter is automatically
1586enabled by default on all platforms that support it. This option
c1c3bb0c
ME
1587is really only useful if you want to disable the interpreter
1588(using @option{--disable-interpreter}).
1589
1590@item --disable-java-net
8a36672b 1591Disable java.net. This disables the native part of java.net only,
c1c3bb0c
ME
1592using non-functional stubs for native method implementations.
1593
1594@item --disable-jvmpi
1595Disable JVMPI support.
1596
a507baad
DD
1597@item --disable-libgcj-bc
1598Disable BC ABI compilation of certain parts of libgcj. By default,
1599some portions of libgcj are compiled with @option{-findirect-dispatch}
a26c7632
DD
1600and @option{-fno-indirect-classes}, allowing them to be overridden at
1601run-time.
a507baad
DD
1602
1603If @option{--disable-libgcj-bc} is specified, libgcj is built without
a26c7632
DD
1604these options. This allows the compile-time linker to resolve
1605dependencies when statically linking to libgcj. However it makes it
1606impossible to override the affected portions of libgcj at run-time.
a507baad 1607
c07cd2c7
DD
1608@item --enable-reduced-reflection
1609Build most of libgcj with @option{-freduced-reflection}. This reduces
1610the size of libgcj at the expense of not being able to do accurate
1611reflection on the classes it contains. This option is safe if you
1612know that code using libgcj will never use reflection on the standard
1613runtime classes in libgcj (including using serialization, RMI or CORBA).
1614
c1c3bb0c
ME
1615@item --with-ecos
1616Enable runtime eCos target support.
1617
1618@item --without-libffi
8a36672b 1619Don't use @samp{libffi}. This will disable the interpreter and JNI
c1c3bb0c
ME
1620support as well, as these require @samp{libffi} to work.
1621
1622@item --enable-libgcj-debug
1623Enable runtime debugging code.
1624
1625@item --enable-libgcj-multifile
1626If specified, causes all @file{.java} source files to be
1627compiled into @file{.class} files in one invocation of
8a36672b
JM
1628@samp{gcj}. This can speed up build time, but is more
1629resource-intensive. If this option is unspecified or
c1c3bb0c
ME
1630disabled, @samp{gcj} is invoked once for each @file{.java}
1631file to compile into a @file{.class} file.
1632
1633@item --with-libiconv-prefix=DIR
1634Search for libiconv in @file{DIR/include} and @file{DIR/lib}.
1635
1636@item --enable-sjlj-exceptions
4f6c2131
EB
1637Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
1638@samp{configure} ordinarily picks the correct value based on the platform.
1639Only use this option if you are sure you need a different setting.
c1c3bb0c
ME
1640
1641@item --with-system-zlib
1642Use installed @samp{zlib} rather than that included with GCC@.
1643
1644@item --with-win32-nlsapi=ansi, unicows or unicode
1645Indicates how MinGW @samp{libgcj} translates between UNICODE
8a36672b 1646characters and the Win32 API@.
c9db365d
JS
1647
1648@item --enable-java-home
1649If enabled, this creates a JPackage compatible SDK environment during install.
1650Note that if --enable-java-home is used, --with-arch-directory=ARCH must also
1651be specified.
1652
1653@item --with-arch-directory=ARCH
1654Specifies the name to use for the @file{jre/lib/ARCH} directory in the SDK
1655environment created when --enable-java-home is passed. Typical names for this
1656directory include i386, amd64, ia64, etc.
1657
1658@item --with-os-directory=DIR
1659Specifies the OS directory for the SDK include directory. This is set to auto
1660detect, and is typically 'linux'.
1661
1662@item --with-origin-name=NAME
1663Specifies the JPackage origin name. This defaults to the 'gcj' in
1664java-1.5.0-gcj.
1665
1666@item --with-arch-suffix=SUFFIX
1667Specifies the suffix for the sdk directory. Defaults to the empty string.
1668Examples include '.x86_64' in 'java-1.5.0-gcj-1.5.0.0.x86_64'.
1669
1670@item --with-jvm-root-dir=DIR
1671Specifies where to install the SDK. Default is $(prefix)/lib/jvm.
1672
1673@item --with-jvm-jar-dir=DIR
1674Specifies where to install jars. Default is $(prefix)/lib/jvm-exports.
1675
1676@item --with-python-dir=DIR
1677Specifies where to install the Python modules used for aot-compile. DIR should
1678not include the prefix used in installation. For example, if the Python modules
1679are to be installed in /usr/lib/python2.5/site-packages, then
1680--with-python-dir=/lib/python2.5/site-packages should be passed. If this is
1681not specified, then the Python modules are installed in $(prefix)/share/python.
1682
1683@item --enable-aot-compile-rpm
1684Adds aot-compile-rpm to the list of installed scripts.
1685
c1c3bb0c
ME
1686@table @code
1687@item ansi
1688Use the single-byte @code{char} and the Win32 A functions natively,
8a36672b 1689translating to and from UNICODE when using these functions. If
c1c3bb0c
ME
1690unspecified, this is the default.
1691
1692@item unicows
8a36672b 1693Use the @code{WCHAR} and Win32 W functions natively. Adds
c1c3bb0c
ME
1694@code{-lunicows} to @file{libgcj.spec} to link with @samp{libunicows}.
1695@file{unicows.dll} needs to be deployed on Microsoft Windows 9X machines
8a36672b 1696running built executables. @file{libunicows.a}, an open-source
c1c3bb0c
ME
1697import library around Microsoft's @code{unicows.dll}, is obtained from
1698@uref{http://libunicows.sourceforge.net/}, which also gives details
1699on getting @file{unicows.dll} from Microsoft.
1700
1701@item unicode
8a36672b
JM
1702Use the @code{WCHAR} and Win32 W functions natively. Does @emph{not}
1703add @code{-lunicows} to @file{libgcj.spec}. The built executables will
c1c3bb0c
ME
1704only run on Microsoft Windows NT and above.
1705@end table
1706@end table
1707
1708@subsubheading AWT-Specific Options
1709
1710@table @code
1711@item --with-x
1712Use the X Window System.
1713
1714@item --enable-java-awt=PEER(S)
1715Specifies the AWT peer library or libraries to build alongside
8a36672b
JM
1716@samp{libgcj}. If this option is unspecified or disabled, AWT
1717will be non-functional. Current valid values are @option{gtk} and
1718@option{xlib}. Multiple libraries should be separated by a
431ae0bf 1719comma (i.e.@: @option{--enable-java-awt=gtk,xlib}).
c1c3bb0c
ME
1720
1721@item --enable-gtk-cairo
8a36672b 1722Build the cairo Graphics2D implementation on GTK@.
c1c3bb0c
ME
1723
1724@item --enable-java-gc=TYPE
8a36672b 1725Choose garbage collector. Defaults to @option{boehm} if unspecified.
c1c3bb0c
ME
1726
1727@item --disable-gtktest
1728Do not try to compile and run a test GTK+ program.
1729
1730@item --disable-glibtest
1731Do not try to compile and run a test GLIB program.
1732
1733@item --with-libart-prefix=PFX
1734Prefix where libart is installed (optional).
1735
1736@item --with-libart-exec-prefix=PFX
1737Exec prefix where libart is installed (optional).
1738
1739@item --disable-libarttest
1740Do not try to compile and run a test libart program.
1741
1742@end table
f42974dc
DW
1743
1744@html
b8db17af 1745<hr />
f42974dc
DW
1746<p>
1747@end html
1748@ifhtml
1749@uref{./index.html,,Return to the GCC Installation page}
1750@end ifhtml
1751@end ifset
1752
1753@c ***Building****************************************************************
6cfb3f16 1754@ifnothtml
f42974dc
DW
1755@comment node-name, next, previous, up
1756@node Building, Testing, Configuration, Installing GCC
6cfb3f16 1757@end ifnothtml
f42974dc 1758@ifset buildhtml
f42974dc
DW
1759@ifnothtml
1760@chapter Building
1761@end ifnothtml
1762@cindex Installing GCC: Building
1763
1764Now that GCC is configured, you are ready to build the compiler and
1765runtime libraries.
1766
b8df899a 1767Some commands executed when making the compiler may fail (return a
7ba4ca63 1768nonzero status) and be ignored by @command{make}. These failures, which
b8df899a
JM
1769are often due to files that were not found, are expected, and can safely
1770be ignored.
1771
1772It is normal to have compiler warnings when compiling certain files.
1773Unless you are a GCC developer, you can generally ignore these warnings
dd859b8a
KG
1774unless they cause compilation to fail. Developers should attempt to fix
1775any warnings encountered, however they can temporarily continue past
1776warnings-as-errors by specifying the configure flag
1777@option{--disable-werror}.
b8df899a
JM
1778
1779On certain old systems, defining certain environment variables such as
6cfb3f16 1780@env{CC} can interfere with the functioning of @command{make}.
b8df899a
JM
1781
1782If you encounter seemingly strange errors when trying to build the
1783compiler in a directory other than the source directory, it could be
1784because you have previously configured the compiler in the source
1785directory. Make sure you have done all the necessary preparations.
1786
1787If you build GCC on a BSD system using a directory stored in an old System
4c64396e 1788V file system, problems may occur in running @command{fixincludes} if the
b8df899a
JM
1789System V file system doesn't support symbolic links. These problems
1790result in a failure to fix the declaration of @code{size_t} in
1791@file{sys/types.h}. If you find that @code{size_t} is a signed type and
1792that type mismatches occur, this could be the cause.
1793
161d7b59 1794The solution is not to use such a directory for building GCC@.
f42974dc 1795
01d419ae 1796Similarly, when building from SVN or snapshots, or if you modify
e8645a40
TT
1797@file{*.l} files, you need the Flex lexical analyzer generator
1798installed. If you do not modify @file{*.l} files, releases contain
1799the Flex-generated files and you do not need Flex installed to build
1800them. There is still one Flex-based lexical analyzer (part of the
1801build machinery, not of GCC itself) that is used even if you only
1802build the C front end.
f85b8d1a 1803
80521187 1804When building from SVN or snapshots, or if you modify Texinfo
7326a39e 1805documentation, you need version 4.7 or later of Texinfo installed if you
f85b8d1a
JM
1806want Info documentation to be regenerated. Releases contain Info
1807documentation pre-built for the unmodified documentation in the release.
1808
f42974dc
DW
1809@section Building a native compiler
1810
f5c3bb4b
PB
1811For a native build, the default configuration is to perform
1812a 3-stage bootstrap of the compiler when @samp{make} is invoked.
1813This will build the entire GCC system and ensure that it compiles
1814itself correctly. It can be disabled with the @option{--disable-bootstrap}
1815parameter to @samp{configure}, but bootstrapping is suggested because
1816the compiler will be tested more completely and could also have
1817better performance.
1818
1819The bootstrapping process will complete the following steps:
f42974dc
DW
1820
1821@itemize @bullet
1822@item
80521187 1823Build tools necessary to build the compiler.
f42974dc
DW
1824
1825@item
cc11cc9b
PB
1826Perform a 3-stage bootstrap of the compiler. This includes building
1827three times the target tools for use by the compiler such as binutils
1828(bfd, binutils, gas, gprof, ld, and opcodes) if they have been
1829individually linked or moved into the top level GCC source tree before
1830configuring.
f42974dc
DW
1831
1832@item
1833Perform a comparison test of the stage2 and stage3 compilers.
1834
1835@item
1836Build runtime libraries using the stage3 compiler from the previous step.
f9047ed3 1837
f42974dc
DW
1838@end itemize
1839
38209993 1840If you are short on disk space you might consider @samp{make
cc11cc9b
PB
1841bootstrap-lean} instead. The sequence of compilation is the
1842same described above, but object files from the stage1 and
f42974dc
DW
1843stage2 of the 3-stage bootstrap of the compiler are deleted as
1844soon as they are no longer needed.
1845
1c8bd6a3
PB
1846If you wish to use non-default GCC flags when compiling the stage2
1847and stage3 compilers, set @code{BOOT_CFLAGS} on the command line when
1848doing @samp{make}. For example, if you want to save additional space
1849during the bootstrap and in the final installation as well, you can
1850build the compiler binaries without debugging information as in the
1851following example. This will save roughly 40% of disk space both for
1852the bootstrap and the final installation. (Libraries will still contain
1853debugging information.)
f42974dc 1854
3ab51846 1855@smallexample
1c8bd6a3 1856 make BOOT_CFLAGS='-O' bootstrap
3ab51846 1857@end smallexample
8c085f6f 1858
1c8bd6a3
PB
1859You can place non-default optimization flags into @code{BOOT_CFLAGS}; they
1860are less well tested here than the default of @samp{-g -O2}, but should
1861still work. In a few cases, you may find that you need to specify special
1862flags such as @option{-msoft-float} here to complete the bootstrap; or,
1863if the native compiler miscompiles the stage1 compiler, you may need
1864to work around this, by choosing @code{BOOT_CFLAGS} to avoid the parts
1865of the stage1 compiler that were miscompiled, or by using @samp{make
f85b8d1a
JM
1866bootstrap4} to increase the number of stages of bootstrap.
1867
1c8bd6a3
PB
1868@code{BOOT_CFLAGS} does not apply to bootstrapped target libraries.
1869Since these are always compiled with the compiler currently being
1870bootstrapped, you can use @code{CFLAGS_FOR_TARGET} to modify their
1871compilation flags, as for non-bootstrapped target libraries.
1872Again, if the native compiler miscompiles the stage1 compiler, you may
1873need to work around this by avoiding non-working parts of the stage1
1874compiler. Use @code{STAGE1_LIBCFLAGS} to this end.
c872077c 1875
6cfb3f16 1876If you used the flag @option{--enable-languages=@dots{}} to restrict
f42974dc 1877the compilers to be built, only those you've actually enabled will be
767094dd 1878built. This will of course only build those runtime libraries, for
f42974dc 1879which the particular compiler has been built. Please note,
cc11cc9b 1880that re-defining @env{LANGUAGES} when calling @samp{make}
ef88b07d 1881@strong{does not} work anymore!
f42974dc 1882
f85b8d1a 1883If the comparison of stage2 and stage3 fails, this normally indicates
eea81d3e 1884that the stage2 compiler has compiled GCC incorrectly, and is therefore
f85b8d1a
JM
1885a potentially serious bug which you should investigate and report. (On
1886a few systems, meaningful comparison of object files is impossible; they
1887always appear ``different''. If you encounter this problem, you will
1888need to disable comparison in the @file{Makefile}.)
f42974dc 1889
cc11cc9b
PB
1890If you do not want to bootstrap your compiler, you can configure with
1891@option{--disable-bootstrap}. In particular cases, you may want to
1892bootstrap your compiler even if the target system is not the same as
1893the one you are building on: for example, you could build a
1894@code{powerpc-unknown-linux-gnu} toolchain on a
1895@code{powerpc64-unknown-linux-gnu} host. In this case, pass
1896@option{--enable-bootstrap} to the configure script.
1897
1898
f42974dc
DW
1899@section Building a cross compiler
1900
f42974dc
DW
1901When building a cross compiler, it is not generally possible to do a
19023-stage bootstrap of the compiler. This makes for an interesting problem
161d7b59 1903as parts of GCC can only be built with GCC@.
f42974dc
DW
1904
1905To build a cross compiler, we first recommend building and installing a
1906native compiler. You can then use the native GCC compiler to build the
635771af
JM
1907cross compiler. The installed native compiler needs to be GCC version
19082.95 or later.
f42974dc 1909
c076e75f
DD
1910If the cross compiler is to be built with support for the Java
1911programming language and the ability to compile .java source files is
1912desired, the installed native compiler used to build the cross
1913compiler needs to be the same GCC version as the cross compiler. In
1914addition the cross compiler needs to be configured with
1915@option{--with-ecj-jar=@dots{}}.
1916
f42974dc 1917Assuming you have already installed a native copy of GCC and configured
6cfb3f16 1918your cross compiler, issue the command @command{make}, which performs the
f42974dc
DW
1919following steps:
1920
1921@itemize @bullet
1922@item
80521187 1923Build host tools necessary to build the compiler.
f42974dc
DW
1924
1925@item
1926Build target tools for use by the compiler such as binutils (bfd,
1927binutils, gas, gprof, ld, and opcodes)
1928if they have been individually linked or moved into the top level GCC source
1929tree before configuring.
1930
1931@item
1932Build the compiler (single stage only).
1933
1934@item
1935Build runtime libraries using the compiler from the previous step.
1936@end itemize
1937
1938Note that if an error occurs in any step the make process will exit.
1939
01e97976
JM
1940If you are not building GNU binutils in the same source tree as GCC,
1941you will need a cross-assembler and cross-linker installed before
1942configuring GCC@. Put them in the directory
1943@file{@var{prefix}/@var{target}/bin}. Here is a table of the tools
1944you should put in this directory:
1945
1946@table @file
1947@item as
1948This should be the cross-assembler.
1949
1950@item ld
1951This should be the cross-linker.
1952
1953@item ar
1954This should be the cross-archiver: a program which can manipulate
1955archive files (linker libraries) in the target machine's format.
1956
1957@item ranlib
1958This should be a program to construct a symbol table in an archive file.
1959@end table
1960
1961The installation of GCC will find these programs in that directory,
1962and copy or link them to the proper place to for the cross-compiler to
1963find them when run later.
1964
1965The easiest way to provide these files is to build the Binutils package.
1966Configure it with the same @option{--host} and @option{--target}
1967options that you use for configuring GCC, then build and install
1968them. They install their executables automatically into the proper
1969directory. Alas, they do not support all the targets that GCC
1970supports.
1971
1972If you are not building a C library in the same source tree as GCC,
1973you should also provide the target libraries and headers before
1974configuring GCC, specifying the directories with
1975@option{--with-sysroot} or @option{--with-headers} and
1976@option{--with-libs}. Many targets also require ``start files'' such
1977as @file{crt0.o} and
1978@file{crtn.o} which are linked into each executable. There may be several
1979alternatives for @file{crt0.o}, for use with profiling or other
1980compilation options. Check your target's definition of
1981@code{STARTFILE_SPEC} to find out what start files it uses.
1982
f42974dc
DW
1983@section Building in parallel
1984
d7f755c3
PB
1985GNU Make 3.79 and above, which is necessary to build GCC, support
1986building in parallel. To activate this, you can use @samp{make -j 2}
1987instead of @samp{make}. You can also specify a bigger number, and
cc11cc9b
PB
1988in most cases using a value greater than the number of processors in
1989your machine will result in fewer and shorter I/O latency hits, thus
1990improving overall throughput; this is especially true for slow drives
1991and network filesystems.
f42974dc 1992
e23381df
GB
1993@section Building the Ada compiler
1994
1995In order to build GNAT, the Ada compiler, you need a working GNAT
2c2b1710 1996compiler (GCC version 3.4 or later).
cc11cc9b
PB
1997This includes GNAT tools such as @command{gnatmake} and
1998@command{gnatlink}, since the Ada front end is written in Ada and
1999uses some GNAT-specific extensions.
2000
2001In order to build a cross compiler, it is suggested to install
2002the new compiler as native first, and then use it to build the cross
2003compiler.
e23381df 2004
38e23049
JM
2005@command{configure} does not test whether the GNAT installation works
2006and has a sufficiently recent version; if too old a GNAT version is
2007installed, the build will fail unless @option{--enable-languages} is
2008used to disable building the Ada front end.
e23381df 2009
e397a9f1
ST
2010@env{ADA_INCLUDE_PATH} and @env{ADA_OBJECT_PATH} environment variables
2011must not be set when building the Ada compiler, the Ada tools, or the
2012Ada runtime libraries. You can check that your build environment is clean
2013by verifying that @samp{gnatls -v} lists only one explicit path in each
2014section.
2015
8f231b5d
JH
2016@section Building with profile feedback
2017
2018It is possible to use profile feedback to optimize the compiler itself. This
2019should result in a faster compiler binary. Experiments done on x86 using gcc
20203.3 showed approximately 7 percent speedup on compiling C programs. To
cc11cc9b 2021bootstrap the compiler with profile feedback, use @code{make profiledbootstrap}.
8f231b5d
JH
2022
2023When @samp{make profiledbootstrap} is run, it will first build a @code{stage1}
2024compiler. This compiler is used to build a @code{stageprofile} compiler
2025instrumented to collect execution counts of instruction and branch
2026probabilities. Then runtime libraries are compiled with profile collected.
2027Finally a @code{stagefeedback} compiler is built using the information collected.
2028
cc11cc9b 2029Unlike standard bootstrap, several additional restrictions apply. The
8f231b5d
JH
2030compiler used to build @code{stage1} needs to support a 64-bit integral type.
2031It is recommended to only use GCC for this. Also parallel make is currently
2032not supported since collisions in profile collecting may occur.
2033
f42974dc 2034@html
b8db17af 2035<hr />
f42974dc
DW
2036<p>
2037@end html
2038@ifhtml
2039@uref{./index.html,,Return to the GCC Installation page}
2040@end ifhtml
2041@end ifset
2042
2043@c ***Testing*****************************************************************
6cfb3f16 2044@ifnothtml
f42974dc
DW
2045@comment node-name, next, previous, up
2046@node Testing, Final install, Building, Installing GCC
6cfb3f16 2047@end ifnothtml
f42974dc 2048@ifset testhtml
f42974dc
DW
2049@ifnothtml
2050@chapter Installing GCC: Testing
2051@end ifnothtml
2052@cindex Testing
2053@cindex Installing GCC: Testing
2054@cindex Testsuite
2055
f97903cc
JJ
2056Before you install GCC, we encourage you to run the testsuites and to
2057compare your results with results from a similar configuration that have
2058been submitted to the
2059@uref{http://gcc.gnu.org/ml/gcc-testresults/,,gcc-testresults mailing list}.
05253aed
JJ
2060Some of these archived results are linked from the build status lists
2061at @uref{http://gcc.gnu.org/buildstat.html}, although not everyone who
2062reports a successful build runs the testsuites and submits the results.
f97903cc
JJ
2063This step is optional and may require you to download additional software,
2064but it can give you confidence in your new GCC installation or point out
8a36672b 2065problems before you install and start using your new GCC@.
f42974dc 2066
f9047ed3 2067First, you must have @uref{download.html,,downloaded the testsuites}.
f97903cc
JJ
2068These are part of the full distribution, but if you downloaded the
2069``core'' compiler plus any front ends, you must download the testsuites
2070separately.
f42974dc 2071
f97903cc 2072Second, you must have the testing tools installed. This includes
80521187
GP
2073@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu}, Tcl, and Expect;
2074the DejaGnu site has links to these.
f42974dc 2075
8cacda7c
GP
2076If the directories where @command{runtest} and @command{expect} were
2077installed are not in the @env{PATH}, you may need to set the following
2078environment variables appropriately, as in the following example (which
2079assumes that DejaGnu has been installed under @file{/usr/local}):
f42974dc 2080
3ab51846 2081@smallexample
f42974dc
DW
2082 TCL_LIBRARY = /usr/local/share/tcl8.0
2083 DEJAGNULIBS = /usr/local/share/dejagnu
3ab51846 2084@end smallexample
f42974dc 2085
8cacda7c 2086(On systems such as Cygwin, these paths are required to be actual
f42974dc 2087paths, not mounts or links; presumably this is due to some lack of
8cacda7c 2088portability in the DejaGnu code.)
ecb7d6b3 2089
f42974dc
DW
2090
2091Finally, you can run the testsuite (which may take a long time):
3ab51846 2092@smallexample
ef88b07d 2093 cd @var{objdir}; make -k check
3ab51846 2094@end smallexample
f42974dc 2095
794aca5d
WB
2096This will test various components of GCC, such as compiler
2097front ends and runtime libraries. While running the testsuite, DejaGnu
2098might emit some harmless messages resembling
daf2f129 2099@samp{WARNING: Couldn't find the global config file.} or
794aca5d 2100@samp{WARNING: Couldn't find tool init file} that can be ignored.
06809951 2101
82161911
DD
2102If you are testing a cross-compiler, you may want to run the testsuite
2103on a simulator as described at @uref{http://gcc.gnu.org/simtest-howto.html}.
2104
962e6e00 2105@section How can you run the testsuite on selected tests?
f42974dc 2106
794aca5d
WB
2107In order to run sets of tests selectively, there are targets
2108@samp{make check-gcc} and @samp{make check-g++}
2109in the @file{gcc} subdirectory of the object directory. You can also
2110just run @samp{make check} in a subdirectory of the object directory.
2111
2112
2113A more selective way to just run all @command{gcc} execute tests in the
2114testsuite is to use
f42974dc 2115
3ab51846 2116@smallexample
6cfb3f16 2117 make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
3ab51846 2118@end smallexample
f42974dc 2119
794aca5d
WB
2120Likewise, in order to run only the @command{g++} ``old-deja'' tests in
2121the testsuite with filenames matching @samp{9805*}, you would use
f42974dc 2122
3ab51846 2123@smallexample
6cfb3f16 2124 make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
3ab51846 2125@end smallexample
f42974dc 2126
6cfb3f16
JM
2127The @file{*.exp} files are located in the testsuite directories of the GCC
2128source, the most important ones being @file{compile.exp},
2129@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}.
2130To get a list of the possible @file{*.exp} files, pipe the
38209993 2131output of @samp{make check} into a file and look at the
6cfb3f16 2132@samp{Running @dots{} .exp} lines.
f42974dc 2133
e08737dc
PE
2134@section Passing options and running multiple testsuites
2135
2136You can pass multiple options to the testsuite using the
2137@samp{--target_board} option of DejaGNU, either passed as part of
2138@samp{RUNTESTFLAGS}, or directly to @command{runtest} if you prefer to
2139work outside the makefiles. For example,
2140
3ab51846 2141@smallexample
311c6da4 2142 make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
3ab51846 2143@end smallexample
e08737dc
PE
2144
2145will run the standard @command{g++} testsuites (``unix'' is the target name
2146for a standard native testsuite situation), passing
311c6da4 2147@samp{-O3 -fmerge-constants} to the compiler on every test, i.e.,
e08737dc
PE
2148slashes separate options.
2149
2150You can run the testsuites multiple times using combinations of options
2151with a syntax similar to the brace expansion of popular shells:
2152
3ab51846 2153@smallexample
4c754988 2154 @dots{}"--target_board=arm-sim\@{-mhard-float,-msoft-float\@}\@{-O1,-O2,-O3,\@}"
3ab51846 2155@end smallexample
e08737dc
PE
2156
2157(Note the empty option caused by the trailing comma in the final group.)
2158The following will run each testsuite eight times using the @samp{arm-sim}
2159target, as if you had specified all possible combinations yourself:
2160
3ab51846 2161@smallexample
e08737dc
PE
2162 --target_board=arm-sim/-mhard-float/-O1
2163 --target_board=arm-sim/-mhard-float/-O2
2164 --target_board=arm-sim/-mhard-float/-O3
2165 --target_board=arm-sim/-mhard-float
2166 --target_board=arm-sim/-msoft-float/-O1
2167 --target_board=arm-sim/-msoft-float/-O2
2168 --target_board=arm-sim/-msoft-float/-O3
2169 --target_board=arm-sim/-msoft-float
3ab51846 2170@end smallexample
e08737dc
PE
2171
2172They can be combined as many times as you wish, in arbitrary ways. This
2173list:
2174
3ab51846 2175@smallexample
4c754988 2176 @dots{}"--target_board=unix/-Wextra\@{-O3,-fno-strength\@}\@{-fomit-frame,\@}"
3ab51846 2177@end smallexample
e08737dc
PE
2178
2179will generate four combinations, all involving @samp{-Wextra}.
2180
2181The disadvantage to this method is that the testsuites are run in serial,
2182which is a waste on multiprocessor systems. For users with GNU Make and
2183a shell which performs brace expansion, you can run the testsuites in
2184parallel by having the shell perform the combinations and @command{make}
2185do the parallel runs. Instead of using @samp{--target_board}, use a
2186special makefile target:
2187
3ab51846 2188@smallexample
e08737dc 2189 make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
3ab51846 2190@end smallexample
e08737dc
PE
2191
2192For example,
2193
3ab51846 2194@smallexample
e08737dc 2195 make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
3ab51846 2196@end smallexample
e08737dc
PE
2197
2198will run three concurrent ``make-gcc'' testsuites, eventually testing all
2199ten combinations as described above. Note that this is currently only
2200supported in the @file{gcc} subdirectory. (To see how this works, try
2201typing @command{echo} before the example given here.)
2202
2203
2204@section Additional testing for Java Class Libraries
2205
688d8b84
RM
2206The Java runtime tests can be executed via @samp{make check}
2207in the @file{@var{target}/libjava/testsuite} directory in
2208the build tree.
f702e700 2209
4eb3e795 2210The @uref{http://sourceware.org/mauve/,,Mauve Project} provides
f702e700
JJ
2211a suite of tests for the Java Class Libraries. This suite can be run
2212as part of libgcj testing by placing the Mauve tree within the libjava
2213testsuite at @file{libjava/testsuite/libjava.mauve/mauve}, or by
2214specifying the location of that tree when invoking @samp{make}, as in
2215@samp{make MAUVEDIR=~/mauve check}.
2216
f42974dc
DW
2217@section How to interpret test results
2218
794aca5d 2219The result of running the testsuite are various @file{*.sum} and @file{*.log}
767094dd 2220files in the testsuite subdirectories. The @file{*.log} files contain a
f42974dc 2221detailed log of the compiler invocations and the corresponding
daf2f129
JM
2222results, the @file{*.sum} files summarize the results. These summaries
2223contain status codes for all tests:
f42974dc
DW
2224
2225@itemize @bullet
2226@item
2227PASS: the test passed as expected
2228@item
2229XPASS: the test unexpectedly passed
2230@item
2231FAIL: the test unexpectedly failed
2232@item
2233XFAIL: the test failed as expected
2234@item
2235UNSUPPORTED: the test is not supported on this platform
2236@item
2237ERROR: the testsuite detected an error
2238@item
2239WARNING: the testsuite detected a possible problem
2240@end itemize
2241
38209993 2242It is normal for some tests to report unexpected failures. At the
962e6e00
JM
2243current time the testing harness does not allow fine grained control
2244over whether or not a test is expected to fail. This problem should
2245be fixed in future releases.
f42974dc
DW
2246
2247
2248@section Submitting test results
2249
2250If you want to report the results to the GCC project, use the
767094dd 2251@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
f42974dc 2252
3ab51846 2253@smallexample
6cfb3f16
JM
2254 @var{srcdir}/contrib/test_summary -p your_commentary.txt \
2255 -m gcc-testresults@@gcc.gnu.org |sh
3ab51846 2256@end smallexample
f42974dc 2257
6cfb3f16 2258This script uses the @command{Mail} program to send the results, so
767094dd 2259make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
f42974dc 2260prepended to the testsuite summary and should contain any special
767094dd 2261remarks you have on your results or your build environment. Please
f42974dc 2262do not edit the testsuite result block or the subject line, as these
05c425a9 2263messages may be automatically processed.
f42974dc 2264
aed5964b 2265@html
b8db17af 2266<hr />
aed5964b
JM
2267<p>
2268@end html
2269@ifhtml
2270@uref{./index.html,,Return to the GCC Installation page}
2271@end ifhtml
f42974dc
DW
2272@end ifset
2273
2274@c ***Final install***********************************************************
6cfb3f16 2275@ifnothtml
f42974dc
DW
2276@comment node-name, next, previous, up
2277@node Final install, , Testing, Installing GCC
6cfb3f16 2278@end ifnothtml
f42974dc 2279@ifset finalinstallhtml
f42974dc
DW
2280@ifnothtml
2281@chapter Installing GCC: Final installation
2282@end ifnothtml
2283
eea81d3e 2284Now that GCC has been built (and optionally tested), you can install it with
3ab51846 2285@smallexample
eea81d3e 2286cd @var{objdir}; make install
3ab51846 2287@end smallexample
f42974dc 2288
06809951 2289We strongly recommend to install into a target directory where there is
4b322f43
JB
2290no previous version of GCC present. Also, the GNAT runtime should not
2291be stripped, as this would break certain features of the debugger that
2292depend on this debugging information (catching Ada exceptions for
2293instance).
06809951 2294
f42974dc 2295That step completes the installation of GCC; user level binaries can
8e5f33ff
GK
2296be found in @file{@var{prefix}/bin} where @var{prefix} is the value
2297you specified with the @option{--prefix} to configure (or
2298@file{/usr/local} by default). (If you specified @option{--bindir},
2299that directory will be used instead; otherwise, if you specified
2300@option{--exec-prefix}, @file{@var{exec-prefix}/bin} will be used.)
2301Headers for the C++ and Java libraries are installed in
2302@file{@var{prefix}/include}; libraries in @file{@var{libdir}}
2303(normally @file{@var{prefix}/lib}); internal parts of the compiler in
2304@file{@var{libdir}/gcc} and @file{@var{libexecdir}/gcc}; documentation
2305in info format in @file{@var{infodir}} (normally
2306@file{@var{prefix}/info}).
f42974dc 2307
53b50ac1
CC
2308When installing cross-compilers, GCC's executables
2309are not only installed into @file{@var{bindir}}, that
2310is, @file{@var{exec-prefix}/bin}, but additionally into
2311@file{@var{exec-prefix}/@var{target-alias}/bin}, if that directory
2312exists. Typically, such @dfn{tooldirs} hold target-specific
2313binutils, including assembler and linker.
2314
2315Installation into a temporary staging area or into a @command{chroot}
2316jail can be achieved with the command
2317
3ab51846 2318@smallexample
53b50ac1 2319make DESTDIR=@var{path-to-rootdir} install
3ab51846 2320@end smallexample
53b50ac1
CC
2321
2322@noindent where @var{path-to-rootdir} is the absolute path of
2323a directory relative to which all installation paths will be
2324interpreted. Note that the directory specified by @code{DESTDIR}
2325need not exist yet; it will be created if necessary.
2326
2327There is a subtle point with tooldirs and @code{DESTDIR}:
2328If you relocate a cross-compiler installation with
2329e.g.@: @samp{DESTDIR=@var{rootdir}}, then the directory
2330@file{@var{rootdir}/@var{exec-prefix}/@var{target-alias}/bin} will
2331be filled with duplicated GCC executables only if it already exists,
2332it will not be created otherwise. This is regarded as a feature,
2333not as a bug, because it gives slightly more control to the packagers
2334using the @code{DESTDIR} feature.
2335
cc11cc9b 2336If you are bootstrapping a released version of GCC then please
f97a5bda
JJ
2337quickly review the build status page for your release, available from
2338@uref{http://gcc.gnu.org/buildstat.html}.
c5997381
JJ
2339If your system is not listed for the version of GCC that you built,
2340send a note to
eea81d3e 2341@email{gcc@@gcc.gnu.org} indicating
8a36672b 2342that you successfully built and installed GCC@.
c5997381 2343Include the following information:
f42974dc 2344
c5997381
JJ
2345@itemize @bullet
2346@item
962e6e00 2347Output from running @file{@var{srcdir}/config.guess}. Do not send
c5997381
JJ
2348that file itself, just the one-line output from running it.
2349
2350@item
2dd76960 2351The output of @samp{gcc -v} for your newly installed @command{gcc}.
c5997381
JJ
2352This tells us which version of GCC you built and the options you passed to
2353configure.
2354
2b46bc67
JJ
2355@item
2356Whether you enabled all languages or a subset of them. If you used a
2357full distribution then this information is part of the configure
2358options in the output of @samp{gcc -v}, but if you downloaded the
2359``core'' compiler plus additional front ends then it isn't apparent
2360which ones you built unless you tell us about it.
2361
c5997381
JJ
2362@item
2363If the build was for GNU/Linux, also include:
2364@itemize @bullet
2365@item
2366The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
2367this information should be available from @file{/etc/issue}.
2368
2369@item
2370The version of the Linux kernel, available from @samp{uname --version}
2371or @samp{uname -a}.
2372
2373@item
2374The version of glibc you used; for RPM-based systems like Red Hat,
b9da07da
JJ
2375Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version,
2376and on systems like Debian and Progeny use @samp{dpkg -l libc6}.
c5997381
JJ
2377@end itemize
2378For other systems, you can include similar information if you think it is
2379relevant.
2380
2381@item
2382Any other information that you think would be useful to people building
2383GCC on the same configuration. The new entry in the build status list
2384will include a link to the archived copy of your message.
2385@end itemize
c009f01f
JJ
2386
2387We'd also like to know if the
2388@ifnothtml
2389@ref{Specific, host/target specific installation notes}
2390@end ifnothtml
2391@ifhtml
2392@uref{specific.html,,host/target specific installation notes}
2393@end ifhtml
2394didn't include your host/target information or if that information is
2395incomplete or out of date. Send a note to
962e6e00 2396@email{gcc@@gcc.gnu.org} detailing how the information should be changed.
f42974dc 2397
962e6e00 2398If you find a bug, please report it following the
f42974dc
DW
2399@uref{../bugs.html,,bug reporting guidelines}.
2400
ab130aa5 2401If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
7326a39e 2402dvi}. You will need to have @command{texi2dvi} (version at least 4.7)
ab130aa5
JM
2403and @TeX{} installed. This creates a number of @file{.dvi} files in
2404subdirectories of @file{@var{objdir}}; these may be converted for
cc5c2741
BM
2405printing with programs such as @command{dvips}. Alternately, by using
2406@samp{make pdf} in place of @samp{make dvi}, you can create documentation
2407in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
2408is included with Texinfo version 4.8 and later. You can also
ab130aa5
JM
2409@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
2410Free Software Foundation}, though such manuals may not be for the most
161d7b59 2411recent version of GCC@.
ab130aa5 2412
9d65c5cb 2413If you would like to generate online HTML documentation, do @samp{cd
f995c51f
JW
2414@var{objdir}; make html} and HTML will be generated for the gcc manuals in
2415@file{@var{objdir}/gcc/HTML}.
9d65c5cb 2416
f42974dc 2417@html
b8db17af 2418<hr />
f42974dc
DW
2419<p>
2420@end html
2421@ifhtml
2422@uref{./index.html,,Return to the GCC Installation page}
2423@end ifhtml
2424@end ifset
2425
2426@c ***Binaries****************************************************************
6cfb3f16 2427@ifnothtml
f42974dc
DW
2428@comment node-name, next, previous, up
2429@node Binaries, Specific, Installing GCC, Top
6cfb3f16 2430@end ifnothtml
f42974dc 2431@ifset binarieshtml
f42974dc
DW
2432@ifnothtml
2433@chapter Installing GCC: Binaries
2434@end ifnothtml
2435@cindex Binaries
2436@cindex Installing GCC: Binaries
2437
161d7b59 2438We are often asked about pre-compiled versions of GCC@. While we cannot
f42974dc
DW
2439provide these for all platforms, below you'll find links to binaries for
2440various platforms where creating them by yourself is not easy due to various
2441reasons.
2442
2443Please note that we did not create these binaries, nor do we
2444support them. If you have any problems installing them, please
2445contact their makers.
2446
2447@itemize
2448@item
df002c7d
DE
2449AIX:
2450@itemize
2451@item
ff4c5e7b 2452@uref{http://www.bullfreeware.com,,Bull's Freeware and Shareware Archive for AIX};
df002c7d
DE
2453
2454@item
f3e240e2 2455@uref{http://pware.hvcc.edu,,Hudson Valley Community College Open Source Software for IBM System p};
75dd1ae2
DE
2456
2457@item
2458@uref{http://www.perzl.org/aix,,AIX 5L and 6 Open Source Packages}.
df002c7d 2459@end itemize
f42974dc
DW
2460
2461@item
8d5362b7
GP
2462DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP}.
2463
2464@item
71c6b994
KH
2465Renesas H8/300[HS]---@uref{http://h8300-hms.sourceforge.net/,,GNU
2466Development Tools for the Renesas H8/300[HS] Series}.
f42974dc 2467
f404402c
MW
2468@item
2469HP-UX:
2470@itemize
f42974dc 2471@item
1d7887ca 2472@uref{http://hpux.cs.utah.edu/,,HP-UX Porting Center};
f42974dc 2473
f404402c
MW
2474@item
2475@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}.
2476@end itemize
2477
3e35d143
SC
2478@item
2479Motorola 68HC11/68HC12---@uref{http://www.gnu-m68hc11.org,,GNU
2480Development Tools for the Motorola 68HC11/68HC12}.
2481
f42974dc 2482@item
38209993 2483@uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO
8d5362b7 2484OpenServer/Unixware}.
f42974dc 2485
8d5362b7
GP
2486@item
2487Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
f42974dc
DW
2488
2489@item
8d5362b7 2490SGI---@uref{http://freeware.sgi.com/,,SGI Freeware}.
f42974dc
DW
2491
2492@item
05c425a9 2493Microsoft Windows:
f42974dc
DW
2494@itemize
2495@item
4eb3e795 2496The @uref{http://sourceware.org/cygwin/,,Cygwin} project;
f42974dc 2497@item
cc92b8ab 2498The @uref{http://www.mingw.org/,,MinGW} project.
f42974dc
DW
2499@end itemize
2500
2501@item
616de62f
GP
2502@uref{ftp://ftp.thewrittenword.com/packages/by-name/,,The
2503Written Word} offers binaries for
75dd1ae2 2504AIX 4.3.3, 5.1 and 5.2,
616de62f 2505IRIX 6.5,
75dd1ae2 2506Tru64 UNIX 4.0D and 5.1,
616de62f
GP
2507GNU/Linux (i386),
2508HP-UX 10.20, 11.00, and 11.11, and
75dd1ae2 2509Solaris/SPARC 2.5.1, 2.6, 7, 8, 9 and 10.
6512c54a
GP
2510
2511@item
2512@uref{http://www.openpkg.org/,,OpenPKG} offers binaries for quite a
2513number of platforms.
eae50c87
PB
2514
2515@item
2516The @uref{http://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has
92922512 2517links to GNU Fortran binaries for several platforms.
f42974dc
DW
2518@end itemize
2519
2520In addition to those specific offerings, you can get a binary
2521distribution CD-ROM from the
1d7887ca 2522@uref{http://www.gnu.org/order/order.html,,Free Software Foundation}.
f42974dc 2523It contains binaries for a number of platforms, and
767094dd 2524includes not only GCC, but other stuff as well. The current CD does
f42974dc 2525not contain the latest version of GCC, but it should allow
767094dd 2526bootstrapping the compiler. An updated version of that disk is in the
f42974dc
DW
2527works.
2528
2529@html
b8db17af 2530<hr />
f42974dc
DW
2531<p>
2532@end html
2533@ifhtml
2534@uref{./index.html,,Return to the GCC Installation page}
2535@end ifhtml
2536@end ifset
2537
2538@c ***Specific****************************************************************
6cfb3f16 2539@ifnothtml
f42974dc 2540@comment node-name, next, previous, up
73e2155a 2541@node Specific, Old, Binaries, Top
6cfb3f16 2542@end ifnothtml
f42974dc 2543@ifset specifichtml
f42974dc
DW
2544@ifnothtml
2545@chapter Host/target specific installation notes for GCC
2546@end ifnothtml
2547@cindex Specific
2548@cindex Specific installation notes
2549@cindex Target specific installation
2550@cindex Host specific installation
2551@cindex Target specific installation notes
2552
2553Please read this document carefully @emph{before} installing the
2554GNU Compiler Collection on your machine.
2555
c9936427
DD
2556Note that this list of install notes is @emph{not} a list of supported
2557hosts or targets. Not all supported hosts and targets are listed
2558here, only the ones that require host-specific or target-specific
2559information are.
2560
ef88b07d 2561@ifhtml
f42974dc
DW
2562@itemize
2563@item
5a4c9b10 2564@uref{#alpha-x-x,,alpha*-*-*}
f42974dc 2565@item
5a4c9b10 2566@uref{#alpha-dec-osf,,alpha*-dec-osf*}
f42974dc 2567@item
5a4c9b10 2568@uref{#arc-x-elf,,arc-*-elf}
b8df899a 2569@item
5a4c9b10
GP
2570@uref{#arm-x-elf,,arm-*-elf}
2571@uref{#arm-x-coff,,arm-*-coff}
2572@uref{#arm-x-aout,,arm-*-aout}
b8df899a 2573@item
f42974dc
DW
2574@uref{#avr,,avr}
2575@item
0d4a78eb
BS
2576@uref{#bfin,,Blackfin}
2577@item
f42974dc
DW
2578@uref{#dos,,DOS}
2579@item
5a4c9b10 2580@uref{#x-x-freebsd,,*-*-freebsd*}
021c4bfd 2581@item
f42974dc
DW
2582@uref{#h8300-hms,,h8300-hms}
2583@item
5a4c9b10 2584@uref{#hppa-hp-hpux,,hppa*-hp-hpux*}
f42974dc 2585@item
5a4c9b10 2586@uref{#hppa-hp-hpux10,,hppa*-hp-hpux10}
f42974dc 2587@item
5a4c9b10 2588@uref{#hppa-hp-hpux11,,hppa*-hp-hpux11}
f42974dc 2589@item
5a4c9b10 2590@uref{#x-x-linux-gnu,,*-*-linux-gnu}
f42974dc 2591@item
5a4c9b10 2592@uref{#ix86-x-linux,,i?86-*-linux*}
f42974dc 2593@item
d8fcd085 2594@uref{#ix86-x-solaris210,,i?86-*-solaris2.10}
8f47c084 2595@item
5a4c9b10 2596@uref{#ia64-x-linux,,ia64-*-linux}
b8df899a 2597@item
5a4c9b10 2598@uref{#ia64-x-hpux,,ia64-*-hpux*}
b499d9ab 2599@item
5a4c9b10 2600@uref{#x-ibm-aix,,*-ibm-aix*}
959a73a4 2601@item
5a4c9b10 2602@uref{#iq2000-x-elf,,iq2000-*-elf}
e3223ea2 2603@item
38b2d076
DD
2604@uref{#m32c-x-elf,,m32c-*-elf}
2605@item
5a4c9b10 2606@uref{#m32r-x-elf,,m32r-*-elf}
b8df899a 2607@item
b8df899a
JM
2608@uref{#m6811-elf,,m6811-elf}
2609@item
2610@uref{#m6812-elf,,m6812-elf}
2611@item
183dc04b
RS
2612@uref{#m68k-x-x,,m68k-*-*}
2613@item
4529dbf1
RS
2614@uref{#m68k-uclinux,,m68k-uclinux}
2615@item
5a4c9b10 2616@uref{#mips-x-x,,mips-*-*}
b8df899a 2617@item
b953cc4b 2618@uref{#mips-sgi-irix5,,mips-sgi-irix5}
f42974dc 2619@item
b953cc4b 2620@uref{#mips-sgi-irix6,,mips-sgi-irix6}
f42974dc 2621@item
cd985f66 2622@uref{#powerpc-x-x,,powerpc*-*-*}
4f2b1139 2623@item
5a4c9b10 2624@uref{#powerpc-x-darwin,,powerpc-*-darwin*}
b8df899a 2625@item
cd985f66 2626@uref{#powerpc-x-elf,,powerpc-*-elf}
f42974dc 2627@item
5a4c9b10 2628@uref{#powerpc-x-linux-gnu,,powerpc*-*-linux-gnu*}
edf1b3f3 2629@item
5a4c9b10 2630@uref{#powerpc-x-netbsd,,powerpc-*-netbsd*}
b8df899a 2631@item
5a4c9b10 2632@uref{#powerpc-x-eabisim,,powerpc-*-eabisim}
b8df899a 2633@item
5a4c9b10 2634@uref{#powerpc-x-eabi,,powerpc-*-eabi}
b8df899a 2635@item
cd985f66 2636@uref{#powerpcle-x-elf,,powerpcle-*-elf}
b8df899a 2637@item
5a4c9b10 2638@uref{#powerpcle-x-eabisim,,powerpcle-*-eabisim}
b8df899a 2639@item
5a4c9b10 2640@uref{#powerpcle-x-eabi,,powerpcle-*-eabi}
b8df899a 2641@item
5a4c9b10 2642@uref{#s390-x-linux,,s390-*-linux*}
91abf72d 2643@item
5a4c9b10 2644@uref{#s390x-x-linux,,s390x-*-linux*}
91abf72d 2645@item
5a4c9b10 2646@uref{#s390x-ibm-tpf,,s390x-ibm-tpf*}
8bf06993 2647@item
5a4c9b10 2648@uref{#x-x-solaris2,,*-*-solaris2*}
f42974dc 2649@item
5a4c9b10 2650@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*}
f42974dc 2651@item
d8fcd085 2652@uref{#sparc-sun-solaris27,,sparc-sun-solaris2.7}
f42974dc 2653@item
5a4c9b10 2654@uref{#sparc-x-linux,,sparc-*-linux*}
c6fa9728 2655@item
5a4c9b10 2656@uref{#sparc64-x-solaris2,,sparc64-*-solaris2*}
f42974dc 2657@item
5a4c9b10 2658@uref{#sparcv9-x-solaris2,,sparcv9-*-solaris2*}
e403b4bc 2659@item
5a4c9b10 2660@uref{#x-x-vxworks,,*-*-vxworks*}
4977bab6 2661@item
d8fcd085 2662@uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*}
7e081a0c 2663@item
6d656178 2664@uref{#xtensa-x-elf,,xtensa*-*-elf}
fd29f6ea 2665@item
6d656178 2666@uref{#xtensa-x-linux,,xtensa*-*-linux*}
fd29f6ea 2667@item
f42974dc
DW
2668@uref{#windows,,Microsoft Windows}
2669@item
aad416fb
AL
2670@uref{#x-x-cygwin,,*-*-cygwin}
2671@item
2672@uref{#x-x-interix,,*-*-interix}
2673@item
2674@uref{#x-x-mingw,,*-*-mingw}
2675@item
f42974dc
DW
2676@uref{#os2,,OS/2}
2677@item
2678@uref{#older,,Older systems}
2679@end itemize
2680
2681@itemize
2682@item
d8fcd085 2683@uref{#elf,,all ELF targets} (SVR4, Solaris 2, etc.)
f42974dc 2684@end itemize
ef88b07d 2685@end ifhtml
f42974dc
DW
2686
2687
2688@html
2689<!-- -------- host/target specific issues start here ---------------- -->
b8db17af 2690<hr />
f42974dc 2691@end html
5a4c9b10 2692@heading @anchor{alpha-x-x}alpha*-*-*
333e14b0
LR
2693
2694This section contains general configuration information for all
2695alpha-based platforms using ELF (in particular, ignore this section for
161d7b59 2696DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this
f2541106 2697section, please read all other sections that match your target.
333e14b0 2698
021c4bfd
RO
2699We require binutils 2.11.2 or newer.
2700Previous binutils releases had a number of problems with DWARF 2
333e14b0
LR
2701debugging information, not the least of which is incorrect linking of
2702shared libraries.
2703
b8df899a 2704@html
b8db17af 2705<hr />
b8df899a 2706@end html
5a4c9b10 2707@heading @anchor{alpha-dec-osf}alpha*-dec-osf*
b8df899a 2708Systems using processors that implement the DEC Alpha architecture and
f2541106
RO
2709are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
2710Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
2711
c7bdf0a6
ZW
2712As of GCC 3.2, versions before @code{alpha*-dec-osf4} are no longer
2713supported. (These are the versions which identify themselves as DEC
2714OSF/1.)
9340544b 2715
6e92b3a1
RB
2716In Digital Unix V4.0, virtual memory exhausted bootstrap failures
2717may be fixed by configuring with @option{--with-gc=simple},
2718reconfiguring Kernel Virtual Memory and Swap parameters
2719per the @command{/usr/sbin/sys_check} Tuning Suggestions,
2720or applying the patch in
2721@uref{http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html}.
2722
f2541106
RO
2723In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not
2724currently (2001-06-13) work with @command{mips-tfile}. As a workaround,
2725we need to use the old assembler, invoked via the barely documented
2726@option{-oldas} option. To bootstrap GCC, you either need to use the
2727Compaq C Compiler:
2728
3ab51846 2729@smallexample
eea81d3e 2730 % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 2731@end smallexample
f2541106
RO
2732
2733or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0:
2734
3ab51846 2735@smallexample
eea81d3e 2736 % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 2737@end smallexample
b8df899a 2738
b953cc4b
RO
2739As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld}
2740are supported on Tru64 UNIX, so you must not configure GCC with
2741@option{--with-gnu-as} or @option{--with-gnu-ld}.
2742
f0523f02 2743GCC writes a @samp{.verstamp} directive to the assembler output file
b8df899a
JM
2744unless it is built as a cross-compiler. It gets the version to use from
2745the system header file @file{/usr/include/stamp.h}. If you install a
2746new version of DEC Unix, you should rebuild GCC to pick up the new version
2747stamp.
2748
2749Note that since the Alpha is a 64-bit architecture, cross-compilers from
275032-bit machines will not generate code as efficient as that generated
2751when the compiler is running on a 64-bit machine because many
2752optimizations that depend on being able to represent a word on the
2753target in an integral value on the host cannot be performed. Building
2754cross-compilers on the Alpha for 32-bit machines has only been tested in
2755a few cases and may not work properly.
2756
7ba4ca63 2757@samp{make compare} may fail on old versions of DEC Unix unless you add
1c8bd6a3
PB
2758@option{-save-temps} to @code{BOOT_CFLAGS}. On these systems, the name
2759of the assembler input file is stored in the object file, and that makes
b8df899a 2760comparison fail if it differs between the @code{stage1} and
6cfb3f16 2761@code{stage2} compilations. The option @option{-save-temps} forces a
b8df899a 2762fixed name to be used for the assembler input file, instead of a
6cfb3f16 2763randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
b8df899a 2764unless the comparisons fail without that option. If you add
6cfb3f16 2765@option{-save-temps}, you will have to manually delete the @samp{.i} and
b8df899a
JM
2766@samp{.s} files after each series of compilations.
2767
f0523f02 2768GCC now supports both the native (ECOFF) debugging format used by DBX
161d7b59 2769and GDB and an encapsulated STABS format for use only with GDB@. See the
6cfb3f16 2770discussion of the @option{--with-stabs} option of @file{configure} above
b8df899a
JM
2771for more information on these formats and how to select them.
2772
2773There is a bug in DEC's assembler that produces incorrect line numbers
2774for ECOFF format when the @samp{.align} directive is used. To work
f0523f02 2775around this problem, GCC will not emit such alignment directives
b8df899a
JM
2776while writing ECOFF format debugging information even if optimization is
2777being performed. Unfortunately, this has the very undesirable
6cfb3f16
JM
2778side-effect that code addresses when @option{-O} is specified are
2779different depending on whether or not @option{-g} is also specified.
b8df899a 2780
6cfb3f16 2781To avoid this behavior, specify @option{-gstabs+} and use GDB instead of
161d7b59 2782DBX@. DEC is now aware of this problem with the assembler and hopes to
b8df899a
JM
2783provide a fix shortly.
2784
b8df899a 2785@html
b8db17af 2786<hr />
b8df899a 2787@end html
5a4c9b10 2788@heading @anchor{arc-x-elf}arc-*-elf
b8df899a
JM
2789Argonaut ARC processor.
2790This configuration is intended for embedded systems.
2791
2792@html
b8db17af 2793<hr />
b8df899a 2794@end html
5a4c9b10 2795@heading @anchor{arm-x-elf}arm-*-elf
34e8290f
NC
2796ARM-family processors. Subtargets that use the ELF object format
2797require GNU binutils 2.13 or newer. Such subtargets include:
cd985f66
JM
2798@code{arm-*-freebsd}, @code{arm-*-netbsdelf}, @code{arm-*-*linux}
2799and @code{arm-*-rtems}.
34e8290f
NC
2800
2801@html
2802<hr />
2803@end html
5a4c9b10 2804@heading @anchor{arm-x-coff}arm-*-coff
61aeb06f 2805ARM-family processors. Note that there are two different varieties
34e8290f
NC
2806of PE format subtarget supported: @code{arm-wince-pe} and
2807@code{arm-pe} as well as a standard COFF target @code{arm-*-coff}.
2808
34e8290f
NC
2809@html
2810<hr />
2811@end html
5a4c9b10 2812@heading @anchor{arm-x-aout}arm-*-aout
34e8290f
NC
2813ARM-family processors. These targets support the AOUT file format:
2814@code{arm-*-aout}, @code{arm-*-netbsd}.
476c334e 2815
f42974dc 2816@html
b8db17af 2817<hr />
f42974dc 2818@end html
ef88b07d 2819@heading @anchor{avr}avr
f42974dc 2820
b8df899a 2821ATMEL AVR-family micro controllers. These are used in embedded
ca52d046
GP
2822applications. There are no standard Unix configurations.
2823@ifnothtml
7f970b70 2824@xref{AVR Options,, AVR Options, gcc, Using the GNU Compiler
ca52d046
GP
2825Collection (GCC)},
2826@end ifnothtml
98999d8b 2827@ifhtml
ca52d046 2828See ``AVR Options'' in the main manual
98999d8b 2829@end ifhtml
ca52d046 2830for the list of supported MCU types.
b8df899a 2831
161d7b59 2832Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@.
f42974dc
DW
2833
2834Further installation notes and other useful information about AVR tools
2835can also be obtained from:
2836
2837@itemize @bullet
2838@item
1d7887ca 2839@uref{http://www.nongnu.org/avr/,,http://www.nongnu.org/avr/}
de7999ba 2840@item
d1a86812 2841@uref{http://home.overta.ru/users/denisc/,,http://home.overta.ru/users/denisc/}
f42974dc 2842@item
d1a86812 2843@uref{http://www.amelek.gda.pl/avr/,,http://www.amelek.gda.pl/avr/}
f42974dc
DW
2844@end itemize
2845
de7999ba 2846We @emph{strongly} recommend using binutils 2.13 or newer.
f42974dc
DW
2847
2848The following error:
3ab51846 2849@smallexample
f42974dc 2850 Error: register required
3ab51846 2851@end smallexample
f42974dc
DW
2852
2853indicates that you should upgrade to a newer version of the binutils.
2854
0d4a78eb
BS
2855@html
2856<hr />
2857@end html
2858@heading @anchor{bfin}Blackfin
2859
2860The Blackfin processor, an Analog Devices DSP.
2861@ifnothtml
7f970b70
AM
2862@xref{Blackfin Options,, Blackfin Options, gcc, Using the GNU Compiler
2863Collection (GCC)},
0d4a78eb
BS
2864@end ifnothtml
2865@ifhtml
2866See ``Blackfin Options'' in the main manual
2867@end ifhtml
2868
2869More information, and a version of binutils with support for this processor,
2870is available at @uref{http://blackfin.uclinux.org}
2871
0b85d816 2872@html
b8db17af 2873<hr />
0b85d816
HPN
2874@end html
2875@heading @anchor{cris}CRIS
2876
2877CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
2878series. These are used in embedded applications.
2879
2880@ifnothtml
7f970b70 2881@xref{CRIS Options,, CRIS Options, gcc, Using the GNU Compiler
0b85d816
HPN
2882Collection (GCC)},
2883@end ifnothtml
2884@ifhtml
2885See ``CRIS Options'' in the main manual
2886@end ifhtml
2887for a list of CRIS-specific options.
2888
2889There are a few different CRIS targets:
2890@table @code
0b85d816
HPN
2891@item cris-axis-elf
2892Mainly for monolithic embedded systems. Includes a multilib for the
2893@samp{v10} core used in @samp{ETRAX 100 LX}.
2894@item cris-axis-linux-gnu
2895A GNU/Linux port for the CRIS architecture, currently targeting
2896@samp{ETRAX 100 LX} by default.
2897@end table
2898
cd985f66 2899For @code{cris-axis-elf} you need binutils 2.11
0b85d816
HPN
2900or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer.
2901
2902Pre-packaged tools can be obtained from
2903@uref{ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/}. More
2904information about this platform is available at
2905@uref{http://developer.axis.com/}.
2906
53054e77
PW
2907@html
2908<hr />
2909@end html
2910@heading @anchor{crx}CRX
2911
2912The CRX CompactRISC architecture is a low-power 32-bit architecture with
2913fast context switching and architectural extensibility features.
2914
2915@ifnothtml
2916@xref{CRX Options,, CRX Options, gcc, Using and Porting the GNU Compiler
2917Collection (GCC)},
2918@end ifnothtml
2919
2920@ifhtml
2921See ``CRX Options'' in the main manual for a list of CRX-specific options.
2922@end ifhtml
2923
2924Use @samp{configure --target=crx-elf --enable-languages=c,c++} to configure
2925GCC@ for building a CRX cross-compiler. The option @samp{--target=crx-elf}
2926is also used to build the @samp{newlib} C library for CRX.
2927
2928It is also possible to build libstdc++-v3 for the CRX architecture. This
a4d05547 2929needs to be done in a separate step with the following configure settings:
53054e77
PW
2930@samp{gcc/libstdc++-v3/configure --host=crx-elf --with-newlib
2931--enable-sjlj-exceptions --enable-cxx-flags='-fexceptions -frtti'}
2932
f42974dc 2933@html
b8db17af 2934<hr />
f42974dc 2935@end html
ef88b07d 2936@heading @anchor{dos}DOS
f42974dc 2937
962e6e00 2938Please have a look at the @uref{binaries.html,,binaries page}.
f42974dc 2939
f0523f02 2940You cannot install GCC by itself on MSDOS; it will not compile under
f85b8d1a
JM
2941any MSDOS compiler except itself. You need to get the complete
2942compilation package DJGPP, which includes binaries as well as sources,
2943and includes all the necessary compilation tools and libraries.
2944
021c4bfd 2945@html
b8db17af 2946<hr />
021c4bfd 2947@end html
5a4c9b10 2948@heading @anchor{x-x-freebsd}*-*-freebsd*
021c4bfd 2949
f08dc6c1 2950The version of binutils installed in @file{/usr/bin} probably works with
8a36672b 2951this release of GCC@. However, on FreeBSD 4, bootstrapping against the
f08dc6c1
LR
2952latest FSF binutils is known to improve overall testsuite results; and,
2953on FreeBSD/alpha, using binutils 2.14 or later is required to build libjava.
021c4bfd 2954
6a1dbbaf 2955Support for FreeBSD 1 was discontinued in GCC 3.2.
c7bdf0a6 2956
f08dc6c1
LR
2957Support for FreeBSD 2 will be discontinued after GCC 3.4. The
2958following was true for GCC 3.1 but the current status is unknown.
c7bdf0a6 2959For FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
021c4bfd
RO
2960configuration support and files as shipped with GCC 2.95 are still in
2961place. FreeBSD 2.2.7 has been known to bootstrap completely; however,
2962it is unknown which version of binutils was used (it is assumed that it
2963was the system copy in @file{/usr/bin}) and C++ EH failures were noted.
2964
2965For FreeBSD using the ELF file format: DWARF 2 debugging is now the
2966default for all CPU architectures. It had been the default on
2967FreeBSD/alpha since its inception. You may use @option{-gstabs} instead
2968of @option{-g}, if you really want the old debugging format. There are
2969no known issues with mixing object files and libraries with different
2970debugging formats. Otherwise, this release of GCC should now match more
8a36672b 2971of the configuration used in the stock FreeBSD configuration of GCC@. In
021c4bfd
RO
2972particular, @option{--enable-threads} is now configured by default.
2973However, as a general user, do not attempt to replace the system
2974compiler with this release. Known to bootstrap and check with good
f08dc6c1 2975results on FreeBSD 4.9-STABLE and 5-CURRENT@. In the past, known to
e4e7d312 2976bootstrap and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2,
f08dc6c1 29774.3, 4.4, 4.5, 4.8-STABLE@.
46fc709d
LR
2978
2979In principle, @option{--enable-threads} is now compatible with
2980@option{--enable-libgcj} on FreeBSD@. However, it has only been built
e4e7d312 2981and tested on @samp{i386-*-freebsd[45]} and @samp{alpha-*-freebsd[45]}.
8c085f6f 2982The static
6b976d99
LR
2983library may be incorrectly built (symbols are missing at link time).
2984There is a rare timing-based startup hang (probably involves an
c0478a66 2985assumption about the thread library). Multi-threaded boehm-gc (required for
46fc709d 2986libjava) exposes severe threaded signal-handling bugs on FreeBSD before
e4e7d312 29874.5-RELEASE@. Other CPU architectures
46fc709d
LR
2988supported by FreeBSD will require additional configuration tuning in, at
2989the very least, both boehm-gc and libffi.
021c4bfd 2990
bc3a44db
LR
2991Shared @file{libgcc_s.so} is now built and installed by default.
2992
f42974dc 2993@html
b8db17af 2994<hr />
f42974dc 2995@end html
ef88b07d 2996@heading @anchor{h8300-hms}h8300-hms
71c6b994 2997Renesas H8/300 series of processors.
f42974dc 2998
962e6e00 2999Please have a look at the @uref{binaries.html,,binaries page}.
f42974dc 3000
b8df899a
JM
3001The calling convention and structure layout has changed in release 2.6.
3002All code must be recompiled. The calling convention now passes the
3003first three arguments in function calls in registers. Structures are no
3004longer a multiple of 2 bytes.
3005
f42974dc 3006@html
b8db17af 3007<hr />
f42974dc 3008@end html
5a4c9b10 3009@heading @anchor{hppa-hp-hpux}hppa*-hp-hpux*
6a1dbbaf 3010Support for HP-UX version 9 and older was discontinued in GCC 3.4.
f42974dc 3011
dbad5e72
SE
3012We require using gas/binutils on all hppa platforms;
3013you may encounter a variety of problems if you try to use the HP assembler.
f42974dc
DW
3014
3015Specifically, @option{-g} does not work on HP-UX (since that system
d711cf67 3016uses a peculiar debugging format which GCC does not know about), unless
8a36672b 3017you use GAS and GDB@. It may be helpful to configure GCC with the
38209993 3018@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
8a36672b 3019@option{--with-as=@dots{}} options to ensure that GCC can find GAS@.
f42974dc 3020
08b3d104 3021If you wish to use the pa-risc 2.0 architecture support with a 32-bit
dbad5e72 3022runtime, you must use gas/binutils 2.11 or newer.
f42974dc 3023
d5355cb2
JDA
3024There are two default scheduling models for instructions. These are
3025PROCESSOR_7100LC and PROCESSOR_8000. They are selected from the pa-risc
3026architecture specified for the target machine when configuring.
3027PROCESSOR_8000 is the default. PROCESSOR_7100LC is selected when
3028the target is a @samp{hppa1*} machine.
806bf413
JDA
3029
3030The PROCESSOR_8000 model is not well suited to older processors. Thus,
3031it is important to completely specify the machine architecture when
3032configuring if you want a model other than PROCESSOR_8000. The macro
3033TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
3034default scheduling model is desired.
3035
25f710ba 3036As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
d711cf67
JDA
3037through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.
3038This namespace change might cause problems when bootstrapping with
3039an earlier version of GCC or the HP compiler as essentially the same
3040namespace is required for an entire build. This problem can be avoided
3041in a number of ways. With HP cc, @env{UNIX_STD} can be set to @samp{95}
3042or @samp{98}. Another way is to add an appropriate set of predefines
3043to @env{CC}. The description for the @option{munix=} option contains
3044a list of the predefines used with each standard.
3045
0ee2ea09 3046As of GCC 4.1, @env{DWARF2} exception handling is available on HP-UX@.
dcf966bd
JDA
3047It is now the default. This exposed a bug in the handling of data
3048relocations in the GAS assembler. The handling of 64-bit data relocations
3049was seriously broken, affecting debugging and exception support on all
353f74e8 3050@samp{hppa64-*-*} targets. Under some circumstances, 32-bit data relocations
dcf966bd
JDA
3051could also be handled incorrectly. This problem is fixed in GAS version
30522.16.91 20051125.
3053
3054GCC versions prior to 4.1 incorrectly passed and returned complex
3055values. They are now passed in the same manner as aggregates.
3056
021c4bfd 3057More specific information to @samp{hppa*-hp-hpux*} targets follows.
f42974dc 3058
f42974dc 3059@html
b8db17af 3060<hr />
f42974dc 3061@end html
5a4c9b10 3062@heading @anchor{hppa-hp-hpux10}hppa*-hp-hpux10
f42974dc 3063
f9047ed3 3064For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
161d7b59 3065@code{PHCO_19798} from HP@. HP has two sites which provide patches free of
f42974dc
DW
3066charge:
3067
3068@itemize @bullet
3069@item
3070@html
f401d0f5 3071<a href="http://us.itrc.hp.com/service/home/home.do">US, Canada, Asia-Pacific, and
f42974dc
DW
3072Latin-America</a>
3073@end html
3074@ifnothtml
f401d0f5
JDA
3075@uref{http://us.itrc.hp.com/service/home/home.do,,} US, Canada, Asia-Pacific,
3076and Latin-America.
f42974dc
DW
3077@end ifnothtml
3078@item
f401d0f5 3079@uref{http://europe.itrc.hp.com/service/home/home.do,,} Europe.
f42974dc
DW
3080@end itemize
3081
2aea0b53
ZW
3082The HP assembler on these systems has some problems. Most notably the
3083assembler inserts timestamps into each object file it creates, causing
cc11cc9b
PB
3084the 3-stage comparison test to fail during a bootstrap.
3085You should be able to continue by saying @samp{make all-host all-target}
3086after getting the failure from @samp{make}.
f42974dc 3087
25f710ba 3088GCC 4.0 requires CVS binutils as of April 28, 2004 or later. Earlier
9a55eab3
JDA
3089versions require binutils 2.8 or later.
3090
25f710ba 3091The C++ ABI has changed incompatibly in GCC 4.0. COMDAT subspaces are
9a55eab3
JDA
3092used for one-only code and data. This resolves many of the previous
3093problems in using C++ on this target. However, the ABI is not compatible
3094with the one implemented under HP-UX 11 using secondary definitions.
f42974dc
DW
3095
3096@html
b8db17af 3097<hr />
f42974dc 3098@end html
5a4c9b10 3099@heading @anchor{hppa-hp-hpux11}hppa*-hp-hpux11
f42974dc 3100
c5124497
JDA
3101GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot
3102be used to compile GCC 3.0 and up.
f269f54f 3103
c5124497 3104Refer to @uref{binaries.html,,binaries} for information about obtaining
8a36672b
JM
3105precompiled GCC binaries for HP-UX@. Precompiled binaries must be obtained
3106to build the Ada language as it can't be bootstrapped using C@. Ada is
c5124497
JDA
3107only available for the 32-bit PA-RISC runtime. The libffi and libjava
3108haven't been ported to HP-UX and don't build.
f401d0f5 3109
02809848
PB
3110Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The
3111bundled compiler supports only traditional C; you will need either HP's
3112unbundled compiler, or a binary distribution of GCC@.
3113
c5124497
JDA
3114It is possible to build GCC 3.3 starting with the bundled HP compiler,
3115but the process requires several steps. GCC 3.3 can then be used to
3116build later versions. The fastjar program contains ISO C code and
3117can't be built with the HP bundled compiler. This problem can be
3118avoided by not building the Java language. For example, use the
3119@option{--enable-languages="c,c++,f77,objc"} option in your configure
3120command.
08b3d104 3121
c5124497
JDA
3122There are several possible approaches to building the distribution.
3123Binutils can be built first using the HP tools. Then, the GCC
3124distribution can be built. The second approach is to build GCC
8a36672b 3125first using the HP tools, then build binutils, then rebuild GCC@.
c5124497
JDA
3126There have been problems with various binary distributions, so it
3127is best not to start from a binary distribution.
3128
3129On 64-bit capable systems, there are two distinct targets. Different
3130installation prefixes must be used if both are to be installed on
3131the same system. The @samp{hppa[1-2]*-hp-hpux11*} target generates code
3132for the 32-bit PA-RISC runtime architecture and uses the HP linker.
3133The @samp{hppa64-hp-hpux11*} target generates 64-bit code for the
3134PA-RISC 2.0 architecture. The HP and GNU linkers are both supported
3135for this target.
3136
3137The script config.guess now selects the target type based on the compiler
3138detected during configuration. You must define @env{PATH} or @env{CC} so
3139that configure finds an appropriate compiler for the initial bootstrap.
3140When @env{CC} is used, the definition should contain the options that are
3141needed whenever @env{CC} is used.
3142
3143Specifically, options that determine the runtime architecture must be
3144in @env{CC} to correctly select the target for the build. It is also
f0eb93a8 3145convenient to place many other compiler options in @env{CC}. For example,
c5124497
JDA
3146@env{CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"}
3147can be used to bootstrap the GCC 3.3 branch with the HP compiler in
314864-bit K&R/bundled mode. The @option{+DA2.0W} option will result in
3149the automatic selection of the @samp{hppa64-hp-hpux11*} target. The
3150macro definition table of cpp needs to be increased for a successful
3151build with the HP compiler. _CLASSIC_TYPES and _HPUX_SOURCE need to
3152be defined when building with the bundled compiler, or when using the
3153@option{-Ac} option. These defines aren't necessary with @option{-Ae}.
8c085f6f 3154
c5124497
JDA
3155It is best to explicitly configure the @samp{hppa64-hp-hpux11*} target
3156with the @option{--with-ld=@dots{}} option. This overrides the standard
3157search for ld. The two linkers supported on this target require different
3158commands. The default linker is determined during configuration. As a
3159result, it's not possible to switch linkers in the middle of a GCC build.
d1facce0
RW
3160This has been reported to sometimes occur in unified builds of binutils
3161and GCC@.
c5124497 3162
9a55eab3 3163GCC 3.0 through 3.2 require binutils 2.11 or above. GCC 3.3 through
25f710ba 3164GCC 4.0 require binutils 2.14 or later.
c5124497
JDA
3165
3166Although the HP assembler can be used for an initial build, it shouldn't
3167be used with any languages other than C and perhaps Fortran due to its
3168many limitations. For example, it does not support weak symbols or alias
3169definitions. As a result, explicit template instantiations are required
3170when using C++. This makes it difficult if not impossible to build many
3171C++ applications. You can't generate debugging information when using
cc11cc9b 3172the HP assembler. Finally, bootstrapping fails in the final
c5124497
JDA
3173comparison of object modules due to the time stamps that it inserts into
3174the modules. The bootstrap can be continued from this point with
cc11cc9b 3175@samp{make all-host all-target}.
c5124497
JDA
3176
3177A recent linker patch must be installed for the correct operation of
3178GCC 3.3 and later. @code{PHSS_26559} and @code{PHSS_24304} are the
3179oldest linker patches that are known to work. They are for HP-UX
318011.00 and 11.11, respectively. @code{PHSS_24303}, the companion to
3181@code{PHSS_24304}, might be usable but it hasn't been tested. These
3182patches have been superseded. Consult the HP patch database to obtain
3183the currently recommended linker patch for your system.
3184
3185The patches are necessary for the support of weak symbols on the
318632-bit port, and for the running of initializers and finalizers. Weak
3187symbols are implemented using SOM secondary definition symbols. Prior
3188to HP-UX 11, there are bugs in the linker support for secondary symbols.
3189The patches correct a problem of linker core dumps creating shared
3190libraries containing secondary symbols, as well as various other
3191linking issues involving secondary symbols.
3192
3193GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
3194run initializers and finalizers on the 64-bit port. The 32-bit port
3195uses the linker @option{+init} and @option{+fini} options for the same
3196purpose. The patches correct various problems with the +init/+fini
3197options, including program core dumps. Binutils 2.14 corrects a
3198problem on the 64-bit port resulting from HP's non-standard use of
3199the .init and .fini sections for array initializers and finalizers.
f401d0f5
JDA
3200
3201There are a number of issues to consider in selecting which linker to
c5124497 3202use with the 64-bit port. The GNU 64-bit linker can only create dynamic
f401d0f5
JDA
3203binaries. The @option{-static} option causes linking with archive
3204libraries but doesn't produce a truly static binary. Dynamic binaries
3205still require final binding by the dynamic loader to resolve a set of
3206dynamic-loader-defined symbols. The default behavior of the HP linker
3207is the same as the GNU linker. However, it can generate true 64-bit
3208static binaries using the @option{+compat} option.
3209
3210The HP 64-bit linker doesn't support linkonce semantics. As a
3211result, C++ programs have many more sections than they should.
3212
3213The GNU 64-bit linker has some issues with shared library support
3214and exceptions. As a result, we only support libgcc in archive
3215format. For similar reasons, dwarf2 unwind and exception support
3216are disabled. The GNU linker also has problems creating binaries
3217with @option{-static}. It doesn't provide stubs for internal
3218calls to global functions in shared libraries, so these calls
3219can't be overloaded.
581d9404 3220
c5124497
JDA
3221Thread support is not implemented in GCC 3.0 through 3.2, so the
3222@option{--enable-threads} configure option does not work. In 3.3
3223and later, POSIX threads are supported. The optional DCE thread
3224library is not supported.
581d9404
JDA
3225
3226This port still is undergoing significant development.
08b3d104 3227
f42974dc 3228@html
b8db17af 3229<hr />
f42974dc 3230@end html
5a4c9b10 3231@heading @anchor{x-x-linux-gnu}*-*-linux-gnu
f42974dc 3232
b818de22 3233Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
9e80ada7
PE
3234in glibc 2.2.5 and later. More information is available in the
3235libstdc++-v3 documentation.
3236
f42974dc 3237@html
b8db17af 3238<hr />
f42974dc 3239@end html
5a4c9b10 3240@heading @anchor{ix86-x-linux}i?86-*-linux*
f42974dc 3241
1ea6f4c8
DH
3242As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
3243See @uref{http://gcc.gnu.org/PR10877,,bug 10877} for more information.
f42974dc
DW
3244
3245If you receive Signal 11 errors when building on GNU/Linux, then it is
3246possible you have a hardware problem. Further information on this can be
3247found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
3248
8f47c084
JM
3249@html
3250<hr />
3251@end html
d8fcd085 3252@heading @anchor{ix86-x-solaris210}i?86-*-solaris2.10
8f47c084
JM
3253Use this for Solaris 10 or later on x86 and x86-64 systems. This
3254configuration is supported by GCC 4.0 and later versions only.
3255
3256It is recommended that you configure GCC to use the GNU assembler in
3257@file{/usr/sfw/bin/gas} but the Sun linker, using the options
3258@option{--with-gnu-as --with-as=/usr/sfw/bin/gas --without-gnu-ld
3259--with-ld=/usr/ccs/bin/ld}.
3260
b499d9ab 3261@html
b8db17af 3262<hr />
b499d9ab 3263@end html
5a4c9b10 3264@heading @anchor{ia64-x-linux}ia64-*-linux
b499d9ab
JJ
3265IA-64 processor (also known as IPF, or Itanium Processor Family)
3266running GNU/Linux.
3267
443728bb
L
3268If you are using the installed system libunwind library with
3269@option{--with-system-libunwind}, then you must use libunwind 0.98 or
3270later.
bcd11e5e 3271
b499d9ab
JJ
3272None of the following versions of GCC has an ABI that is compatible
3273with any of the other versions in this list, with the exception that
3274Red Hat 2.96 and Trillian 000171 are compatible with each other:
41ca24de 32753.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.
b499d9ab 3276This primarily affects C++ programs and programs that create shared libraries.
41ca24de
DH
3277GCC 3.1 or later is recommended for compiling linux, the kernel.
3278As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
3279more major ABI changes are expected.
b499d9ab 3280
959a73a4
DH
3281@html
3282<hr />
3283@end html
5a4c9b10 3284@heading @anchor{ia64-x-hpux}ia64-*-hpux*
8a36672b
JM
3285Building GCC on this target requires the GNU Assembler. The bundled HP
3286assembler will not work. To prevent GCC from using the wrong assembler,
959a73a4
DH
3287the option @option{--with-gnu-as} may be necessary.
3288
8a36672b 3289The GCC libunwind library has not been ported to HPUX@. This means that for
959a73a4 3290GCC versions 3.2.3 and earlier, @option{--enable-libunwind-exceptions}
8a36672b 3291is required to build GCC@. For GCC 3.3 and later, this is the default.
443728bb
L
3292For gcc 3.4.3 and later, @option{--enable-libunwind-exceptions} is
3293removed and the system libunwind library will always be used.
959a73a4 3294
f42974dc 3295@html
b8db17af 3296<hr />
f42974dc
DW
3297<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
3298@end html
5a4c9b10 3299@heading @anchor{x-ibm-aix}*-ibm-aix*
6a1dbbaf 3300Support for AIX version 3 and older was discontinued in GCC 3.4.
f42974dc 3301
7cc654b8
DE
3302``out of memory'' bootstrap failures may indicate a problem with
3303process resource limits (ulimit). Hard limits are configured in the
71fc0c16 3304@file{/etc/security/limits} system configuration file.
7cc654b8 3305
e8d8a034
DE
3306To speed up the configuration phases of bootstrapping and installing GCC,
3307one may use GNU Bash instead of AIX @command{/bin/sh}, e.g.,
3308
3309@smallexample
3310 % CONFIG_SHELL=/opt/freeware/bin/bash
3311 % export CONFIG_SHELL
3312@end smallexample
3313
cc11cc9b
PB
3314and then proceed as described in @uref{build.html,,the build
3315instructions}, where we strongly recommend specifying an absolute path
e8d8a034
DE
3316to invoke @var{srcdir}/configure.
3317
d3a95f27
DE
3318Because GCC on AIX is built as a 32-bit executable by default,
3319(although it can generate 64-bit programs) the GMP and MPFR libraries
3320required by gfortran must be 32-bit libraries. Building GMP and MPFR
3321as static archive libraries works better than shared libraries.
3322
6cfb3f16 3323Errors involving @code{alloca} when building GCC generally are due
021c4bfd 3324to an incorrect definition of @code{CC} in the Makefile or mixing files
161d7b59 3325compiled with the native C compiler and GCC@. During the stage1 phase of
6cfb3f16
JM
3326the build, the native AIX compiler @strong{must} be invoked as @command{cc}
3327(not @command{xlc}). Once @command{configure} has been informed of
3328@command{xlc}, one needs to use @samp{make distclean} to remove the
38209993 3329configure cache files and ensure that @env{CC} environment variable
f42974dc
DW
3330does not provide a definition that will confuse @command{configure}.
3331If this error occurs during stage2 or later, then the problem most likely
3332is the version of Make (see above).
3333
f0483418 3334The native @command{as} and @command{ld} are recommended for bootstrapping
8a36672b 3335on AIX 4 and required for bootstrapping on AIX 5L@. The GNU Assembler
f0483418
DE
3336reports that it supports WEAK symbols on AIX 4, which causes GCC to try to
3337utilize weak symbol functionality although it is not supported. The GNU
8a36672b 3338Assembler and Linker do not support AIX 5L sufficiently to bootstrap GCC@.
f0483418 3339The native AIX tools do interoperate with GCC@.
df002c7d 3340
04d2be8e 3341Building @file{libstdc++.a} requires a fix for an AIX Assembler bug
bb674cef
DE
3342APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a
3343fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
06e7f299 3344referenced as APAR IY53606 (AIX 5.2) or a APAR IY54774 (AIX 5.1)
2705baf5 3345
bb674cef 3346@samp{libstdc++} in GCC 3.4 increments the major version number of the
fdf68669 3347shared object and GCC installation places the @file{libstdc++.a}
bb674cef
DE
3348shared library in a common location which will overwrite the and GCC
33493.3 version of the shared library. Applications either need to be
3350re-linked against the new shared library or the GCC 3.1 and GCC 3.3
3351versions of the @samp{libstdc++} shared object needs to be available
3352to the AIX runtime loader. The GCC 3.1 @samp{libstdc++.so.4}, if
3353present, and GCC 3.3 @samp{libstdc++.so.5} shared objects can be
3354installed for runtime dynamic loading using the following steps to set
3355the @samp{F_LOADONLY} flag in the shared object for @emph{each}
fdf68669
DE
3356multilib @file{libstdc++.a} installed:
3357
bb674cef
DE
3358Extract the shared objects from the currently installed
3359@file{libstdc++.a} archive:
3ab51846 3360@smallexample
bb674cef 3361 % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
3ab51846 3362@end smallexample
fdf68669
DE
3363
3364Enable the @samp{F_LOADONLY} flag so that the shared object will be
3365available for runtime dynamic loading, but not linking:
3ab51846 3366@smallexample
bb674cef 3367 % strip -e libstdc++.so.4 libstdc++.so.5
3ab51846 3368@end smallexample
fdf68669 3369
bb674cef 3370Archive the runtime-only shared object in the GCC 3.4
fdf68669 3371@file{libstdc++.a} archive:
3ab51846 3372@smallexample
bb674cef 3373 % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
3ab51846 3374@end smallexample
fdf68669 3375
df002c7d
DE
3376Linking executables and shared libraries may produce warnings of
3377duplicate symbols. The assembly files generated by GCC for AIX always
3378have included multiple symbol definitions for certain global variable
3379and function declarations in the original program. The warnings should
3380not prevent the linker from producing a correct library or runnable
3381executable.
3382
6cfb3f16 3383AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and
df002c7d
DE
338464-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1
3385to parse archive libraries did not handle the new format correctly.
3386These routines are used by GCC and result in error messages during
6cfb3f16 3387linking such as ``not a COFF file''. The version of the routines shipped
df002c7d
DE
3388with AIX 4.3.1 should work for a 32-bit environment. The @option{-g}
3389option of the archive command may be used to create archives of 32-bit
6cfb3f16 3390objects using the original ``small format''. A correct version of the
d5d8d540 3391routines is shipped with AIX 4.3.2 and above.
df002c7d 3392
f42974dc
DW
3393Some versions of the AIX binder (linker) can fail with a relocation
3394overflow severe error when the @option{-bbigtoc} option is used to link
161d7b59 3395GCC-produced object files into an executable that overflows the TOC@. A fix
f42974dc
DW
3396for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
3397available from IBM Customer Support and from its
d5d8d540 3398@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
3399website as PTF U455193.
3400
df002c7d 3401The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
161d7b59 3402with a segmentation fault when invoked by any version of GCC@. A fix for
df002c7d 3403APAR IX87327 is available from IBM Customer Support and from its
d5d8d540 3404@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
df002c7d 3405website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above.
f42974dc
DW
3406
3407The initial assembler shipped with AIX 4.3.0 generates incorrect object
3408files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
3409TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
d5d8d540 3410@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
3411website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above.
3412
161d7b59 3413AIX provides National Language Support (NLS)@. Compilers and assemblers
df002c7d 3414use NLS to support locale-specific representations of various data
6cfb3f16 3415formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for
df002c7d
DE
3416separating decimal fractions). There have been problems reported where
3417GCC does not produce the same floating-point formats that the assembler
c771326b 3418expects. If one encounters this problem, set the @env{LANG}
6cfb3f16 3419environment variable to @samp{C} or @samp{En_US}.
f42974dc 3420
5791e6da
DE
3421By default, GCC for AIX 4.1 and above produces code that can be used on
3422both Power or PowerPC processors.
3423
d5d8d540
DE
3424A default can be specified with the @option{-mcpu=@var{cpu_type}}
3425switch and using the configure option @option{--with-cpu-@var{cpu_type}}.
f42974dc 3426
6b3d1e47
SC
3427@html
3428<hr />
3429@end html
5a4c9b10 3430@heading @anchor{iq2000-x-elf}iq2000-*-elf
6b3d1e47
SC
3431Vitesse IQ2000 processors. These are used in embedded
3432applications. There are no standard Unix configurations.
3433
38b2d076
DD
3434@html
3435<hr />
3436@end html
3437@heading @anchor{m32c-x-elf}m32c-*-elf
3438Renesas M32C processor.
3439This configuration is intended for embedded systems.
3440
b8df899a 3441@html
b8db17af 3442<hr />
b8df899a 3443@end html
5a4c9b10 3444@heading @anchor{m32r-x-elf}m32r-*-elf
25f47a4c 3445Renesas M32R processor.
b8df899a
JM
3446This configuration is intended for embedded systems.
3447
b8df899a 3448@html
b8db17af 3449<hr />
b8df899a
JM
3450@end html
3451@heading @anchor{m6811-elf}m6811-elf
3452Motorola 68HC11 family micro controllers. These are used in embedded
3453applications. There are no standard Unix configurations.
3454
3455@html
b8db17af 3456<hr />
b8df899a
JM
3457@end html
3458@heading @anchor{m6812-elf}m6812-elf
3459Motorola 68HC12 family micro controllers. These are used in embedded
3460applications. There are no standard Unix configurations.
3461
b8df899a 3462@html
b8db17af 3463<hr />
b8df899a 3464@end html
183dc04b 3465@heading @anchor{m68k-x-x}m68k-*-*
10e96df4 3466By default, @samp{m68k-*-aout}, @samp{m68k-*-coff*},
368b55f6
NS
3467@samp{m68k-*-elf*}, @samp{m68k-*-rtems}, @samp{m68k-*-uclinux} and
3468@samp{m68k-*-linux}
10e96df4
NS
3469build libraries for both M680x0 and ColdFire processors. If you only
3470need the M680x0 libraries, you can omit the ColdFire ones by passing
3471@option{--with-arch=m68k} to @command{configure}. Alternatively, you
3472can omit the M680x0 libraries by passing @option{--with-arch=cf} to
368b55f6
NS
3473@command{configure}. These targets default to 5206 or 5475 code as
3474appropriate for the target system when
10e96df4
NS
3475configured with @option{--with-arch=cf} and 68020 code otherwise.
3476
368b55f6 3477The @samp{m68k-*-netbsd} and
10e96df4
NS
3478@samp{m68k-*-openbsd} targets also support the @option{--with-arch}
3479option. They will generate ColdFire CFV4e code when configured with
3480@option{--with-arch=cf} and 68020 code otherwise.
3481
3482You can override the default processors listed above by configuring
3483with @option{--with-cpu=@var{target}}. This @var{target} can either
3484be a @option{-mcpu} argument or one of the following values:
3485@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
900ec02d 3486@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
59fbf3cb 3487
4529dbf1
RS
3488@html
3489<hr />
3490@end html
3491@heading @anchor{m68k-x-uclinux}m68k-*-uclinux
3492GCC 4.3 changed the uClinux configuration so that it uses the
3493@samp{m68k-linux-gnu} ABI rather than the @samp{m68k-elf} ABI.
3494It also added improved support for C++ and flat shared libraries,
3495both of which were ABI changes. However, you can still use the
3496original ABI by configuring for @samp{m68k-uclinuxoldabi} or
3497@samp{m68k-@var{vendor}-uclinuxoldabi}.
3498
b8df899a 3499@html
b8db17af 3500<hr />
b8df899a 3501@end html
5a4c9b10 3502@heading @anchor{mips-x-x}mips-*-*
b8df899a
JM
3503If on a MIPS system you get an error message saying ``does not have gp
3504sections for all it's [sic] sectons [sic]'', don't worry about it. This
3505happens whenever you use GAS with the MIPS linker, but there is not
3506really anything wrong, and it is okay to use the output file. You can
3507stop such warnings by installing the GNU linker.
3508
3509It would be nice to extend GAS to produce the gp tables, but they are
3510optional, and there should not be a warning about their absence.
3511
26979a17
PE
3512The libstdc++ atomic locking routines for MIPS targets requires MIPS II
3513and later. A patch went in just after the GCC 3.3 release to
3514make @samp{mips*-*-*} use the generic implementation instead. You can also
3515configure for @samp{mipsel-elf} as a workaround. The
3516@samp{mips*-*-linux*} target continues to use the MIPS II routines. More
3517work on this is expected in future releases.
3518
66471b47
DD
3519@c If you make --with-llsc the default for another target, please also
3520@c update the description of the --with-llsc option.
3521
3522The built-in @code{__sync_*} functions are available on MIPS II and
3523later systems and others that support the @samp{ll}, @samp{sc} and
3524@samp{sync} instructions. This can be overridden by passing
3525@option{--with-llsc} or @option{--without-llsc} when configuring GCC.
3526Since the Linux kernel emulates these instructions if they are
3527missing, the default for @samp{mips*-*-linux*} targets is
3528@option{--with-llsc}. The @option{--with-llsc} and
3529@option{--without-llsc} configure options may be overridden at compile
3530time by passing the @option{-mllsc} or @option{-mno-llsc} options to
3531the compiler.
3532
9f0df97a
DD
3533MIPS systems check for division by zero (unless
3534@option{-mno-check-zero-division} is passed to the compiler) by
3535generating either a conditional trap or a break instruction. Using
3536trap results in smaller code, but is only supported on MIPS II and
3537later. Also, some versions of the Linux kernel have a bug that
8a36672b 3538prevents trap from generating the proper signal (@code{SIGFPE}). To enable
9f0df97a 3539the use of break, use the @option{--with-divide=breaks}
8a36672b 3540@command{configure} option when configuring GCC@. The default is to
9f0df97a
DD
3541use traps on systems that support them.
3542
a4d05547 3543Cross-compilers for the MIPS as target using the MIPS assembler
01e97976
JM
3544currently do not work, because the auxiliary programs
3545@file{mips-tdump.c} and @file{mips-tfile.c} can't be compiled on
0ee2ea09 3546anything but a MIPS@. It does work to cross compile for a MIPS
01e97976
JM
3547if you use the GNU assembler and linker.
3548
3eb3cf05
DD
3549The assembler from GNU binutils 2.17 and earlier has a bug in the way
3550it sorts relocations for REL targets (o32, o64, EABI). This can cause
3551bad code to be generated for simple C++ programs. Also the linker
3552from GNU binutils versions prior to 2.17 has a bug which causes the
3553runtime linker stubs in very large programs, like @file{libgcj.so}, to
4e2e9e9b
DD
3554be incorrectly generated. GNU Binutils 2.18 and later (and snapshots
3555made after Nov. 9, 2006) should be free from both of these problems.
549fb079 3556
5fb57097
EB
3557@html
3558<hr />
3559@end html
b953cc4b
RO
3560@heading @anchor{mips-sgi-irix5}mips-sgi-irix5
3561
7e270317
RO
3562In order to compile GCC on an SGI running IRIX 5, the @samp{compiler_dev.hdr}
3563subsystem must be installed from the IDO CD-ROM supplied by SGI@.
3564It is also available for download from
8df5a2b4 3565@uref{ftp://ftp.sgi.com/sgi/IRIX5.3/iris-development-option-5.3.tardist}.
f42974dc 3566
213ba345
RO
3567If you use the MIPS C compiler to bootstrap, it may be necessary
3568to increase its table size for switch statements with the
3569@option{-Wf,-XNg1500} option. If you use the @option{-O2}
3570optimization option, you also need to use @option{-Olimit 3000}.
f42974dc 3571
7e270317 3572To enable debugging under IRIX 5, you must use GNU binutils 2.15 or
82563d35
RS
3573later, and use the @option{--with-gnu-ld} @command{configure} option
3574when configuring GCC@. You need to use GNU @command{ar} and @command{nm},
3575also distributed with GNU binutils.
f42974dc 3576
c5e1045b
RS
3577Some users have reported that @command{/bin/sh} will hang during bootstrap.
3578This problem can be avoided by running the commands:
3579
3580@smallexample
3581 % CONFIG_SHELL=/bin/ksh
3582 % export CONFIG_SHELL
3583@end smallexample
3584
3585before starting the build.
3586
f42974dc 3587@html
b8db17af 3588<hr />
f42974dc 3589@end html
b953cc4b 3590@heading @anchor{mips-sgi-irix6}mips-sgi-irix6
f42974dc 3591
7e270317 3592If you are using SGI's MIPSpro @command{cc} as your bootstrap compiler, you must
f42974dc
DW
3593ensure that the N32 ABI is in use. To test this, compile a simple C
3594file with @command{cc} and then run @command{file} on the
3595resulting object file. The output should look like:
3596
3ab51846 3597@smallexample
213ba345 3598test.o: ELF N32 MSB @dots{}
3ab51846 3599@end smallexample
f42974dc
DW
3600
3601If you see:
213ba345 3602
3ab51846 3603@smallexample
213ba345 3604test.o: ELF 32-bit MSB @dots{}
3ab51846 3605@end smallexample
213ba345
RO
3606
3607or
3608
3ab51846 3609@smallexample
213ba345 3610test.o: ELF 64-bit MSB @dots{}
3ab51846 3611@end smallexample
f42974dc 3612
213ba345 3613then your version of @command{cc} uses the O32 or N64 ABI by default. You
38209993 3614should set the environment variable @env{CC} to @samp{cc -n32}
82563d35 3615before configuring GCC@.
f42974dc 3616
0fca60ab 3617If you want the resulting @command{gcc} to run on old 32-bit systems
7e270317 3618with the MIPS R4400 CPU, you need to ensure that only code for the @samp{mips3}
0fca60ab
RO
3619instruction set architecture (ISA) is generated. While GCC 3.x does
3620this correctly, both GCC 2.95 and SGI's MIPSpro @command{cc} may change
3621the ISA depending on the machine where GCC is built. Using one of them
7e270317
RO
3622as the bootstrap compiler may result in @samp{mips4} code, which won't run at
3623all on @samp{mips3}-only systems. For the test program above, you should see:
0fca60ab 3624
3ab51846 3625@smallexample
0fca60ab 3626test.o: ELF N32 MSB mips-3 @dots{}
3ab51846 3627@end smallexample
0fca60ab
RO
3628
3629If you get:
3630
3ab51846 3631@smallexample
0fca60ab 3632test.o: ELF N32 MSB mips-4 @dots{}
3ab51846 3633@end smallexample
0fca60ab
RO
3634
3635instead, you should set the environment variable @env{CC} to @samp{cc
3636-n32 -mips3} or @samp{gcc -mips3} respectively before configuring GCC@.
3637
82563d35
RS
3638MIPSpro C 7.4 may cause bootstrap failures, due to a bug when inlining
3639@code{memcmp}. Either add @code{-U__INLINE_INTRINSICS} to the @env{CC}
3640environment variable as a workaround or upgrade to MIPSpro C 7.4.1m.
3641
7e270317
RO
3642GCC on IRIX 6 is usually built to support the N32, O32 and N64 ABIs. If
3643you build GCC on a system that doesn't have the N64 libraries installed
3644or cannot run 64-bit binaries,
213ba345 3645you need to configure with @option{--disable-multilib} so GCC doesn't
7e270317
RO
3646try to use them. This will disable building the O32 libraries, too.
3647Look for @file{/usr/lib64/libc.so.1} to see if you
213ba345
RO
3648have the 64-bit libraries installed.
3649
7e270317
RO
3650To enable debugging for the O32 ABI, you must use GNU @command{as} from
3651GNU binutils 2.15 or later. You may also use GNU @command{ld}, but
3652this is not required and currently causes some problems with Ada.
f42974dc 3653
40f5cc95 3654The @option{--enable-libgcj}
b953cc4b 3655option is disabled by default: IRIX 6 uses a very low default limit
7e270317 3656(20480) for the command line length. Although @command{libtool} contains a
b953cc4b
RO
3657workaround for this problem, at least the N64 @samp{libgcj} is known not
3658to build despite this, running into an internal error of the native
3659@command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to
3660its maximum of 262144 bytes. If you have root access, you can use the
3661@command{systune} command to do this.
3662
93e89068
PC
3663@code{wchar_t} support in @samp{libstdc++} is not available for old
3664IRIX 6.5.x releases, @math{x < 19}. The problem cannot be autodetected
3665and in order to build GCC for such targets you need to configure with
3666@option{--disable-wchar_t}.
3667
7e270317 3668See @uref{http://freeware.sgi.com/} for more
3aa8219e 3669information about using GCC on IRIX platforms.
f42974dc 3670
b8df899a 3671@html
b8db17af 3672<hr />
b8df899a 3673@end html
5a4c9b10 3674@heading @anchor{powerpc-x-x}powerpc-*-*
b8df899a 3675
6cfb3f16
JM
3676You can specify a default version for the @option{-mcpu=@var{cpu_type}}
3677switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
b8df899a 3678
1590a115
NF
3679You will need
3680@uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.15}
3681or newer for a working GCC@.
3682
4f2b1139 3683@html
b8db17af 3684<hr />
4f2b1139 3685@end html
5a4c9b10 3686@heading @anchor{powerpc-x-darwin}powerpc-*-darwin*
4f2b1139
SS
3687PowerPC running Darwin (Mac OS X kernel).
3688
4f2b1139
SS
3689Pre-installed versions of Mac OS X may not include any developer tools,
3690meaning that you will not be able to build GCC from source. Tool
3691binaries are available at
beb5f807 3692@uref{http://developer.apple.com/darwin/projects/compiler/} (free
4f2b1139
SS
3693registration required).
3694
80c85ca2
MS
3695This version of GCC requires at least cctools-590.36. The
3696cctools-590.36 package referenced from
3697@uref{http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html} will not work
3698on systems older than 10.3.9 (aka darwin7.9.0).
4f2b1139 3699
021c4bfd 3700@html
b8db17af 3701<hr />
021c4bfd 3702@end html
cd985f66 3703@heading @anchor{powerpc-x-elf}powerpc-*-elf
021c4bfd
RO
3704PowerPC system in big endian mode, running System V.4.
3705
f42974dc 3706@html
b8db17af 3707<hr />
f42974dc 3708@end html
5a4c9b10 3709@heading @anchor{powerpc-x-linux-gnu}powerpc*-*-linux-gnu*
f42974dc 3710
1590a115 3711PowerPC system in big endian mode running Linux.
f42974dc 3712
edf1b3f3 3713@html
b8db17af 3714<hr />
edf1b3f3 3715@end html
5a4c9b10 3716@heading @anchor{powerpc-x-netbsd}powerpc-*-netbsd*
f0947430 3717PowerPC system in big endian mode running NetBSD@.
edf1b3f3 3718
b8df899a 3719@html
b8db17af 3720<hr />
b8df899a 3721@end html
5a4c9b10 3722@heading @anchor{powerpc-x-eabisim}powerpc-*-eabisim
b8df899a
JM
3723Embedded PowerPC system in big endian mode for use in running under the
3724PSIM simulator.
3725
b8df899a 3726@html
b8db17af 3727<hr />
b8df899a 3728@end html
5a4c9b10 3729@heading @anchor{powerpc-x-eabi}powerpc-*-eabi
b8df899a
JM
3730Embedded PowerPC system in big endian mode.
3731
b8df899a 3732@html
b8db17af 3733<hr />
b8df899a 3734@end html
cd985f66 3735@heading @anchor{powerpcle-x-elf}powerpcle-*-elf
b8df899a
JM
3736PowerPC system in little endian mode, running System V.4.
3737
b8df899a 3738@html
b8db17af 3739<hr />
b8df899a 3740@end html
5a4c9b10 3741@heading @anchor{powerpcle-x-eabisim}powerpcle-*-eabisim
b8df899a
JM
3742Embedded PowerPC system in little endian mode for use in running under
3743the PSIM simulator.
3744
3745@html
b8db17af 3746<hr />
b8df899a 3747@end html
5a4c9b10 3748@heading @anchor{powerpcle-x-eabi}powerpcle-*-eabi
b8df899a
JM
3749Embedded PowerPC system in little endian mode.
3750
91abf72d 3751@html
b8db17af 3752<hr />
91abf72d 3753@end html
5a4c9b10 3754@heading @anchor{s390-x-linux}s390-*-linux*
95fef11f 3755S/390 system running GNU/Linux for S/390@.
91abf72d
HP
3756
3757@html
b8db17af 3758<hr />
91abf72d 3759@end html
5a4c9b10 3760@heading @anchor{s390x-x-linux}s390x-*-linux*
95fef11f 3761zSeries system (64-bit) running GNU/Linux for zSeries@.
91abf72d 3762
8bf06993
UW
3763@html
3764<hr />
3765@end html
5a4c9b10 3766@heading @anchor{s390x-ibm-tpf}s390x-ibm-tpf*
8a36672b 3767zSeries system (64-bit) running TPF@. This platform is
8bf06993
UW
3768supported as cross-compilation target only.
3769
f42974dc 3770@html
b8db17af 3771<hr />
f42974dc 3772@end html
250d5688 3773@c Please use Solaris 2 to refer to all release of Solaris, starting
1460af95 3774@c with 2.0 until 2.6, 7, 8, etc. Solaris 1 was a marketing name for
250d5688
RO
3775@c SunOS 4 releases which we don't use to avoid confusion. Solaris
3776@c alone is too unspecific and must be avoided.
5a4c9b10 3777@heading @anchor{x-x-solaris2}*-*-solaris2*
f42974dc 3778
250d5688 3779Sun does not ship a C compiler with Solaris 2. To bootstrap and install
962e6e00 3780GCC you first have to install a pre-built compiler, see the
dbd210ef 3781@uref{binaries.html,,binaries page} for details.
f42974dc 3782
250d5688 3783The Solaris 2 @command{/bin/sh} will often fail to configure
92441f83 3784@file{libstdc++-v3}, @file{boehm-gc} or @file{libjava}. We therefore
1da1ce3f 3785recommend using the following initial sequence of commands
bc890961
EB
3786
3787@smallexample
3788 % CONFIG_SHELL=/bin/ksh
3789 % export CONFIG_SHELL
bc890961
EB
3790@end smallexample
3791
1da1ce3f 3792and proceed as described in @uref{configure.html,,the configure instructions}.
37de1373
GP
3793In addition we strongly recommend specifying an absolute path to invoke
3794@var{srcdir}/configure.
e6855a2d 3795
b8df899a 3796Solaris 2 comes with a number of optional OS packages. Some of these
92441f83 3797are needed to use GCC fully, namely @code{SUNWarc},
dbd210ef
KC
3798@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm},
3799@code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all
250d5688 3800optional packages when installing Solaris 2, you will need to verify that
b8df899a
JM
3801the packages that GCC needs are installed.
3802
3803To check whether an optional package is installed, use
dbd210ef 3804the @command{pkginfo} command. To add an optional package, use the
250d5688 3805@command{pkgadd} command. For further details, see the Solaris 2
b8df899a
JM
3806documentation.
3807
250d5688 3808Trying to use the linker and other tools in
b8df899a
JM
3809@file{/usr/ucb} to install GCC has been observed to cause trouble.
3810For example, the linker may hang indefinitely. The fix is to remove
250d5688 3811@file{/usr/ucb} from your @env{PATH}.
f42974dc 3812
bc890961
EB
3813The build process works more smoothly with the legacy Sun tools so, if you
3814have @file{/usr/xpg4/bin} in your @env{PATH}, we recommend that you place
3815@file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build.
3816
2bd58b1b
EB
3817We recommend the use of GNU binutils 2.14 or later, or the vendor tools
3818(Sun @command{as}, Sun @command{ld}). Note that your mileage may vary
3819if you use a combination of the GNU tools and the Sun tools: while the
3820combination GNU @command{as} + Sun @command{ld} should reasonably work,
51e9a60c
EB
3821the reverse combination Sun @command{as} + GNU @command{ld} is known to
3822cause memory corruption at runtime in some cases for C++ programs.
3823
3824The stock GNU binutils 2.15 release is broken on this platform because of a
3825single bug. It has been fixed on the 2.15 branch in the CVS repository.
3826You can obtain a working version by checking out the binutils-2_15-branch
3827from the CVS repository or applying the patch
4eb3e795 3828@uref{http://sourceware.org/ml/binutils-cvs/2004-09/msg00036.html} to the
51e9a60c 3829release.
f42974dc 3830
2bd58b1b
EB
3831We recommend the use of GNU binutils 2.16 or later in conjunction with GCC
38324.x, or the vendor tools (Sun @command{as}, Sun @command{ld}). However,
3833for Solaris 10 and above, an additional patch is required in order for the
3834GNU linker to be able to cope with a new flavor of shared libraries. You
ff8f80f2
EB
3835can obtain a working version by checking out the binutils-2_16-branch from
3836the CVS repository or applying the patch
2c00bd42
EB
3837@uref{http://sourceware.org/ml/binutils-cvs/2005-07/msg00122.html} to the
3838release.
3839
250d5688 3840Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
2bd58b1b
EB
3841newer: @command{g++} will complain that types are missing. These headers
3842assume that omitting the type means @code{int}; this assumption worked for
3843C89 but is wrong for C++, and is now wrong for C99 also.
250d5688 3844
13ba36b4 3845@command{g++} accepts such (invalid) constructs with the option
2bd58b1b
EB
3846@option{-fpermissive}; it will assume that any missing type is @code{int}
3847(as defined by C89).
250d5688 3848
2bd58b1b 3849There are patches for Solaris 7 (108376-21 or newer for SPARC,
250d5688
RO
3850108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
3851108653-22 for Intel) that fix this bug.
f42974dc 3852
c7525a64
KG
3853Sun bug 4927647 sometimes causes random spurious testsuite failures
3854related to missing diagnostic output. This bug doesn't affect GCC
3855itself, rather it is a kernel bug triggered by the @command{expect}
3856program which is used only by the GCC testsuite driver. When the bug
3857causes the @command{expect} program to miss anticipated output, extra
3858testsuite failures appear.
3859
3860There are patches for Solaris 8 (117350-12 or newer for SPARC,
3861117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for
3862SPARC, 117172-11 or newer for Intel) that address this problem.
3863
dbd210ef 3864@html
b8db17af 3865<hr />
dbd210ef 3866@end html
5a4c9b10 3867@heading @anchor{sparc-sun-solaris2}sparc-sun-solaris2*
dbd210ef 3868
2bd58b1b 3869When GCC is configured to use binutils 2.14 or later the binaries
1405141b
DN
3870produced are smaller than the ones produced using Sun's native tools;
3871this difference is quite significant for binaries containing debugging
3872information.
3873
03b272d2 3874Starting with Solaris 7, the operating system is capable of executing
975c6e4e
RO
387564-bit SPARC V9 binaries. GCC 3.1 and later properly supports
3876this; the @option{-m64} option enables 64-bit code generation.
3877However, if all you want is code tuned for the UltraSPARC CPU, you
3878should try the @option{-mtune=ultrasparc} option instead, which produces
3879code that, unlike full 64-bit code, can still run on non-UltraSPARC
edf1c8df 3880machines.
03b272d2 3881
975c6e4e 3882When configuring on a Solaris 7 or later system that is running a kernel
8947df0c
RH
3883that supports only 32-bit binaries, one must configure with
3884@option{--disable-multilib}, since we will not be able to build the
388564-bit target libraries.
3fc602a0 3886
ae81c844
EB
3887GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of
3888the GNU compiler (especially GCC 3.0.x versions), which lead to the
3889miscompilation of the stage1 compiler and the subsequent failure of the
3890bootstrap process. A workaround is to use GCC 3.2.3 as an intermediary
431ae0bf 3891stage, i.e.@: to bootstrap that compiler with the base compiler and then
ae81c844
EB
3892use it to bootstrap the final compiler.
3893
94b18ec1
EB
3894GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7)
3895and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap
3896failure in form of a miscompilation of the stage1 compiler by the Sun
3897compiler. This is Sun bug 4974440. This is fixed with patch 112760-07.
3898
1460af95 3899GCC 3.4 changed the default debugging format from STABS to DWARF-2 for
dd48afcd
EB
390032-bit code on Solaris 7 and later. If you use the Sun assembler, this
3901change apparently runs afoul of Sun bug 4910101 (which is referenced as
3902a x86-only problem by Sun, probably because they do not use DWARF-2).
3903A symptom of the problem is that you cannot compile C++ programs like
3904@command{groff} 1.19.1 without getting messages similar to the following:
7c2f2b41
EB
3905
3906@smallexample
3907ld: warning: relocation error: R_SPARC_UA32: @dots{}
3908 external symbolic relocation against non-allocatable section
3909 .debug_info cannot be processed at runtime: relocation ignored.
3910@end smallexample
3911
3912To work around this problem, compile with @option{-gstabs+} instead of
3913plain @option{-g}.
1460af95 3914
b3c9881c
EB
3915When configuring the GNU Multiple Precision Library (GMP) or the MPFR
3916library on a Solaris 7 or later system, the canonical target triplet
3917must be specified as the @command{build} parameter on the configure
3918line. This triplet can be obtained by invoking ./config.guess in
3919the toplevel source directory of GCC (and not that of GMP or MPFR).
3920For example on a Solaris 7 system:
25c62e24
EB
3921
3922@smallexample
b3c9881c 3923 % ./configure --build=sparc-sun-solaris2.7 --prefix=xxx
25c62e24
EB
3924@end smallexample
3925
f42974dc 3926@html
b8db17af 3927<hr />
f42974dc 3928@end html
d8fcd085 3929@heading @anchor{sparc-sun-solaris27}sparc-sun-solaris2.7
f42974dc 3930
250d5688 3931Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in
f42974dc
DW
3932the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8
3933and later, including all EGCS releases. Sun formerly recommended
3934107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
3935recommend it only for people who use Sun's compilers.
f9047ed3 3936
f42974dc
DW
3937Here are some workarounds to this problem:
3938@itemize @bullet
3939@item
3940Do not install Sun patch 107058-01 until after Sun releases a
3941complete patch for bug 4210064. This is the simplest course to take,
3942unless you must also use Sun's C compiler. Unfortunately 107058-01
250d5688 3943is preinstalled on some new Solaris 7-based hosts, so you may have to
f42974dc 3944back it out.
f9047ed3 3945
f42974dc
DW
3946@item
3947Copy the original, unpatched Solaris 7
3948@command{/usr/ccs/bin/as} into
8e5f33ff 3949@command{/usr/local/libexec/gcc/sparc-sun-solaris2.7/3.4/as},
f42974dc
DW
3950adjusting the latter name to fit your local conventions and software
3951version numbers.
3952
3953@item
3954Install Sun patch 106950-03 (1999-05-25) or later. Nobody with
3955both 107058-01 and 106950-03 installed has reported the bug with GCC
3956and Sun's dynamic linker. This last course of action is riskiest,
3957for two reasons. First, you must install 106950 on all hosts that
3958run code generated by GCC; it doesn't suffice to install it only on
3959the hosts that run GCC itself. Second, Sun says that 106950-03 is
3960only a partial fix for bug 4210064, but Sun doesn't know whether the
161d7b59 3961partial fix is adequate for GCC@. Revision -08 or later should fix
1460af95 3962the bug. The current (as of 2004-05-23) revision is -24, and is included in
f282ffb3 3963the Solaris 7 Recommended Patch Cluster.
f9047ed3 3964@end itemize
f42974dc 3965
fdbf04c8
EB
3966GCC 3.3 triggers a bug in version 5.0 Alpha 03/27/98 of the Sun assembler,
3967which causes a bootstrap failure when linking the 64-bit shared version of
8a36672b 3968libgcc. A typical error message is:
fdbf04c8
EB
3969
3970@smallexample
3971ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o:
3972 symbol <unknown>: offset 0xffffffff7ec133e7 is non-aligned.
3973@end smallexample
3974
3975This bug has been fixed in the final 5.0 version of the assembler.
f42974dc 3976
661f4f90
EB
3977A similar problem was reported for version Sun WorkShop 6 99/08/18 of the
3978Sun assembler, which causes a bootstrap failure with GCC 4.0.0:
3979
3980@smallexample
3981ld: fatal: relocation error: R_SPARC_DISP32:
3982 file .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o:
3983 symbol <unknown>: offset 0xfccd33ad is non-aligned
3984@end smallexample
3985
3986This bug has been fixed in more recent revisions of the assembler.
3987
c6fa9728 3988@html
b8db17af 3989<hr />
c6fa9728 3990@end html
5a4c9b10 3991@heading @anchor{sparc-x-linux}sparc-*-linux*
c6fa9728
JS
3992
3993GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
3994or newer on this platform. All earlier binutils and glibc
3995releases mishandled unaligned relocations on @code{sparc-*-*} targets.
3996
3997
f42974dc 3998@html
b8db17af 3999<hr />
f42974dc 4000@end html
5a4c9b10 4001@heading @anchor{sparc64-x-solaris2}sparc64-*-solaris2*
e403b4bc 4002
b3c9881c
EB
4003When configuring the GNU Multiple Precision Library (GMP) or the
4004MPFR library, the canonical target triplet must be specified as
4005the @command{build} parameter on the configure line. For example
4006on a Solaris 7 system:
4007
4008@smallexample
4009 % ./configure --build=sparc64-sun-solaris2.7 --prefix=xxx
4010@end smallexample
4011
e403b4bc
CR
4012The following compiler flags must be specified in the configure
4013step in order to bootstrap this target with the Sun compiler:
4014
3ab51846 4015@smallexample
b3c9881c 4016 % CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 4017@end smallexample
e403b4bc 4018
b3c9881c
EB
4019@option{-xarch=v9} specifies the SPARC-V9 architecture to the Sun toolchain
4020and @option{-xildoff} turns off the incremental linker.
0dc7ee3c
EB
4021
4022@html
4023<hr />
4024@end html
5a4c9b10 4025@heading @anchor{sparcv9-x-solaris2}sparcv9-*-solaris2*
0dc7ee3c
EB
4026
4027This is a synonym for sparc64-*-solaris2*.
f42974dc 4028
4977bab6
ZW
4029@html
4030<hr />
4031@end html
5a4c9b10 4032@heading @anchor{x-x-vxworks}*-*-vxworks*
4977bab6 4033Support for VxWorks is in flux. At present GCC supports @emph{only} the
8a36672b 4034very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC@.
4977bab6
ZW
4035We welcome patches for other architectures supported by VxWorks 5.5.
4036Support for VxWorks AE would also be welcome; we believe this is merely
4037a matter of writing an appropriate ``configlette'' (see below). We are
4038not interested in supporting older, a.out or COFF-based, versions of
4039VxWorks in GCC 3.
4040
4041VxWorks comes with an older version of GCC installed in
4042@file{@var{$WIND_BASE}/host}; we recommend you do not overwrite it.
4043Choose an installation @var{prefix} entirely outside @var{$WIND_BASE}.
4044Before running @command{configure}, create the directories @file{@var{prefix}}
4045and @file{@var{prefix}/bin}. Link or copy the appropriate assembler,
8a36672b 4046linker, etc.@: into @file{@var{prefix}/bin}, and set your @var{PATH} to
4977bab6
ZW
4047include that directory while running both @command{configure} and
4048@command{make}.
4049
4050You must give @command{configure} the
4051@option{--with-headers=@var{$WIND_BASE}/target/h} switch so that it can
4052find the VxWorks system headers. Since VxWorks is a cross compilation
4053target only, you must also specify @option{--target=@var{target}}.
4054@command{configure} will attempt to create the directory
4055@file{@var{prefix}/@var{target}/sys-include} and copy files into it;
4056make sure the user running @command{configure} has sufficient privilege
4057to do so.
4058
4059GCC's exception handling runtime requires a special ``configlette''
4060module, @file{contrib/gthr_supp_vxw_5x.c}. Follow the instructions in
4061that file to add the module to your kernel build. (Future versions of
daf2f129 4062VxWorks will incorporate this module.)
4977bab6 4063
7e081a0c
AJ
4064@html
4065<hr />
4066@end html
d8fcd085 4067@heading @anchor{x86-64-x-x}x86_64-*-*, amd64-*-*
7e081a0c
AJ
4068
4069GCC supports the x86-64 architecture implemented by the AMD64 processor
8a36672b 4070(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD@.
7e081a0c
AJ
4071On GNU/Linux the default is a bi-arch compiler which is able to generate
4072both 64-bit x86-64 and 32-bit x86 code (via the @option{-m32} switch).
4073
fd29f6ea 4074@html
b8db17af 4075<hr />
fd29f6ea 4076@end html
6d656178 4077@heading @anchor{xtensa-x-elf}xtensa*-*-elf
fd29f6ea
BW
4078
4079This target is intended for embedded Xtensa systems using the
4080@samp{newlib} C library. It uses ELF but does not support shared
4081objects. Designed-defined instructions specified via the
4082Tensilica Instruction Extension (TIE) language are only supported
4083through inline assembly.
4084
4085The Xtensa configuration information must be specified prior to
e677f70c 4086building GCC@. The @file{include/xtensa-config.h} header
fd29f6ea
BW
4087file contains the configuration information. If you created your
4088own Xtensa configuration with the Xtensa Processor Generator, the
4089downloaded files include a customized copy of this header file,
4090which you can use to replace the default header file.
4091
4092@html
b8db17af 4093<hr />
fd29f6ea 4094@end html
6d656178 4095@heading @anchor{xtensa-x-linux}xtensa*-*-linux*
fd29f6ea
BW
4096
4097This target is for Xtensa systems running GNU/Linux. It supports ELF
4098shared objects and the GNU C library (glibc). It also generates
4099position-independent code (PIC) regardless of whether the
4100@option{-fpic} or @option{-fPIC} options are used. In other
f282ffb3 4101respects, this target is the same as the
6d656178 4102@uref{#xtensa*-*-elf,,@samp{xtensa*-*-elf}} target.
fd29f6ea 4103
f42974dc 4104@html
b8db17af 4105<hr />
f42974dc 4106@end html
aad416fb
AL
4107@heading @anchor{windows}Microsoft Windows
4108
4109@subheading Intel 16-bit versions
4110The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
4111supported.
4112
4113However, the 32-bit port has limited support for Microsoft
4114Windows 3.11 in the Win32s environment, as a target only. See below.
4115
4116@subheading Intel 32-bit versions
4117
4118The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
4119XP, and Windows Vista, are supported by several different target
4120platforms. These targets differ in which Windows subsystem they target
4121and which C libraries are used.
4122
4123@itemize
4124@item Cygwin @uref{#x-x-cygwin,,*-*-cygwin}: Cygwin provides a user-space
4125Linux API emulation layer in the Win32 subsystem.
4126@item Interix @uref{#x-x-interix,,*-*-interix}: The Interix subsystem
4127provides native support for POSIX.
4128@item MinGW @uref{#x-x-mingw,,*-*-mingw}: MinGW is a native GCC port for
4129the Win32 subsystem that provides a subset of POSIX.
4130@item MKS i386-pc-mks: NuTCracker from MKS. See
4131@uref{http://www.mkssoftware.com/} for more information.
4132@end itemize
4133
4134@subheading Intel 64-bit versions
4135
4136GCC contains support for x86-64 using the mingw-w64
4137runtime library, available from @uref{http://mingw-w64.sourceforge.net/}.
4138This library should be used with the target triple x86_64-pc-mingw32.
4139
4140Presently Windows for Itanium is not supported.
4141
4142@subheading Windows CE
4143
4144Windows CE is supported as a target only on ARM (arm-wince-pe), Hitachi
4145SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
4146
4147@subheading Other Windows Platforms
4148
4149GCC no longer supports Windows NT on the Alpha or PowerPC.
4150
4151GCC no longer supports the Windows POSIX subsystem. However, it does
4152support the Interix subsystem. See above.
4153
4154Old target names including *-*-winnt and *-*-windowsnt are no longer used.
4155
4156PW32 (i386-pc-pw32) support was never completed, and the project seems to
4157be inactive. See @uref{http://pw32.sourceforge.net/} for more information.
4158
4159UWIN support has been removed due to a lack of maintenance.
4160
4161@html
4162<hr />
4163@end html
4164@heading @anchor{x-x-cygwin}*-*-cygwin
f42974dc 4165
5b65d351 4166Ports of GCC are included with the
f42974dc
DW
4167@uref{http://www.cygwin.com/,,Cygwin environment}.
4168
5b65d351
GP
4169GCC will build under Cygwin without modification; it does not build
4170with Microsoft's C++ compiler and there are no plans to make it do so.
ccc1ce6e 4171
aad416fb
AL
4172Cygwin can be compiled with i?86-pc-cygwin.
4173
4174@html
4175<hr />
4176@end html
4177@heading @anchor{x-x-interix}*-*-interix
4178
4179The Interix target is used by OpenNT, Interix, Services For UNIX (SFU),
4180and Subsystem for UNIX-based Applications (SUA). Applications compiled
4181with this target run in the Interix subsystem, which is separate from
4182the Win32 subsystem. This target was last known to work in GCC 3.3.
4183
4184For more information, see @uref{http://www.interix.com/}.
4185
4186@html
4187<hr />
4188@end html
4189@heading @anchor{x-x-mingw32}*-*-mingw32
4190
4191GCC will build with and support only MinGW runtime 3.12 and later.
fa692084
JJ
4192Earlier versions of headers are incompatible with the new default semantics
4193of @code{extern inline} in @code{-std=c99} and @code{-std=gnu99} modes.
4194
f42974dc 4195@html
b8db17af 4196<hr />
f42974dc 4197@end html
ef88b07d 4198@heading @anchor{os2}OS/2
f42974dc
DW
4199
4200GCC does not currently support OS/2. However, Andrew Zabolotny has been
14976c58 4201working on a generic OS/2 port with pgcc. The current code can be found
f42974dc
DW
4202at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}.
4203
f42974dc 4204@html
b8db17af 4205<hr />
f42974dc 4206@end html
ef88b07d 4207@heading @anchor{older}Older systems
f9047ed3
JM
4208
4209GCC contains support files for many older (1980s and early
42101990s) Unix variants. For the most part, support for these systems
4211has not been deliberately removed, but it has not been maintained for
c7bdf0a6 4212several years and may suffer from bitrot.
f9047ed3 4213
c7bdf0a6 4214Starting with GCC 3.1, each release has a list of ``obsoleted'' systems.
9340544b
ZW
4215Support for these systems is still present in that release, but
4216@command{configure} will fail unless the @option{--enable-obsolete}
c7bdf0a6
ZW
4217option is given. Unless a maintainer steps forward, support for these
4218systems will be removed from the next release of GCC@.
f9047ed3
JM
4219
4220Support for old systems as hosts for GCC can cause problems if the
4221workarounds for compiler, library and operating system bugs affect the
161d7b59 4222cleanliness or maintainability of the rest of GCC@. In some cases, to
f9047ed3
JM
4223bring GCC up on such a system, if still possible with current GCC, may
4224require first installing an old version of GCC which did work on that
c7bdf0a6
ZW
4225system, and using it to compile a more recent GCC, to avoid bugs in the
4226vendor compiler. Old releases of GCC 1 and GCC 2 are available in the
4227@file{old-releases} directory on the @uref{../mirrors.html,,GCC mirror
4228sites}. Header bugs may generally be avoided using
4229@command{fixincludes}, but bugs or deficiencies in libraries and the
4230operating system may still cause problems.
4231
4232Support for older systems as targets for cross-compilation is less
4233problematic than support for them as hosts for GCC; if an enthusiast
4234wishes to make such a target work again (including resurrecting any of
80521187 4235the targets that never worked with GCC 2, starting from the last
c7bdf0a6
ZW
4236version before they were removed), patches
4237@uref{../contribute.html,,following the usual requirements} would be
4238likely to be accepted, since they should not affect the support for more
4239modern targets.
f9047ed3
JM
4240
4241For some systems, old versions of GNU binutils may also be useful,
021c4bfd 4242and are available from @file{pub/binutils/old-releases} on
4eb3e795 4243@uref{http://sourceware.org/mirrors.html,,sourceware.org mirror sites}.
f9047ed3
JM
4244
4245Some of the information on specific systems above relates to
4246such older systems, but much of the information
4247about GCC on such systems (which may no longer be applicable to
f42974dc 4248current GCC) is to be found in the GCC texinfo manual.
f9047ed3 4249
f42974dc 4250@html
b8db17af 4251<hr />
f42974dc 4252@end html
d8fcd085 4253@heading @anchor{elf}all ELF targets (SVR4, Solaris 2, etc.)
f42974dc 4254
38209993
LG
4255C++ support is significantly better on ELF targets if you use the
4256@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of
4257inlines, vtables and template instantiations will be discarded
4258automatically.
f42974dc
DW
4259
4260
4261@html
b8db17af 4262<hr />
f42974dc
DW
4263<p>
4264@end html
4265@ifhtml
4266@uref{./index.html,,Return to the GCC Installation page}
4267@end ifhtml
4268@end ifset
4269
73e2155a
JM
4270@c ***Old documentation******************************************************
4271@ifset oldhtml
4272@include install-old.texi
4273@html
b8db17af 4274<hr />
73e2155a
JM
4275<p>
4276@end html
4277@ifhtml
4278@uref{./index.html,,Return to the GCC Installation page}
4279@end ifhtml
4280@end ifset
4281
aed5964b
JM
4282@c ***GFDL********************************************************************
4283@ifset gfdlhtml
4284@include fdl.texi
4285@html
b8db17af 4286<hr />
aed5964b
JM
4287<p>
4288@end html
4289@ifhtml
4290@uref{./index.html,,Return to the GCC Installation page}
4291@end ifhtml
4292@end ifset
4293
f42974dc
DW
4294@c ***************************************************************************
4295@c Part 6 The End of the Document
4296@ifinfo
4297@comment node-name, next, previous, up
aed5964b 4298@node Concept Index, , GNU Free Documentation License, Top
f42974dc
DW
4299@end ifinfo
4300
4301@ifinfo
4302@unnumbered Concept Index
4303
4304@printindex cp
4305
4306@contents
4307@end ifinfo
4308@bye