]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/doc/install.texi
Remove long deprecated tilegx and tilepro ports
[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@setchapternewpage odd
6@c %**end of header
7@c @end ifnothtml
8
7771bb62
BM
9@include gcc-common.texi
10
f42974dc
DW
11@c Specify title for specific html page
12@ifset indexhtml
13@settitle Installing GCC
14@end ifset
15@ifset specifichtml
16@settitle Host/Target specific installation notes for GCC
17@end ifset
67b1fbb9
KG
18@ifset prerequisiteshtml
19@settitle Prerequisites for GCC
20@end ifset
f42974dc
DW
21@ifset downloadhtml
22@settitle Downloading GCC
23@end ifset
24@ifset configurehtml
25@settitle Installing GCC: Configuration
26@end ifset
27@ifset buildhtml
28@settitle Installing GCC: Building
29@end ifset
30@ifset testhtml
31@settitle Installing GCC: Testing
32@end ifset
33@ifset finalinstallhtml
34@settitle Installing GCC: Final installation
35@end ifset
36@ifset binarieshtml
37@settitle Installing GCC: Binaries
38@end ifset
aed5964b
JM
39@ifset gfdlhtml
40@settitle Installing GCC: GNU Free Documentation License
41@end ifset
f42974dc 42
abc1ac2d 43@c Copyright (C) 1988-2022 Free Software Foundation, Inc.
f42974dc
DW
44@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
45
d7f755c3
PB
46@c IMPORTANT: whenever you modify this file, run `install.texi2html' to
47@c test the generation of HTML documents for the gcc.gnu.org web pages.
48@c
49@c Do not use @footnote{} in this file as it breaks install.texi2html!
50
f42974dc
DW
51@c Include everything if we're not making html
52@ifnothtml
53@set indexhtml
54@set specifichtml
67b1fbb9 55@set prerequisiteshtml
f42974dc
DW
56@set downloadhtml
57@set configurehtml
58@set buildhtml
59@set testhtml
60@set finalinstallhtml
61@set binarieshtml
aed5964b 62@set gfdlhtml
f42974dc
DW
63@end ifnothtml
64
65@c Part 2 Summary Description and Copyright
bdefb2ab 66@copying
abc1ac2d 67Copyright @copyright{} 1988-2022 Free Software Foundation, Inc.
aed5964b
JM
68@sp 1
69Permission is granted to copy, distribute and/or modify this document
07a67d6a 70under the terms of the GNU Free Documentation License, Version 1.3 or
aed5964b
JM
71any later version published by the Free Software Foundation; with no
72Invariant Sections, the Front-Cover texts being (a) (see below), and
73with the Back-Cover Texts being (b) (see below). A copy of the
74license is included in the section entitled ``@uref{./gfdl.html,,GNU
75Free Documentation License}''.
76
77(a) The FSF's Front-Cover Text is:
78
79 A GNU Manual
80
81(b) The FSF's Back-Cover Text is:
82
83 You have freedom to copy and modify this GNU Manual, like GNU
84 software. Copies published by the Free Software Foundation raise
85 funds for GNU development.
bdefb2ab 86@end copying
f42974dc 87@ifinfo
bdefb2ab 88@insertcopying
f42974dc 89@end ifinfo
c3cb54c6 90@dircategory Software development
802f6d4b
JM
91@direntry
92* gccinstall: (gccinstall). Installing the GNU Compiler Collection.
93@end direntry
f42974dc
DW
94
95@c Part 3 Titlepage and Copyright
96@titlepage
7771bb62
BM
97@title Installing GCC
98@versionsubtitle
f42974dc
DW
99
100@c The following two commands start the copyright page.
101@page
ef88b07d 102@vskip 0pt plus 1filll
bdefb2ab 103@insertcopying
f42974dc
DW
104@end titlepage
105
7771bb62 106@c Part 4 Top node, Master Menu, and/or Table of Contents
f42974dc
DW
107@ifinfo
108@node Top, , , (dir)
109@comment node-name, next, Previous, up
110
111@menu
112* Installing GCC:: This document describes the generic installation
113 procedure for GCC as well as detailing some target
f9047ed3 114 specific installation instructions.
f42974dc
DW
115
116* Specific:: Host/target specific installation notes for GCC.
117* Binaries:: Where to get pre-compiled binaries.
118
aed5964b 119* GNU Free Documentation License:: How you can copy and share this manual.
f42974dc
DW
120* Concept Index:: This index has two entries.
121@end menu
122@end ifinfo
123
7771bb62
BM
124@iftex
125@contents
126@end iftex
127
f42974dc
DW
128@c Part 5 The Body of the Document
129@c ***Installing GCC**********************************************************
6cfb3f16 130@ifnothtml
f42974dc
DW
131@comment node-name, next, previous, up
132@node Installing GCC, Binaries, , Top
6cfb3f16 133@end ifnothtml
f42974dc 134@ifset indexhtml
f42974dc
DW
135@ifnothtml
136@chapter Installing GCC
137@end ifnothtml
138
139The latest version of this document is always available at
786973ce 140@uref{https://gcc.gnu.org/install/,,https://gcc.gnu.org/install/}.
1b667f1b
JW
141It refers to the current development sources, instructions for
142specific released versions are included with the sources.
f42974dc
DW
143
144This document describes the generic installation procedure for GCC as well
f9047ed3 145as detailing some target specific installation instructions.
f42974dc 146
f9047ed3
JM
147GCC includes several components that previously were separate distributions
148with their own installation instructions. This document supersedes all
1b667f1b 149package-specific installation instructions.
f42974dc 150
f9047ed3 151@emph{Before} starting the build/install procedure please check the
f42974dc 152@ifnothtml
eea81d3e 153@ref{Specific, host/target specific installation notes}.
f42974dc 154@end ifnothtml
c009f01f 155@ifhtml
f9047ed3 156@uref{specific.html,,host/target specific installation notes}.
c009f01f 157@end ifhtml
f9047ed3 158We recommend you browse the entire generic installation instructions before
f42974dc
DW
159you proceed.
160
c009f01f 161Lists of successful builds for released versions of GCC are
786973ce 162available at @uref{https://gcc.gnu.org/buildstat.html}.
c009f01f
JJ
163These lists are updated as new information becomes available.
164
f9047ed3 165The installation procedure itself is broken into five steps.
f42974dc
DW
166
167@ifinfo
168@menu
67b1fbb9 169* Prerequisites::
f42974dc
DW
170* Downloading the source::
171* Configuration::
172* Building::
173* Testing:: (optional)
174* Final install::
175@end menu
176@end ifinfo
c009f01f 177@ifhtml
f42974dc 178@enumerate
f9047ed3 179@item
67b1fbb9
KG
180@uref{prerequisites.html,,Prerequisites}
181@item
f42974dc 182@uref{download.html,,Downloading the source}
f42974dc 183@item
f9047ed3
JM
184@uref{configure.html,,Configuration}
185@item
186@uref{build.html,,Building}
187@item
188@uref{test.html,,Testing} (optional)
f42974dc
DW
189@item
190@uref{finalinstall.html,,Final install}
191@end enumerate
c009f01f 192@end ifhtml
f42974dc 193
38209993 194Please note that GCC does not support @samp{make uninstall} and probably
f9047ed3 195won't do so in the near future as this would open a can of worms. Instead,
f42974dc 196we suggest that you install GCC into a directory of its own and simply
38209993 197remove that directory when you do not need that specific version of GCC
eea81d3e
RO
198any longer, and, if shared libraries are installed there as well, no
199more binaries exist that use them.
f42974dc
DW
200
201@html
b8db17af 202<hr />
f42974dc
DW
203<p>
204@end html
205@ifhtml
206@uref{./index.html,,Return to the GCC Installation page}
aed5964b 207
bdefb2ab 208@insertcopying
f42974dc
DW
209@end ifhtml
210@end ifset
211
67b1fbb9
KG
212@c ***Prerequisites**************************************************
213@ifnothtml
214@comment node-name, next, previous, up
215@node Prerequisites, Downloading the source, , Installing GCC
216@end ifnothtml
217@ifset prerequisiteshtml
218@ifnothtml
219@chapter Prerequisites
220@end ifnothtml
221@cindex Prerequisites
222
223GCC requires that various tools and packages be available for use in the
224build procedure. Modifying GCC sources requires additional tools
225described below.
226
227@heading Tools/packages necessary for building GCC
228@table @asis
5329b59a
JM
229@item ISO C++11 compiler
230Necessary to bootstrap GCC.
231
232Versions of GCC prior to 11 also allow bootstrapping with an ISO C++98
233compiler, versions of GCC prior to 4.8 also allow bootstrapping with a
234ISO C89 compiler, and versions of GCC prior to 3.4 also allow
235bootstrapping with a traditional (K&R) C compiler.
67b1fbb9 236
80521187 237To build all languages in a cross-compiler or other configuration where
67b1fbb9 2383-stage bootstrap is not performed, you need to start with an existing
5329b59a 239GCC binary (version 4.8 or later) because source code for language
67b1fbb9
KG
240frontends other than C might use GCC extensions.
241
afe0e941
FXC
242@item C standard library and headers
243
244In order to build GCC, the C standard library and headers must be present
245for all target variants for which target libraries will be built (and not
246only the variant of the host C++ compiler).
247
3340164d 248This affects the popular @samp{x86_64-pc-linux-gnu} platform (among
afe0e941
FXC
249other multilib targets), for which 64-bit (@samp{x86_64}) and 32-bit
250(@samp{i386}) libc headers are usually packaged separately. If you do a
3340164d 251build of a native compiler on @samp{x86_64-pc-linux-gnu}, make sure you
afe0e941
FXC
252either have the 32-bit libc developer package properly installed (the exact
253name of the package depends on your distro) or you must build GCC as a
25464-bit only compiler by configuring with the option
255@option{--disable-multilib}. Otherwise, you may encounter an error such as
256@samp{fatal error: gnu/stubs-32.h: No such file}
257
0fd3ee92 258@item @anchor{GNAT-prerequisite}GNAT
67b1fbb9 259
0fd3ee92 260In order to build GNAT, the Ada compiler, you need a working GNAT
abb748aa 261compiler (GCC version 5.1 or later).
0fd3ee92
AC
262
263This includes GNAT tools such as @command{gnatmake} and
264@command{gnatlink}, since the Ada front end is written in Ada and
265uses some GNAT-specific extensions.
266
267In order to build a cross compiler, it is strongly recommended to install
268the new compiler as native first, and then use it to build the cross
269compiler. Other native compiler versions may work but this is not guaranteed and
270will typically fail with hard to understand compilation errors during the
271build.
272
273Similarly, it is strongly recommended to use an older version of GNAT to build
274GNAT. More recent versions of GNAT than the version built are not guaranteed
275to work and will often fail during the build with compilation errors.
276
277Note that @command{configure} does not test whether the GNAT installation works
278and has a sufficiently recent version; if too old a GNAT version is
279installed and @option{--enable-languages=ada} is used, the build will fail.
280
281@env{ADA_INCLUDE_PATH} and @env{ADA_OBJECT_PATH} environment variables
282must not be set when building the Ada compiler, the Ada tools, or the
283Ada runtime libraries. You can check that your build environment is clean
284by verifying that @samp{gnatls -v} lists only one explicit path in each
285section.
67b1fbb9 286
d376b73a
IB
287@item @anchor{GDC-prerequisite}GDC
288
289In order to build GDC, the D compiler, you need a working GDC
4e4f550a
RO
290compiler (GCC version 9.1 or later) and D runtime library,
291@samp{libphobos}, as the D front end is written in D.
d376b73a
IB
292
293Versions of GDC prior to 12 can be built with an ISO C++11 compiler, which can
294then be installed and used to bootstrap newer versions of the D front end.
295
296It is strongly recommended to use an older version of GDC to build GDC. More
297recent versions of GDC than the version built are not guaranteed to work and
298will often fail during the build with compilation errors relating to
299deprecations or removed features.
300
301Note that @command{configure} does not test whether the GDC installation works
302and has a sufficiently recent version. Though the implementation of the D
303front end does not make use of any GDC-specific extensions, or novel features
304of the D language, if too old a GDC version is installed and
305@option{--enable-languages=d} is used, the build will fail.
306
4e4f550a
RO
307On some targets, @samp{libphobos} isn't enabled by default, but compiles
308and works if @option{--enable-libphobos} is used. Specifics are
309documented for affected targets.
310
67b1fbb9
KG
311@item A ``working'' POSIX compatible shell, or GNU bash
312
313Necessary when running @command{configure} because some
314@command{/bin/sh} shells have bugs and may crash when configuring the
80521187
GP
315target libraries. In other cases, @command{/bin/sh} or @command{ksh}
316have disastrous corner-case performance problems. This
67b1fbb9
KG
317can cause target @command{configure} runs to literally take days to
318complete in some cases.
319
320So on some platforms @command{/bin/ksh} is sufficient, on others it
321isn't. See the host/target specific instructions for your platform, or
322use @command{bash} to be sure. Then set @env{CONFIG_SHELL} in your
323environment to your ``good'' shell prior to running
324@command{configure}/@command{make}.
325
daf2f129 326@command{zsh} is not a fully compliant POSIX shell and will not
8a36672b 327work when configuring GCC@.
1b49d06f 328
3f737aa9
RW
329@item A POSIX or SVR4 awk
330
331Necessary for creating some of the generated source files for GCC@.
332If in doubt, use a recent GNU awk version, as some of the older ones
333are broken. GNU awk version 3.1.5 is known to work.
334
67b1fbb9
KG
335@item GNU binutils
336
337Necessary in some circumstances, optional in others. See the
338host/target specific instructions for your platform for the exact
339requirements.
340
7e4ada57
AP
341Note binutils 2.35 or newer is required for LTO to work correctly
342with GNU libtool that includes doing a bootstrap with LTO enabled.
343
67b1fbb9
KG
344@item gzip version 1.2.4 (or later) or
345@itemx bzip2 version 1.0.2 (or later)
346
347Necessary to uncompress GCC @command{tar} files when source code is
aeebd94c 348obtained via HTTPS mirror sites.
67b1fbb9 349
6cba282a 350@item GNU make version 3.80 (or later)
e158a5fb 351
8a36672b 352You must have GNU make installed to build GCC@.
e158a5fb 353
f44a5ab6 354@item GNU tar version 1.14 (or later)
67b1fbb9
KG
355
356Necessary (only on some platforms) to untar the source code. Many
357systems' @command{tar} programs will also work, only try GNU
358@command{tar} if you have problems.
359
727bd12e 360@item Perl version between 5.6.1 and 5.6.24
eb975109 361
073a8998 362Necessary when targeting Darwin, building @samp{libstdc++},
eb975109 363and not using @option{--disable-symvers}.
f4dff765
RO
364Necessary when targeting Solaris 2 with Solaris @command{ld} and not using
365@option{--disable-symvers}.
eb975109
RO
366
367Necessary when regenerating @file{Makefile} dependencies in libiberty.
368Necessary when regenerating @file{libiberty/functions.texi}.
369Necessary when generating manpages from Texinfo manuals.
f4d83eba
ER
370Used by various scripts to generate some files included in the source
371repository (mainly Unicode-related and rarely changing) from source
372tables.
eb975109 373
727bd12e
TK
374Used by @command{automake}.
375
64cadbe7
RO
376@end table
377
378Several support libraries are necessary to build GCC, some are required,
379others optional. While any sufficiently new version of required tools
380usually work, library requirements are generally stricter. Newer
381versions may work in some cases, but it's safer to use the exact
382versions documented. We appreciate bug reports about problems with
7a07ae52
JW
383newer versions, though. If your OS vendor provides packages for the
384support libraries then using those packages may be the simplest way to
385install the libraries.
64cadbe7
RO
386
387@table @asis
362c6d2f 388@item GNU Multiple Precision Library (GMP) version 4.3.2 (or later)
bda4d063 389
7a07ae52
JW
390Necessary to build GCC@. If a GMP source distribution is found in a
391subdirectory of your GCC sources named @file{gmp}, it will be built
392together with GCC. Alternatively, if GMP is already installed but it
393is not in your library search path, you will have to configure with the
c02c7cb1 394@option{--with-gmp} configure option. See also @option{--with-gmp-lib}
7a07ae52 395and @option{--with-gmp-include}.
00f35794
BE
396The in-tree build is only supported with the GMP version that
397download_prerequisites installs.
bda4d063 398
8be34204 399@item MPFR Library version 3.1.0 (or later)
bebf829d 400
0ee2ea09 401Necessary to build GCC@. It can be downloaded from
c8a4f039 402@uref{https://www.mpfr.org}. If an MPFR source distribution is found
7a07ae52
JW
403in a subdirectory of your GCC sources named @file{mpfr}, it will be
404built together with GCC. Alternatively, if MPFR is already installed
405but it is not in your default library search path, the
406@option{--with-mpfr} configure option should be used. See also
407@option{--with-mpfr-lib} and @option{--with-mpfr-include}.
00f35794
BE
408The in-tree build is only supported with the MPFR version that
409download_prerequisites installs.
641afcff 410
b11b9e29 411@item MPC Library version 1.0.1 (or later)
3a5729ea
KG
412
413Necessary to build GCC@. It can be downloaded from
6bc732eb 414@uref{https://www.multiprecision.org/mpc/}. If an MPC source distribution
7a07ae52
JW
415is found in a subdirectory of your GCC sources named @file{mpc}, it
416will be built together with GCC. Alternatively, if MPC is already
417installed but it is not in your default library search path, the
418@option{--with-mpc} configure option should be used. See also
419@option{--with-mpc-lib} and @option{--with-mpc-include}.
00f35794
BE
420The in-tree build is only supported with the MPC version that
421download_prerequisites installs.
3a5729ea 422
f877b3ad 423@item isl Library version 0.15 or later.
3aea2d1c
SP
424
425Necessary to build GCC with the Graphite loop optimizations.
aeebd94c 426It can be downloaded from @uref{https://gcc.gnu.org/pub/gcc/infrastructure/}.
e357a5e0 427If an isl source distribution is found
43372236
RB
428in a subdirectory of your GCC sources named @file{isl}, it will be
429built together with GCC. Alternatively, the @option{--with-isl} configure
e357a5e0 430option should be used if isl is not installed in your default library
43372236 431search path.
3aea2d1c 432
87741e51
ML
433@item zstd Library.
434
435Necessary to build GCC with zstd compression used for LTO bytecode.
436The library is searched in your default library patch search.
437Alternatively, the @option{--with-zstd} configure option should be used.
438
f9bab007 439@end table
67b1fbb9
KG
440
441@heading Tools/packages necessary for modifying GCC
442@table @asis
22e05272 443@item autoconf version 2.69
70fa0efa 444@itemx GNU m4 version 1.4.6 (or later)
67b1fbb9 445
89acbae0 446Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@:
565f8ce5 447to regenerate @file{configure} and @file{config.in} files.
67b1fbb9 448
22e05272 449@item automake version 1.15.1
67b1fbb9
KG
450
451Necessary when modifying a @file{Makefile.am} file to regenerate its
ce5c1cf3
KC
452associated @file{Makefile.in}.
453
454Much of GCC does not use automake, so directly edit the @file{Makefile.in}
455file. Specifically this applies to the @file{gcc}, @file{intl},
078e3ffe
PB
456@file{libcpp}, @file{libiberty}, @file{libobjc} directories as well
457as any of their subdirectories.
ce5c1cf3 458
ae8cacc6 459For directories that use automake, GCC requires the latest release in
22e05272
JM
460the 1.15 series, which is currently 1.15.1. When regenerating a directory
461to a newer version, please update all the directories using an older 1.15
ae8cacc6 462to the latest released version.
ccfca4ae 463
4b794eaf 464@item gettext version 0.14.5 (or later)
4f3ce03f
JM
465
466Needed to regenerate @file{gcc.pot}.
67b1fbb9
KG
467
468@item gperf version 2.7.2 (or later)
469
470Necessary when modifying @command{gperf} input files, e.g.@:
471@file{gcc/cp/cfns.gperf} to regenerate its associated header file, e.g.@:
472@file{gcc/cp/cfns.h}.
473
5380cf02 474@item DejaGnu version 1.5.3 (or later)
80521187
GP
475@itemx Expect
476@itemx Tcl
f7217535
TS
477@c Once Tcl 8.5 or higher is required, remove any obsolete
478@c compatibility workarounds:
479@c git grep 'compatibility with earlier Tcl releases'
67b1fbb9 480
f07f30cf 481Necessary to run the GCC testsuite; see the section on testing for
ae2037b0 482details.
67b1fbb9
KG
483
484@item autogen version 5.5.4 (or later) and
485@itemx guile version 1.4.1 (or later)
486
487Necessary to regenerate @file{fixinc/fixincl.x} from
488@file{fixinc/inclhack.def} and @file{fixinc/*.tpl}.
489
80521187 490Necessary to run @samp{make check} for @file{fixinc}.
67b1fbb9 491
ce5c1cf3 492Necessary to regenerate the top level @file{Makefile.in} file from
67b1fbb9
KG
493@file{Makefile.tpl} and @file{Makefile.def}.
494
67b1fbb9
KG
495@item Flex version 2.5.4 (or later)
496
497Necessary when modifying @file{*.l} files.
498
499Necessary to build GCC during development because the generated output
f4d83eba
ER
500files are not included in the version-controlled source repository.
501They are included in releases.
67b1fbb9 502
7326a39e 503@item Texinfo version 4.7 (or later)
67b1fbb9
KG
504
505Necessary for running @command{makeinfo} when modifying @file{*.texi}
506files to test your changes.
507
cc5c2741
BM
508Necessary for running @command{make dvi} or @command{make pdf} to
509create printable documentation in DVI or PDF format. Texinfo version
5104.8 or later is required for @command{make pdf}.
511
67b1fbb9 512Necessary to build GCC documentation during development because the
f4d83eba 513generated output files are not included in the repository. They are
67b1fbb9
KG
514included in releases.
515
516@item @TeX{} (any working version)
517
ff2ce160 518Necessary for running @command{texi2dvi} and @command{texi2pdf}, which
cc5c2741
BM
519are used when running @command{make dvi} or @command{make pdf} to create
520DVI or PDF files, respectively.
67b1fbb9 521
35485da9
DM
522@item Sphinx version 1.0 (or later)
523
524Necessary to regenerate @file{jit/docs/_build/texinfo} from the @file{.rst}
525files in the directories below @file{jit/docs}.
526
f4d83eba 527@item git (any version)
80521187 528@itemx SSH (any version)
67b1fbb9 529
f4d83eba 530Necessary to access the source repository. Public releases and weekly
aeebd94c 531snapshots of the development sources are also available via HTTPS@.
67b1fbb9 532
67b1fbb9
KG
533@item GNU diffutils version 2.7 (or later)
534
80521187 535Useful when submitting patches for the GCC source code.
67b1fbb9
KG
536
537@item patch version 2.5.4 (or later)
538
539Necessary when applying patches, created with @command{diff}, to one's
540own sources.
541
542@end table
543
544@html
545<hr />
546<p>
547@end html
548@ifhtml
549@uref{./index.html,,Return to the GCC Installation page}
550@end ifhtml
551@end ifset
552
f42974dc 553@c ***Downloading the source**************************************************
6cfb3f16 554@ifnothtml
f42974dc 555@comment node-name, next, previous, up
67b1fbb9 556@node Downloading the source, Configuration, Prerequisites, Installing GCC
6cfb3f16 557@end ifnothtml
f42974dc 558@ifset downloadhtml
f42974dc
DW
559@ifnothtml
560@chapter Downloading GCC
561@end ifnothtml
562@cindex Downloading GCC
563@cindex Downloading the Source
564
786973ce 565GCC is distributed via @uref{https://gcc.gnu.org/git.html,,git} and via
aeebd94c 566HTTPS as tarballs compressed with @command{gzip} or @command{bzip2}.
f42974dc 567
786973ce 568Please refer to the @uref{https://gcc.gnu.org/releases.html,,releases web page}
161d7b59 569for information on how to obtain GCC@.
f42974dc 570
97a2feb6 571The source distribution includes the C, C++, Objective-C, Fortran,
47876a2a 572and Ada (in the case of GCC 3.1 and later) compilers, as well as
97a2feb6 573runtime libraries for C++, Objective-C, and Fortran.
47876a2a
JW
574For previous versions these were downloadable as separate components such
575as the core GCC distribution, which included the C language front end and
576shared components, and language-specific distributions including the
577language front end and the language runtime (where appropriate).
f42974dc
DW
578
579If you also intend to build binutils (either to upgrade an existing
580installation or for use in place of the corresponding tools of your
581OS), unpack the binutils distribution either in the same directory or
582a separate one. In the latter case, add symbolic links to any
583components of the binutils you intend to build alongside the compiler
6cfb3f16
JM
584(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld},
585@file{opcodes}, @dots{}) to the directory containing the GCC sources.
f42974dc 586
f9bab007 587Likewise the GMP, MPFR and MPC libraries can be automatically built
e3f68e2c 588together with GCC. You may simply run the
7b5dccb5 589@command{contrib/download_prerequisites} script in the GCC source directory
cce7bb9d 590to set up everything.
e3f68e2c 591Otherwise unpack the GMP, MPFR and/or MPC source
f9bab007
KG
592distributions in the directory containing the GCC sources and rename
593their directories to @file{gmp}, @file{mpfr} and @file{mpc},
594respectively (or use symbolic links with the same name).
641afcff 595
f42974dc 596@html
b8db17af 597<hr />
f42974dc
DW
598<p>
599@end html
600@ifhtml
601@uref{./index.html,,Return to the GCC Installation page}
602@end ifhtml
603@end ifset
604
605@c ***Configuration***********************************************************
6cfb3f16 606@ifnothtml
f42974dc
DW
607@comment node-name, next, previous, up
608@node Configuration, Building, Downloading the source, Installing GCC
6cfb3f16 609@end ifnothtml
f42974dc 610@ifset configurehtml
f42974dc
DW
611@ifnothtml
612@chapter Installing GCC: Configuration
613@end ifnothtml
614@cindex Configuration
615@cindex Installing GCC: Configuration
616
617Like most GNU software, GCC must be configured before it can be built.
618This document describes the recommended configuration procedure
619for both native and cross targets.
620
38209993
LG
621We use @var{srcdir} to refer to the toplevel source directory for
622GCC; we use @var{objdir} to refer to the toplevel build/object directory.
623
f4d83eba
ER
624If you obtained the sources by cloning the repository, @var{srcdir}
625must refer to the top @file{gcc} directory, the one where the
626@file{MAINTAINERS} file can be found, and not its @file{gcc}
627subdirectory, otherwise the build will fail.
f42974dc 628
b4b0fb02
RO
629If either @var{srcdir} or @var{objdir} is located on an automounted NFS
630file system, the shell's built-in @command{pwd} command will return
631temporary pathnames. Using these can lead to various sorts of build
632problems. To avoid this issue, set the @env{PWDCMD} environment
633variable to an automounter-aware @command{pwd} command, e.g.,
7ba4ca63 634@command{pawd} or @samp{amq -w}, during the configuration and build
b4b0fb02
RO
635phases.
636
102b60d1 637First, we @strong{highly} recommend that GCC be built into a
0b70519f 638separate directory from the sources which does @strong{not} reside
102b60d1
GP
639within the source tree. This is how we generally build GCC; building
640where @var{srcdir} == @var{objdir} should still work, but doesn't
641get extensive testing; building where @var{objdir} is a subdirectory
642of @var{srcdir} is unsupported.
f42974dc 643
eea81d3e 644If you have previously built GCC in the same directory for a
f85b8d1a 645different target machine, do @samp{make distclean} to delete all files
377dfc82
GP
646that might be invalid. One of the files this deletes is @file{Makefile};
647if @samp{make distclean} complains that @file{Makefile} does not exist
648or issues a message like ``don't know how to make distclean'' it probably
649means that the directory is already suitably clean. However, with the
650recommended method of building in a separate @var{objdir}, you should
651simply use a different @var{objdir} for each target.
f85b8d1a 652
38209993
LG
653Second, when configuring a native system, either @command{cc} or
654@command{gcc} must be in your path or you must set @env{CC} in
df002c7d
DE
655your environment before running configure. Otherwise the configuration
656scripts may fail.
f42974dc 657
cc11cc9b 658@ignore
eea81d3e
RO
659Note that the bootstrap compiler and the resulting GCC must be link
660compatible, else the bootstrap will fail with linker errors about
661incompatible object file formats. Several multilibed targets are
e69aa433
GP
662affected by this requirement, see
663@ifnothtml
664@ref{Specific, host/target specific installation notes}.
665@end ifnothtml
c009f01f 666@ifhtml
e69aa433 667@uref{specific.html,,host/target specific installation notes}.
c009f01f 668@end ifhtml
cc11cc9b 669@end ignore
eea81d3e 670
f42974dc
DW
671To configure GCC:
672
3ab51846 673@smallexample
98797784
RW
674% mkdir @var{objdir}
675% cd @var{objdir}
676% @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 677@end smallexample
f42974dc 678
2f41c1d6
PB
679@heading Distributor options
680
681If you will be distributing binary versions of GCC, with modifications
682to the source code, you should use the options described in this
683section to make clear that your version contains modifications.
684
685@table @code
686@item --with-pkgversion=@var{version}
687Specify a string that identifies your package. You may wish
688to include a build number or build date. This version string will be
689included in the output of @command{gcc --version}. This suffix does
690not replace the default version string, only the @samp{GCC} part.
691
692The default value is @samp{GCC}.
693
694@item --with-bugurl=@var{url}
695Specify the URL that users should visit if they wish to report a bug.
696You are of course welcome to forward bugs reported to you to the FSF,
697if you determine that they are not bugs in your modifications.
698
699The default value refers to the FSF's GCC bug tracker.
700
e33a1eae
JJ
701@item --with-documentation-root-url=@var{url}
702Specify the URL root that contains GCC option documentation. The @var{url}
703should end with a @code{/} character.
704
705The default value is @uref{https://gcc.gnu.org/onlinedocs/,,https://gcc.gnu.org/onlinedocs/}.
706
707@item --with-changes-root-url=@var{url}
708Specify the URL root that contains information about changes in GCC
709releases like @code{gcc-@var{version}/changes.html}.
710The @var{url} should end with a @code{/} character.
711
712The default value is @uref{https://gcc.gnu.org/,,https://gcc.gnu.org/}.
713
2f41c1d6 714@end table
f42974dc 715
0eac9c60 716@heading Host, Build and Target specification
f42974dc 717
0eac9c60
ML
718Specify the host, build and target machine configurations. You do this
719when you run the @file{configure} script.
f42974dc 720
0eac9c60
ML
721The @dfn{build} machine is the system which you are using, the
722@dfn{host} machine is the system where you want to run the resulting
723compiler (normally the build machine), and the @dfn{target} machine is
724the system for which you want the compiler to generate code.
725
726If you are building a compiler to produce code for the machine it runs
727on (a native compiler), you normally do not need to specify any operands
728to @file{configure}; it will try to guess the type of machine you are on
729and use that as the build, host and target machines. So you don't need
730to specify a configuration when building a native compiler unless
731@file{configure} cannot figure out what your configuration is or guesses
732wrong.
733
734In those cases, specify the build machine's @dfn{configuration name}
735with the @option{--host} option; the host and target will default to be
736the same as the host machine.
737
738Here is an example:
739
740@smallexample
741./configure --host=x86_64-pc-linux-gnu
742@end smallexample
f42974dc 743
0eac9c60
ML
744A configuration name may be canonical or it may be more or less
745abbreviated (@file{config.sub} script produces canonical versions).
746
747A canonical configuration name has three parts, separated by dashes.
748It looks like this: @samp{@var{cpu}-@var{company}-@var{system}}.
749
750Here are the possible CPU types:
751
752@quotation
753aarch64, aarch64_be, alpha, alpha64, amdgcn, arc, arceb, arm, armeb, avr, bfin,
754bpf, cr16, cris, csky, epiphany, fido, fr30, frv, ft32, h8300, hppa, hppa2.0,
8766689a 755hppa64, i486, i686, ia64, iq2000, lm32, loongarch64, m32c, m32r, m32rle, m68k,
756mcore, microblaze, microblazeel, mips, mips64, mips64el, mips64octeon,
757mips64orion, mips64vr, mipsel, mipsisa32, mipsisa32r2, mipsisa64, mipsisa64r2,
0eac9c60
ML
758mipsisa64r2el, mipsisa64sb1, mipsisa64sr71k, mipstx39, mmix, mn10300, moxie,
759msp430, nds32be, nds32le, nios2, nvptx, or1k, pdp11, powerpc, powerpc64,
760powerpc64le, powerpcle, pru, riscv32, riscv32be, riscv64, riscv64be, rl78, rx,
fc259b52 761s390, s390x, sh, shle, sparc, sparc64, tic6x, v850,
0eac9c60
ML
762v850e, v850e1, vax, visium, x86_64, xstormy16, xtensa
763@end quotation
764
765Here is a list of system types:
766
767@quotation
768aix@var{version}, amdhsa, aout, cygwin, darwin@var{version},
769eabi, eabialtivec, eabisim, eabisimaltivec, elf, elf32,
770elfbare, elfoabi, freebsd@var{version}, gnu, hpux, hpux@var{version},
771kfreebsd-gnu, kopensolaris-gnu, linux-androideabi, linux-gnu,
772linux-gnu_altivec, linux-musl, linux-uclibc, lynxos, mingw32, mingw32crt,
773mmixware, msdosdjgpp, netbsd, netbsdelf@var{version}, nto-qnx, openbsd,
774rtems, solaris@var{version}, symbianelf, tpf, uclinux, uclinux_eabi, vms,
775vxworks, vxworksae, vxworksmils
776@end quotation
f42974dc 777
ef88b07d 778@heading Options specification
f42974dc 779
ef88b07d 780Use @var{options} to override several configure time options for
7ba4ca63 781GCC@. A list of supported @var{options} follows; @samp{configure
80f9249a
JM
782--help} may list other options, but those not listed below may not
783work and should not normally be used.
f42974dc 784
c1c3bb0c
ME
785Note that each @option{--enable} option has a corresponding
786@option{--disable} option and that each @option{--with} option has a
787corresponding @option{--without} option.
788
ef88b07d
JM
789@table @code
790@item --prefix=@var{dirname}
791Specify the toplevel installation
f42974dc
DW
792directory. This is the recommended way to install the tools into a directory
793other than the default. The toplevel installation directory defaults to
6cfb3f16 794@file{/usr/local}.
f42974dc 795
38209993 796We @strong{highly} recommend against @var{dirname} being the same or a
a7582c8c
BE
797subdirectory of @var{objdir} or vice versa. If specifying a directory
798beneath a user's home directory tree, some shells will not expand
799@var{dirname} correctly if it contains the @samp{~} metacharacter; use
800@env{$HOME} instead.
f42974dc 801
8e5f33ff
GK
802The following standard @command{autoconf} options are supported. Normally you
803should not need to use these options.
ef88b07d 804@table @code
ab130aa5
JM
805@item --exec-prefix=@var{dirname}
806Specify the toplevel installation directory for architecture-dependent
807files. The default is @file{@var{prefix}}.
808
809@item --bindir=@var{dirname}
810Specify the installation directory for the executables called by users
811(such as @command{gcc} and @command{g++}). The default is
812@file{@var{exec-prefix}/bin}.
813
814@item --libdir=@var{dirname}
815Specify the installation directory for object code libraries and
8e5f33ff
GK
816internal data files of GCC@. The default is @file{@var{exec-prefix}/lib}.
817
818@item --libexecdir=@var{dirname}
819Specify the installation directory for internal executables of GCC@.
6ccde948 820The default is @file{@var{exec-prefix}/libexec}.
ab130aa5
JM
821
822@item --with-slibdir=@var{dirname}
823Specify the installation directory for the shared libgcc library. The
824default is @file{@var{libdir}}.
825
70fa0efa
RW
826@item --datarootdir=@var{dirname}
827Specify the root of the directory tree for read-only architecture-independent
828data files referenced by GCC@. The default is @file{@var{prefix}/share}.
829
ab130aa5
JM
830@item --infodir=@var{dirname}
831Specify the installation directory for documentation in info format.
70fa0efa 832The default is @file{@var{datarootdir}/info}.
ab130aa5 833
8567c70f
TT
834@item --datadir=@var{dirname}
835Specify the installation directory for some architecture-independent
70fa0efa
RW
836data files referenced by GCC@. The default is @file{@var{datarootdir}}.
837
838@item --docdir=@var{dirname}
839Specify the installation directory for documentation files (other
840than Info) for GCC@. The default is @file{@var{datarootdir}/doc}.
841
842@item --htmldir=@var{dirname}
843Specify the installation directory for HTML documentation files.
844The default is @file{@var{docdir}}.
845
846@item --pdfdir=@var{dirname}
847Specify the installation directory for PDF documentation files.
848The default is @file{@var{docdir}}.
8567c70f 849
ab130aa5
JM
850@item --mandir=@var{dirname}
851Specify the installation directory for manual pages. The default is
70fa0efa
RW
852@file{@var{datarootdir}/man}. (Note that the manual pages are only extracts
853from the full GCC manuals, which are provided in Texinfo format. The manpages
ab130aa5
JM
854are derived by an automatic conversion process from parts of the full
855manual.)
856
ef88b07d
JM
857@item --with-gxx-include-dir=@var{dirname}
858Specify
ae5cc016
MM
859the installation directory for G++ header files. The default depends
860on other configuration options, and differs between cross and native
861configurations.
ecb7d6b3 862
1cec1285
NS
863@item --with-specs=@var{specs}
864Specify additional command line driver SPECS.
865This can be useful if you need to turn on a non-standard feature by
866default without modifying the compiler's source code, for instance
867@option{--with-specs=%@{!fcommon:%@{!fno-common:-fno-common@}@}}.
868@ifnothtml
869@xref{Spec Files,, Specifying subprocesses and the switches to pass to them,
870gcc, Using the GNU Compiler Collection (GCC)},
871@end ifnothtml
872@ifhtml
873See ``Spec Files'' in the main manual
874@end ifhtml
875
ef88b07d 876@end table
f42974dc 877
b21d216c
AF
878@item --program-prefix=@var{prefix}
879GCC supports some transformations of the names of its programs when
8a36672b
JM
880installing them. This option prepends @var{prefix} to the names of
881programs to install in @var{bindir} (see above). For example, specifying
b21d216c
AF
882@option{--program-prefix=foo-} would result in @samp{gcc}
883being installed as @file{/usr/local/bin/foo-gcc}.
884
885@item --program-suffix=@var{suffix}
886Appends @var{suffix} to the names of programs to install in @var{bindir}
8a36672b 887(see above). For example, specifying @option{--program-suffix=-3.1}
b21d216c
AF
888would result in @samp{gcc} being installed as
889@file{/usr/local/bin/gcc-3.1}.
890
891@item --program-transform-name=@var{pattern}
892Applies the @samp{sed} script @var{pattern} to be applied to the names
8a36672b 893of programs to install in @var{bindir} (see above). @var{pattern} has to
b21d216c 894consist of one or more basic @samp{sed} editing commands, separated by
8a36672b 895semicolons. For example, if you want the @samp{gcc} program name to be
b21d216c
AF
896transformed to the installed program @file{/usr/local/bin/myowngcc} and
897the @samp{g++} program name to be transformed to
898@file{/usr/local/bin/gspecial++} without changing other program names,
899you could use the pattern
900@option{--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'}
901to achieve this effect.
902
903All three options can be combined and used together, resulting in more
8a36672b 904complex conversion patterns. As a basic rule, @var{prefix} (and
b21d216c
AF
905@var{suffix}) are prepended (appended) before further transformations
906can happen with a special transformation script @var{pattern}.
907
8c085f6f 908As currently implemented, this option only takes effect for native
b21d216c 909builds; cross compiler binaries' names are not transformed even when a
8c085f6f 910transformation is explicitly asked for by one of these options.
b21d216c
AF
911
912For native builds, some of the installed programs are also installed
913with the target alias in front of their name, as in
8a36672b 914@samp{i686-pc-linux-gnu-gcc}. All of the above transformations happen
78466c0e 915before the target alias is prepended to the name---so, specifying
b21d216c
AF
916@option{--program-prefix=foo-} and @option{program-suffix=-3.1}, the
917resulting binary would be installed as
918@file{/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1}.
919
8ecab453 920As a last shortcoming, none of the installed Ada programs are
b21d216c
AF
921transformed yet, which will be fixed in some time.
922
ef88b07d
JM
923@item --with-local-prefix=@var{dirname}
924Specify the
6ac48571
JM
925installation directory for local include files. The default is
926@file{/usr/local}. Specify this option if you want the compiler to
927search directory @file{@var{dirname}/include} for locally installed
928header files @emph{instead} of @file{/usr/local/include}.
929
930You should specify @option{--with-local-prefix} @strong{only} if your
931site has a different convention (not @file{/usr/local}) for where to put
932site-specific files.
933
934The default value for @option{--with-local-prefix} is @file{/usr/local}
935regardless of the value of @option{--prefix}. Specifying
936@option{--prefix} has no effect on which directory GCC searches for
937local header files. This may seem counterintuitive, but actually it is
938logical.
939
940The purpose of @option{--prefix} is to specify where to @emph{install
941GCC}. The local header files in @file{/usr/local/include}---if you put
161d7b59 942any in that directory---are not part of GCC@. They are part of other
6ac48571
JM
943programs---perhaps many others. (GCC installs its own header files in
944another directory which is based on the @option{--prefix} value.)
945
48209ce5 946Both the local-prefix include directory and the GCC-prefix include
78466c0e 947directory are part of GCC's ``system include'' directories. Although these
48209ce5
JDA
948two directories are not fixed, they need to be searched in the proper
949order for the correct processing of the include_next directive. The
950local-prefix include directory is searched before the GCC-prefix
951include directory. Another characteristic of system include directories
952is that pedantic warnings are turned off for headers in these directories.
953
954Some autoconf macros add @option{-I @var{directory}} options to the
955compiler command line, to ensure that directories containing installed
956packages' headers are searched. When @var{directory} is one of GCC's
957system include directories, GCC will ignore the option so that system
958directories continue to be processed in the correct order. This
959may result in a search order different from what was specified but the
960directory will still be searched.
961
962GCC automatically searches for ordinary libraries using
963@env{GCC_EXEC_PREFIX}. Thus, when the same installation prefix is
964used for both GCC and packages, GCC will automatically search for
965both headers and libraries. This provides a configuration that is
966easy to use. GCC behaves in a manner similar to that when it is
967installed as a system compiler in @file{/usr}.
968
969Sites that need to install multiple versions of GCC may not want to
970use the above simple configuration. It is possible to use the
971@option{--program-prefix}, @option{--program-suffix} and
972@option{--program-transform-name} options to install multiple versions
973into a single directory, but it may be simpler to use different prefixes
974and the @option{--with-local-prefix} option to specify the location of the
975site-specific files for each version. It will then be necessary for
976users to specify explicitly the location of local site libraries
977(e.g., with @env{LIBRARY_PATH}).
978
979The same value can be used for both @option{--with-local-prefix} and
980@option{--prefix} provided it is not @file{/usr}. This can be used
981to avoid the default search of @file{/usr/local/include}.
982
6ac48571
JM
983@strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}!
984The directory you use for @option{--with-local-prefix} @strong{must not}
985contain any of the system's standard header files. If it did contain
986them, certain programs would be miscompiled (including GNU Emacs, on
987certain targets), because this would override and nullify the header
4c64396e 988file corrections made by the @command{fixincludes} script.
6ac48571
JM
989
990Indications are that people who use this option use it based on mistaken
991ideas of what it is for. People use it as if it specified where to
161d7b59 992install part of GCC@. Perhaps they make this assumption because
6ac48571
JM
993installing GCC creates the directory.
994
3c36aa6b
JJ
995@item --with-gcc-major-version-only
996Specifies that GCC should use only the major number rather than
997@var{major}.@var{minor}.@var{patchlevel} in filesystem paths.
998
08b2bad2
SB
999@item --with-native-system-header-dir=@var{dirname}
1000Specifies that @var{dirname} is the directory that contains native system
1001header files, rather than @file{/usr/include}. This option is most useful
1002if you are creating a compiler that should be isolated from the system
1003as much as possible. It is most commonly used with the
1004@option{--with-sysroot} option and will cause GCC to search
1005@var{dirname} inside the system root specified by that option.
1006
6cfb3f16 1007@item --enable-shared[=@var{package}[,@dots{}]]
0cb98517
AO
1008Build shared versions of libraries, if shared libraries are supported on
1009the target platform. Unlike GCC 2.95.x and earlier, shared libraries
07659e97 1010are enabled by default on all platforms that support shared libraries.
0cb98517
AO
1011
1012If a list of packages is given as an argument, build shared libraries
1013only for the listed packages. For other packages, only static libraries
1014will be built. Package names currently recognized in the GCC tree are
1015@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
e22df315 1016@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc},
b4c522fa 1017@samp{ada}, @samp{libada}, @samp{libgo}, @samp{libobjc}, and @samp{libphobos}.
55c45226 1018Note @samp{libiberty} does not support shared libraries at all.
0cb98517
AO
1019
1020Use @option{--disable-shared} to build only static libraries. Note that
1021@option{--disable-shared} does not accept a list of package names as
1022argument, only @option{--enable-shared} does.
f42974dc 1023
459260ec
DM
1024Contrast with @option{--enable-host-shared}, which affects @emph{host}
1025code.
1026
1027@item --enable-host-shared
1028Specify that the @emph{host} code should be built into position-independent
1029machine code (with -fPIC), allowing it to be used within shared libraries,
1030but yielding a slightly slower compiler.
1031
35485da9 1032This option is required when building the libgccjit.so library.
459260ec
DM
1033
1034Contrast with @option{--enable-shared}, which affects @emph{target}
1035libraries.
1036
ef88b07d
JM
1037@item @anchor{with-gnu-as}--with-gnu-as
1038Specify that the compiler should assume that the
767094dd 1039assembler it finds is the GNU assembler. However, this does not modify
377dfc82
GP
1040the rules to find an assembler and will result in confusion if the
1041assembler found is not actually the GNU assembler. (Confusion may also
8c26c999
JM
1042result if the compiler finds the GNU assembler but has not been
1043configured with @option{--with-gnu-as}.) If you have more than one
38209993 1044assembler installed on your system, you may want to use this option in
cc11cc9b
PB
1045connection with @option{--with-as=@var{pathname}} or
1046@option{--with-build-time-tools=@var{pathname}}.
38209993 1047
8c085f6f
JJ
1048The following systems are the only ones where it makes a difference
1049whether you use the GNU assembler. On any other system,
1050@option{--with-gnu-as} has no effect.
1051
2ff16718 1052@itemize @bullet
8c085f6f
JJ
1053@item @samp{hppa1.0-@var{any}-@var{any}}
1054@item @samp{hppa1.1-@var{any}-@var{any}}
8f2afc21
EB
1055@item @samp{sparc-sun-solaris2.@var{any}}
1056@item @samp{sparc64-@var{any}-solaris2.@var{any}}
8c085f6f 1057@end itemize
8c26c999 1058
8f2afc21 1059@item @anchor{with-as}--with-as=@var{pathname}
cc11cc9b
PB
1060Specify that the compiler should use the assembler pointed to by
1061@var{pathname}, rather than the one found by the standard rules to find
1062an assembler, which are:
f42974dc
DW
1063@itemize @bullet
1064@item
cc11cc9b
PB
1065Unless GCC is being built with a cross compiler, check the
1066@file{@var{libexec}/gcc/@var{target}/@var{version}} directory.
1067@var{libexec} defaults to @file{@var{exec-prefix}/libexec};
1068@var{exec-prefix} defaults to @var{prefix}, which
1069defaults to @file{/usr/local} unless overridden by the
1070@option{--prefix=@var{pathname}} switch described above. @var{target}
1071is the target system triple, such as @samp{sparc-sun-solaris2.7}, and
1072@var{version} denotes the GCC version, such as 3.0.
1073
f42974dc 1074@item
cc11cc9b
PB
1075If the target system is the same that you are building on, check
1076operating system specific directories (e.g.@: @file{/usr/ccs/bin} on
f4dff765 1077Solaris 2).
cc11cc9b
PB
1078
1079@item
1080Check in the @env{PATH} for a tool whose name is prefixed by the
1081target system triple.
1082
1083@item
1084Check in the @env{PATH} for a tool whose name is not prefixed by the
1085target system triple, if the host and target system triple are
1086the same (in other words, we use a host tool if it can be used for
1087the target as well).
f42974dc 1088@end itemize
cc11cc9b
PB
1089
1090You may want to use @option{--with-as} if no assembler
1091is installed in the directories listed above, or if you have multiple
1092assemblers installed and want to choose one that is not found by the
1093above rules.
f42974dc 1094
ef88b07d
JM
1095@item @anchor{with-gnu-ld}--with-gnu-ld
1096Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
8f2afc21 1097but for the linker.
f42974dc 1098
eea81d3e 1099@item --with-ld=@var{pathname}
8f2afc21
EB
1100Same as @uref{#with-as,,@option{--with-as}}
1101but for the linker.
f42974dc 1102
b019b28e
IS
1103@item --with-dsymutil=@var{pathname}
1104Same as @uref{#with-as,,@option{--with-as}}
1105but for the debug linker (only used on Darwin platforms so far).
1106
ccdc2164
NS
1107@item --with-tls=@var{dialect}
1108Specify the default TLS dialect, for systems were there is a choice.
1109For ARM targets, possible values for @var{dialect} are @code{gnu} or
1110@code{gnu2}, which select between the original GNU dialect and the GNU TLS
1111descriptor-based dialect.
1112
e0cdc09f
MK
1113@item --enable-multiarch
1114Specify whether to enable or disable multiarch support. The default is
1115to check for glibc start files in a multiarch location, and enable it
1116if the files are found. The auto detection is enabled for native builds,
1117and for cross builds configured with @option{--with-sysroot}, and without
1118@option{--with-native-system-header-dir}.
1119More documentation about multiarch can be found at
3b973a7f 1120@uref{https://wiki.debian.org/Multiarch}.
e0cdc09f 1121
4dbe373c
EB
1122@item --enable-sjlj-exceptions
1123Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
1124@samp{configure} ordinarily picks the correct value based on the platform.
1125Only use this option if you are sure you need a different setting.
1126
87f3fea8
CT
1127@item --enable-vtable-verify
1128Specify whether to enable or disable the vtable verification feature.
1129Enabling this feature causes libstdc++ to be built with its virtual calls
1130in verifiable mode. This means that, when linked with libvtv, every
1131virtual call in libstdc++ will verify the vtable pointer through which the
1132call will be made before actually making the call. If not linked with libvtv,
1133the verifier will call stub functions (in libstdc++ itself) and do nothing.
1134If vtable verification is disabled, then libstdc++ is not built with its
1135virtual calls in verifiable mode at all. However the libvtv library will
1136still be built (see @option{--disable-libvtv} to turn off building libvtv).
1137@option{--disable-vtable-verify} is the default.
1138
1765b023
RV
1139@item --disable-gcov
1140Specify that the run-time library used for coverage analysis
1141and associated host tools should not be built.
1142
f4d9c89a
MK
1143@item --disable-multilib
1144Specify that multiple target
1145libraries to support different target variants, calling
1146conventions, etc.@: should not be built. The default is to build a
1147predefined set of them.
1148
e8515283
DE
1149Some targets provide finer-grained control over which multilibs are built
1150(e.g., @option{--disable-softfloat}):
1151@table @code
e8515283
DE
1152@item arm-*-*
1153fpu, 26bit, underscore, interwork, biendian, nofmult.
1154
1155@item m68*-*-*
1156softfloat, m68881, m68000, m68020.
1157
1158@item mips*-*-*
1159single-float, biendian, softfloat.
1160
a9046e98
JL
1161@item msp430-*-*
1162no-exceptions
1163
e8515283
DE
1164@item powerpc*-*-*, rs6000*-*-*
1165aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
f282ffb3 1166sysv, aix.
e8515283
DE
1167
1168@end table
1169
aca600aa
AS
1170@item --with-multilib-list=@var{list}
1171@itemx --without-multilib-list
3e0201f0
TP
1172Specify what multilibs to build. @var{list} is a comma separated list of
1173values, possibly consisting of a single value. Currently only implemented
8766689a 1174for aarch64*-*-*, arm*-*-*, loongarch64-*-*, riscv*-*-*, sh*-*-* and
1175x86-64-*-linux*. The accepted values and meaning for each target is given
1176below.
aca600aa 1177
f0ea7581 1178@table @code
8b0cb6e1
CL
1179@item aarch64*-*-*
1180@var{list} is a comma separated list of @code{ilp32}, and @code{lp64}
1181to enable ILP32 and LP64 run-time libraries, respectively. If
1182@var{list} is empty, then there will be no multilibs and only the
1183default run-time library will be built. If @var{list} is
1184@code{default} or --with-multilib-list= is not specified, then the
1185default set of libraries is selected based on the value of
1186@option{--target}.
1187
a10f2c25 1188@item arm*-*-*
5d6551f5
AO
1189@var{list} is a comma separated list of @code{aprofile} and
1190@code{rmprofile} to build multilibs for A or R and M architecture
1191profiles respectively. Note that, due to some limitation of the current
1192multilib framework, using the combined @code{aprofile,rmprofile}
1193multilibs selects in some cases a less optimal multilib than when using
1194the multilib profile for the architecture targetted. The special value
1195@code{default} is also accepted and is equivalent to omitting the
1196option, i.e., only the default run-time library will be enabled.
1197
1198@var{list} may instead contain @code{@@name}, to use the multilib
1199configuration Makefile fragment @file{name} in @file{gcc/config/arm} in
1200the source tree (it is part of the corresponding sources, after all).
1201It is recommended, but not required, that files used for this purpose to
1202be named starting with @file{t-ml-}, to make their intended purpose
1203self-evident, in line with GCC conventions. Such files enable custom,
1204user-chosen multilib lists to be configured. Whether multiple such
1205files can be used together depends on the contents of the supplied
1206files. See @file{gcc/config/arm/t-multilib} and its supplementary
1207@file{gcc/config/arm/t-*profile} files for an example of what such
1208Makefile fragments might look like for this version of GCC. The macros
1209expected to be defined in these fragments are not stable across GCC
1210releases, so make sure they define the @code{MULTILIB}-related macros
1211expected by the version of GCC you are building.
1212@ifnothtml
1213@xref{Target Fragment,, Target Makefile Fragments, gccint, GNU Compiler
1214Collection (GCC) Internals}.
1215@end ifnothtml
1216@ifhtml
1217See ``Target Makefile Fragments'' in the internals manual.
1218@end ifhtml
3e0201f0
TP
1219
1220The table below gives the combination of ISAs, architectures, FPUs and
5d6551f5
AO
1221floating-point ABIs for which multilibs are built for each predefined
1222profile. The union of these options is considered when specifying both
1223@code{aprofile} and @code{rmprofile}.
3e0201f0
TP
1224
1225@multitable @columnfractions .15 .28 .30
1226@item Option @tab aprofile @tab rmprofile
1227@item ISAs
1228@tab @code{-marm} and @code{-mthumb}
1229@tab @code{-mthumb}
1230@item Architectures@*@*@*@*@*@*
1231@tab default architecture@*
1232@code{-march=armv7-a}@*
1233@code{-march=armv7ve}@*
1234@code{-march=armv8-a}@*@*@*
1235@tab default architecture@*
1236@code{-march=armv6s-m}@*
1237@code{-march=armv7-m}@*
1238@code{-march=armv7e-m}@*
1239@code{-march=armv8-m.base}@*
1240@code{-march=armv8-m.main}@*
1241@code{-march=armv7}
1242@item FPUs@*@*@*@*@*
1243@tab none@*
1244@code{-mfpu=vfpv3-d16}@*
1245@code{-mfpu=neon}@*
1246@code{-mfpu=vfpv4-d16}@*
1247@code{-mfpu=neon-vfpv4}@*
1248@code{-mfpu=neon-fp-armv8}
1249@tab none@*
1250@code{-mfpu=vfpv3-d16}@*
1251@code{-mfpu=fpv4-sp-d16}@*
1252@code{-mfpu=fpv5-sp-d16}@*
1253@code{-mfpu=fpv5-d16}@*
1254@item floating-point@/ ABIs@*@*
1255@tab @code{-mfloat-abi=soft}@*
1256@code{-mfloat-abi=softfp}@*
1257@code{-mfloat-abi=hard}
1258@tab @code{-mfloat-abi=soft}@*
1259@code{-mfloat-abi=softfp}@*
1260@code{-mfloat-abi=hard}
1261@end multitable
a10f2c25 1262
8766689a 1263@item loongarch*-*-*
1264@var{list} is a comma-separated list of the following ABI identifiers:
1265@code{lp64d[/base]} @code{lp64f[/base]} @code{lp64d[/base]}, where the
1266@code{/base} suffix may be omitted, to enable their respective run-time
1267libraries. If @var{list} is empty or @code{default},
1268or if @option{--with-multilib-list} is not specified, then the default ABI
1269as specified by @option{--with-abi} or implied by @option{--target} is selected.
1270
f2410266
JW
1271@item riscv*-*-*
1272@var{list} is a single ABI name. The target architecture must be either
1273@code{rv32gc} or @code{rv64gc}. This will build a single multilib for the
1274specified architecture and ABI pair. If @code{--with-multilib-list} is not
1275given, then a default set of multilibs is selected based on the value of
1276@option{--target}. This is usually a large set of multilibs.
1277
f0ea7581 1278@item sh*-*-*
aca600aa
AS
1279@var{list} is a comma separated list of CPU names. These must be of the
1280form @code{sh*} or @code{m*} (in which case they match the compiler option
1281for that processor). The list should not contain any endian options -
1282these are handled by @option{--with-endian}.
1283
1284If @var{list} is empty, then there will be no multilibs for extra
1285processors. The multilib for the secondary endian remains enabled.
1286
1287As a special case, if an entry in the list starts with a @code{!}
1288(exclamation point), then it is added to the list of excluded multilibs.
1289Entries of this sort should be compatible with @samp{MULTILIB_EXCLUDES}
1290(once the leading @code{!} has been stripped).
1291
1292If @option{--with-multilib-list} is not given, then a default set of
1293multilibs is selected based on the value of @option{--target}. This is
1294usually the complete set of libraries, but some targets imply a more
1295specialized subset.
1296
1297Example 1: to configure a compiler for SH4A only, but supporting both
1298endians, with little endian being the default:
1299@smallexample
1300--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
1301@end smallexample
1302
1303Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
1304only little endian SH4AL:
1305@smallexample
b7ae9eb5
RW
1306--with-cpu=sh4a --with-endian=little,big \
1307--with-multilib-list=sh4al,!mb/m4al
aca600aa
AS
1308@end smallexample
1309
f0ea7581
L
1310@item x86-64-*-linux*
1311@var{list} is a comma separated list of @code{m32}, @code{m64} and
1312@code{mx32} to enable 32-bit, 64-bit and x32 run-time libraries,
1313respectively. If @var{list} is empty, then there will be no multilibs
1314and only the default run-time library will be enabled.
1315
1316If @option{--with-multilib-list} is not given, then only 32-bit and
131764-bit run-time libraries will be enabled.
1318@end table
1319
c1e66912
KC
1320@item --with-multilib-generator=@var{config}
1321Specify what multilibs to build. @var{config} is a semicolon separated list of
1322values, possibly consisting of a single value. Currently only implemented
1323for riscv*-*-elf*. The accepted values and meanings are given below.
1324
1325
1326Every config is constructed with four components: architecture string, ABI,
1327reuse rule with architecture string and reuse rule with sub-extension.
1328
1329Example 1: Add multi-lib suppport for rv32i with ilp32.
1330@smallexample
1331rv32i-ilp32--
1332@end smallexample
1333
1334Example 2: Add multi-lib suppport for rv32i with ilp32 and rv32imafd with ilp32.
1335@smallexample
1336rv32i-ilp32--;rv32imafd-ilp32--
1337@end smallexample
1338
1339Example 3: Add multi-lib suppport for rv32i with ilp32; rv32im with ilp32 and
1340rv32ic with ilp32 will reuse this multi-lib set.
1341@smallexample
1342rv32i-ilp32-rv32im-c
1343@end smallexample
1344
1345Example 4: Add multi-lib suppport for rv64ima with lp64; rv64imaf with lp64,
1346rv64imac with lp64 and rv64imafc with lp64 will reuse this multi-lib set.
1347@smallexample
1348rv64ima-lp64--f,c,fc
1349@end smallexample
1350
fdd40498
KC
1351@option{--with-multilib-generator} have an optional configuration argument
1352@option{--cmodel=val} for code model, this option will expand with other
1353config options, @var{val} is a comma separated list of possible code model,
1354currently we support medlow and medany.
1355
1356Example 5: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
1357medlow code model
1358@smallexample
1359rv64ima-lp64--;--cmodel=medlow
1360@end smallexample
1361
1362Example 6: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
1363medlow code model; rv64ima with lp64 and medany code model
1364@smallexample
1365rv64ima-lp64--;--cmodel=medlow,medany
1366@end smallexample
1367
aca600aa
AS
1368@item --with-endian=@var{endians}
1369Specify what endians to use.
1370Currently only implemented for sh*-*-*.
1371
1372@var{endians} may be one of the following:
1373@table @code
1374@item big
1375Use big endian exclusively.
1376@item little
1377Use little endian exclusively.
1378@item big,little
1379Use big endian by default. Provide a multilib for little endian.
1380@item little,big
1381Use little endian by default. Provide a multilib for big endian.
1382@end table
1383
ef88b07d
JM
1384@item --enable-threads
1385Specify that the target
38209993 1386supports threads. This affects the Objective-C compiler and runtime
97a2feb6 1387library, and exception handling for other languages like C++.
6ac48571 1388On some systems, this is the default.
f42974dc 1389
f6160ed5
LR
1390In general, the best (and, in many cases, the only known) threading
1391model available will be configured for use. Beware that on some
2dd76960 1392systems, GCC has not been taught what threading models are generally
3c6bb1db
LR
1393available for the system. In this case, @option{--enable-threads} is an
1394alias for @option{--enable-threads=single}.
f6160ed5
LR
1395
1396@item --disable-threads
1397Specify that threading support should be disabled for the system.
3c6bb1db 1398This is an alias for @option{--enable-threads=single}.
f6160ed5 1399
ef88b07d
JM
1400@item --enable-threads=@var{lib}
1401Specify that
38209993
LG
1402@var{lib} is the thread support library. This affects the Objective-C
1403compiler and runtime library, and exception handling for other languages
97a2feb6 1404like C++. The possibilities for @var{lib} are:
f85b8d1a
JM
1405
1406@table @code
1407@item aix
1408AIX thread support.
1409@item dce
1410DCE thread support.
60bea929
RO
1411@item lynx
1412LynxOS thread support.
1413@item mipssde
1414MIPS SDE thread support.
f6160ed5
LR
1415@item no
1416This is an alias for @samp{single}.
f85b8d1a 1417@item posix
18167442 1418Generic POSIX/Unix98 thread support.
f6160ed5
LR
1419@item rtems
1420RTEMS thread support.
f85b8d1a
JM
1421@item single
1422Disable thread support, should work for all platforms.
60bea929
RO
1423@item tpf
1424TPF thread support.
f85b8d1a
JM
1425@item vxworks
1426VxWorks thread support.
1427@item win32
1428Microsoft Win32 API thread support.
1429@end table
f42974dc 1430
8dea1cca
DD
1431@item --enable-tls
1432Specify that the target supports TLS (Thread Local Storage). Usually
1433configure can correctly determine if TLS is supported. In cases where
1434it guesses incorrectly, TLS can be explicitly enabled or disabled with
1435@option{--enable-tls} or @option{--disable-tls}. This can happen if
1436the assembler supports TLS but the C library does not, or if the
1437assumptions made by the configure test are incorrect.
1438
1439@item --disable-tls
1440Specify that the target does not support TLS.
1441This is an alias for @option{--enable-tls=no}.
1442
5a460280
ID
1443@item --disable-tm-clone-registry
1444Disable TM clone registry in libgcc. It is enabled in libgcc by default.
1445This option helps to reduce code size for embedded targets which do
1446not use transactional memory.
1447
ef88b07d 1448@item --with-cpu=@var{cpu}
8981c15b
JM
1449@itemx --with-cpu-32=@var{cpu}
1450@itemx --with-cpu-64=@var{cpu}
7816bea0
DJ
1451Specify which cpu variant the compiler should generate code for by default.
1452@var{cpu} will be used as the default value of the @option{-mcpu=} switch.
5d5f6720
JR
1453This option is only supported on some targets, including ARC, ARM, i386, M68k,
1454PowerPC, and SPARC@. It is mandatory for ARC@. The @option{--with-cpu-32} and
8981c15b 1455@option{--with-cpu-64} options specify separate default CPUs for
61ef34c5 145632-bit and 64-bit modes; these options are only supported for aarch64, i386,
31177ef2 1457x86-64, PowerPC, and SPARC@.
7816bea0
DJ
1458
1459@item --with-schedule=@var{cpu}
1460@itemx --with-arch=@var{cpu}
8981c15b
JM
1461@itemx --with-arch-32=@var{cpu}
1462@itemx --with-arch-64=@var{cpu}
7816bea0 1463@itemx --with-tune=@var{cpu}
8981c15b
JM
1464@itemx --with-tune-32=@var{cpu}
1465@itemx --with-tune-64=@var{cpu}
7816bea0 1466@itemx --with-abi=@var{abi}
9b66ebb1 1467@itemx --with-fpu=@var{type}
7816bea0
DJ
1468@itemx --with-float=@var{type}
1469These configure options provide default values for the @option{-mschedule=},
9b66ebb1
PB
1470@option{-march=}, @option{-mtune=}, @option{-mabi=}, and @option{-mfpu=}
1471options and for @option{-mhard-float} or @option{-msoft-float}. As with
1472@option{--with-cpu}, which switches will be accepted and acceptable values
1473of the arguments depend on the target.
f42974dc 1474
3cf94279
PB
1475@item --with-mode=@var{mode}
1476Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
1477This option is only supported on ARM targets.
1478
feeeff5c
JR
1479@item --with-stack-offset=@var{num}
1480This option sets the default for the -mstack-offset=@var{num} option,
1481and will thus generally also control the setting of this option for
1482libraries. This option is only supported on Epiphany targets.
1483
b71e5eba
UB
1484@item --with-fpmath=@var{isa}
1485This options sets @option{-mfpmath=sse} by default and specifies the default
1486ISA for floating-point arithmetics. You can select either @samp{sse} which
1487enables @option{-msse2} or @samp{avx} which enables @option{-mavx} by default.
1488This option is only supported on i386 and x86-64 targets.
a3af5e26 1489
050af144
MF
1490@item --with-fp-32=@var{mode}
1491On MIPS targets, set the default value for the @option{-mfp} option when using
1492the o32 ABI. The possibilities for @var{mode} are:
1493@table @code
1494@item 32
1495Use the o32 FP32 ABI extension, as with the @option{-mfp32} command-line
1496option.
1497@item xx
1498Use the o32 FPXX ABI extension, as with the @option{-mfpxx} command-line
1499option.
1500@item 64
1501Use the o32 FP64 ABI extension, as with the @option{-mfp64} command-line
1502option.
1503@end table
1504In the absence of this configuration option the default is to use the o32
1505FP32 ABI extension.
1506
1507@item --with-odd-spreg-32
1508On MIPS targets, set the @option{-modd-spreg} option by default when using
1509the o32 ABI.
1510
1511@item --without-odd-spreg-32
1512On MIPS targets, set the @option{-mno-odd-spreg} option by default when using
1513the o32 ABI. This is normally used in conjunction with
1514@option{--with-fp-32=64} in order to target the o32 FP64A ABI extension.
1515
ff3f3951
MR
1516@item --with-nan=@var{encoding}
1517On MIPS targets, set the default encoding convention to use for the
1518special not-a-number (NaN) IEEE 754 floating-point data. The
1519possibilities for @var{encoding} are:
1520@table @code
1521@item legacy
1522Use the legacy encoding, as with the @option{-mnan=legacy} command-line
1523option.
1524@item 2008
1525Use the 754-2008 encoding, as with the @option{-mnan=2008} command-line
1526option.
1527@end table
1528To use this configuration option you must have an assembler version
1529installed that supports the @option{-mnan=} command-line option too.
1530In the absence of this configuration option the default convention is
1531the legacy encoding, as when neither of the @option{-mnan=2008} and
1532@option{-mnan=legacy} command-line options has been used.
1533
9f0df97a
DD
1534@item --with-divide=@var{type}
1535Specify how the compiler should generate code for checking for
1536division by zero. This option is only supported on the MIPS target.
1537The possibilities for @var{type} are:
1538@table @code
1539@item traps
1540Division by zero checks use conditional traps (this is the default on
1541systems that support conditional traps).
1542@item breaks
1543Division by zero checks use the break instruction.
1544@end table
1545
66471b47
DD
1546@c If you make --with-llsc the default for additional targets,
1547@c update the --with-llsc description in the MIPS section below.
1548
1549@item --with-llsc
1550On MIPS targets, make @option{-mllsc} the default when no
3805a93e 1551@option{-mno-llsc} option is passed. This is the default for
66471b47
DD
1552Linux-based targets, as the kernel will emulate them if the ISA does
1553not provide them.
1554
1555@item --without-llsc
1556On MIPS targets, make @option{-mno-llsc} the default when no
1557@option{-mllsc} option is passed.
1558
b96c5923
DD
1559@item --with-synci
1560On MIPS targets, make @option{-msynci} the default when no
1561@option{-mno-synci} option is passed.
1562
ff2ce160 1563@item --without-synci
b96c5923
DD
1564On MIPS targets, make @option{-mno-synci} the default when no
1565@option{-msynci} option is passed. This is the default.
1566
ab6b44cb
MF
1567@item --with-lxc1-sxc1
1568On MIPS targets, make @option{-mlxc1-sxc1} the default when no
1569@option{-mno-lxc1-sxc1} option is passed. This is the default.
1570
1571@item --without-lxc1-sxc1
1572On MIPS targets, make @option{-mno-lxc1-sxc1} the default when no
1573@option{-mlxc1-sxc1} option is passed. The indexed load/store
1574instructions are not directly a problem but can lead to unexpected
1575behaviour when deployed in an application intended for a 32-bit address
1576space but run on a 64-bit processor. The issue is seen because all
1577known MIPS 64-bit Linux kernels execute o32 and n32 applications
1578with 64-bit addressing enabled which affects the overflow behaviour
1579of the indexed addressing mode. GCC will assume that ordinary
158032-bit arithmetic overflow behaviour is the same whether performed
1581as an @code{addu} instruction or as part of the address calculation
1582in @code{lwxc1} type instructions. This assumption holds true in a
1583pure 32-bit environment and can hold true in a 64-bit environment if
1584the address space is accurately set to be 32-bit for o32 and n32.
1585
d821744c
MF
1586@item --with-madd4
1587On MIPS targets, make @option{-mmadd4} the default when no
1588@option{-mno-madd4} option is passed. This is the default.
1589
1590@item --without-madd4
1591On MIPS targets, make @option{-mno-madd4} the default when no
1592@option{-mmadd4} option is passed. The @code{madd4} instruction
1593family can be problematic when targeting a combination of cores that
1594implement these instructions differently. There are two known cores
1595that implement these as fused operations instead of unfused (where
1596unfused is normally expected). Disabling these instructions is the
1597only way to ensure compatible code is generated; this will incur
1598a performance penalty.
1599
e21d5757
DJ
1600@item --with-mips-plt
1601On MIPS targets, make use of copy relocations and PLTs.
1602These features are extensions to the traditional
1603SVR4-based MIPS ABIs and require support from GNU binutils
1604and the runtime C library.
1605
630b1e3a
TC
1606@item --with-stack-clash-protection-guard-size=@var{size}
1607On certain targets this option sets the default stack clash protection guard
1608size as a power of two in bytes. On AArch64 @var{size} is required to be either
160912 (4KB) or 16 (64KB).
1610
5e92fdda
MR
1611@item --with-isa-spec=@var{ISA-spec-string}
1612On RISC-V targets specify the default version of the RISC-V Unprivileged
1613(formerly User-Level) ISA specification to produce code conforming to.
1614The possibilities for @var{ISA-spec-string} are:
1615@table @code
1616@item 2.2
1617Produce code conforming to version 2.2.
1618@item 20190608
1619Produce code conforming to version 20190608.
1620@item 20191213
1621Produce code conforming to version 20191213.
1622@end table
1623In the absence of this configuration option the default version is 20191213.
1624
354b7da5
DH
1625@item --enable-__cxa_atexit
1626Define if you want to use __cxa_atexit, rather than atexit, to
1627register C++ destructors for local statics and global objects.
1628This is essential for fully standards-compliant handling of
8a36672b
JM
1629destructors, but requires __cxa_atexit in libc. This option is currently
1630only available on systems with GNU libc. When enabled, this will cause
cea79118 1631@option{-fuse-cxa-atexit} to be passed by default.
354b7da5 1632
d1a6ec10 1633@item --enable-gnu-indirect-function
f6c5fbfd
NS
1634Define if you want to enable the @code{ifunc} attribute. This option is
1635currently only available on systems with GNU libc on certain targets.
1636
ef88b07d
JM
1637@item --enable-target-optspace
1638Specify that target
38209993
LG
1639libraries should be optimized for code space instead of code speed.
1640This is the default for the m32r platform.
f42974dc 1641
ab130aa5
JM
1642@item --with-cpp-install-dir=@var{dirname}
1643Specify that the user visible @command{cpp} program should be installed
1644in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
f42974dc 1645
55c4f715
RO
1646@item --enable-comdat
1647Enable COMDAT group support. This is primarily used to override the
1648automatically detected value.
1649
07cf4226
DM
1650@item --enable-initfini-array
1651Force the use of sections @code{.init_array} and @code{.fini_array}
1652(instead of @code{.init} and @code{.fini}) for constructors and
1653destructors. Option @option{--disable-initfini-array} has the
1654opposite effect. If neither option is specified, the configure script
1655will try to guess whether the @code{.init_array} and
1656@code{.fini_array} sections are supported and, if they are, use them.
1657
427b248d
JM
1658@item --enable-link-mutex
1659When building GCC, use a mutex to avoid linking the compilers for
1660multiple languages at the same time, to avoid thrashing on build
1661systems with limited free memory. The default is not to use such a mutex.
1662
d326ebc9
JJ
1663@item --enable-link-serialization
1664When building GCC, use make dependencies to serialize linking the compilers for
1665multiple languages, to avoid thrashing on build
1666systems with limited free memory. The default is not to add such
1667dependencies and thus with parallel make potentially link different
1668compilers concurrently. If the argument is a positive integer, allow
1669that number of concurrent link processes for the large binaries.
1670
ef88b07d 1671@item --enable-maintainer-mode
0b70519f
RW
1672The build rules that regenerate the Autoconf and Automake output files as
1673well as the GCC master message catalog @file{gcc.pot} are normally
767094dd
JM
1674disabled. This is because it can only be rebuilt if the complete source
1675tree is present. If you have changed the sources and want to rebuild the
6ac48571 1676catalog, configuring with @option{--enable-maintainer-mode} will enable
767094dd 1677this. Note that you need a recent version of the @code{gettext} tools
6ac48571
JM
1678to do so.
1679
f5c3bb4b
PB
1680@item --disable-bootstrap
1681For a native build, the default configuration is to perform
1682a 3-stage bootstrap of the compiler when @samp{make} is invoked,
1683testing that GCC can compile itself correctly. If you want to disable
1684this process, you can configure with @option{--disable-bootstrap}.
1685
1686@item --enable-bootstrap
1687In special cases, you may want to perform a 3-stage build
1688even if the target and host triplets are different.
0b70519f 1689This is possible when the host can run code compiled for
f5c3bb4b
PB
1690the target (e.g.@: host is i686-linux, target is i486-linux).
1691Starting from GCC 4.2, to do this you have to configure explicitly
1692with @option{--enable-bootstrap}.
1693
51b9ff45 1694@item --enable-generated-files-in-srcdir
80521187 1695Neither the .c and .h files that are generated from Bison and flex nor the
51b9ff45 1696info manuals and man pages that are built from the .texi files are present
f4d83eba 1697in the repository development tree. When building GCC from that development tree,
80521187
GP
1698or from one of our snapshots, those generated files are placed in your
1699build directory, which allows for the source to be in a readonly
1700directory.
51b9ff45
KC
1701
1702If you configure with @option{--enable-generated-files-in-srcdir} then those
1703generated files will go into the source directory. This is mainly intended
1704for generating release or prerelease tarballs of the GCC sources, since it
80521187
GP
1705is not a requirement that the users of source releases to have flex, Bison,
1706or makeinfo.
51b9ff45 1707
ef88b07d
JM
1708@item --enable-version-specific-runtime-libs
1709Specify
38209993 1710that runtime libraries should be installed in the compiler specific
8e5f33ff
GK
1711subdirectory (@file{@var{libdir}/gcc}) rather than the usual places. In
1712addition, @samp{libstdc++}'s include files will be installed into
1713@file{@var{libdir}} unless you overruled it by using
6cfb3f16 1714@option{--with-gxx-include-dir=@var{dirname}}. Using this option is
38209993 1715particularly useful if you intend to use several versions of GCC in
bd661b0f
MR
1716parallel. The default is @samp{yes} for @samp{libada}, and @samp{no} for
1717the remaining libraries.
b9034bbd 1718
dd913323
MH
1719@item @anchor{WithAixSoname}--with-aix-soname=@samp{aix}, @samp{svr4} or @samp{both}
1720Traditional AIX shared library versioning (versioned @code{Shared Object}
1721files as members of unversioned @code{Archive Library} files named
1722@samp{lib.a}) causes numerous headaches for package managers. However,
1723@code{Import Files} as members of @code{Archive Library} files allow for
1724@strong{filename-based versioning} of shared libraries as seen on Linux/SVR4,
1725where this is called the "SONAME". But as they prevent static linking,
1726@code{Import Files} may be used with @code{Runtime Linking} only, where the
1727linker does search for @samp{libNAME.so} before @samp{libNAME.a} library
1728filenames with the @samp{-lNAME} linker flag.
1729
1730@anchor{AixLdCommand}For detailed information please refer to the AIX
7d437dc1 1731@uref{https://www.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22,,ld
dd913323
MH
1732Command} reference.
1733
1734As long as shared library creation is enabled, upon:
1735@table @code
1736@item --with-aix-soname=aix
1737@item --with-aix-soname=both
1738 A (traditional AIX) @code{Shared Archive Library} file is created:
1739 @itemize @bullet
1740 @item using the @samp{libNAME.a} filename scheme
1741 @item with the @code{Shared Object} file as archive member named
1742 @samp{libNAME.so.V} (except for @samp{libgcc_s}, where the @code{Shared
1743 Object} file is named @samp{shr.o} for backwards compatibility), which
1744 @itemize @minus
1745 @item is used for runtime loading from inside the @samp{libNAME.a} file
1746 @item is used for dynamic loading via
1747 @code{dlopen("libNAME.a(libNAME.so.V)", RTLD_MEMBER)}
1748 @item is used for shared linking
1749 @item is used for static linking, so no separate @code{Static Archive
1750 Library} file is needed
1751 @end itemize
1752 @end itemize
1753@item --with-aix-soname=both
1754@item --with-aix-soname=svr4
1755 A (second) @code{Shared Archive Library} file is created:
1756 @itemize @bullet
1757 @item using the @samp{libNAME.so.V} filename scheme
1758 @item with the @code{Shared Object} file as archive member named
1759 @samp{shr.o}, which
1760 @itemize @minus
1761 @item is created with the @code{-G linker flag}
1762 @item has the @code{F_LOADONLY} flag set
1763 @item is used for runtime loading from inside the @samp{libNAME.so.V} file
1764 @item is used for dynamic loading via @code{dlopen("libNAME.so.V(shr.o)",
1765 RTLD_MEMBER)}
1766 @end itemize
1767 @item with the @code{Import File} as archive member named @samp{shr.imp},
1768 which
1769 @itemize @minus
1770 @item refers to @samp{libNAME.so.V(shr.o)} as the "SONAME", to be recorded
1771 in the @code{Loader Section} of subsequent binaries
1772 @item indicates whether @samp{libNAME.so.V(shr.o)} is 32 or 64 bit
1773 @item lists all the public symbols exported by @samp{lib.so.V(shr.o)},
1774 eventually decorated with the @code{@samp{weak} Keyword}
1775 @item is necessary for shared linking against @samp{lib.so.V(shr.o)}
1776 @end itemize
1777 @end itemize
1778 A symbolic link using the @samp{libNAME.so} filename scheme is created:
1779 @itemize @bullet
1780 @item pointing to the @samp{libNAME.so.V} @code{Shared Archive Library} file
1781 @item to permit the @code{ld Command} to find @samp{lib.so.V(shr.imp)} via
1782 the @samp{-lNAME} argument (requires @code{Runtime Linking} to be enabled)
1783 @item to permit dynamic loading of @samp{lib.so.V(shr.o)} without the need
1784 to specify the version number via @code{dlopen("libNAME.so(shr.o)",
1785 RTLD_MEMBER)}
1786 @end itemize
1787@end table
1788
1789As long as static library creation is enabled, upon:
1790@table @code
1791@item --with-aix-soname=svr4
1792 A @code{Static Archive Library} is created:
1793 @itemize @bullet
1794 @item using the @samp{libNAME.a} filename scheme
1795 @item with all the @code{Static Object} files as archive members, which
1796 @itemize @minus
1797 @item are used for static linking
1798 @end itemize
1799 @end itemize
1800@end table
1801
1802While the aix-soname=@samp{svr4} option does not create @code{Shared Object}
1803files as members of unversioned @code{Archive Library} files any more, package
1804managers still are responsible to
1805@uref{./specific.html#TransferAixShobj,,transfer} @code{Shared Object} files
1806found as member of a previously installed unversioned @code{Archive Library}
1807file into the newly installed @code{Archive Library} file with the same
1808filename.
1809
1810@emph{WARNING:} Creating @code{Shared Object} files with @code{Runtime Linking}
1811enabled may bloat the TOC, eventually leading to @code{TOC overflow} errors,
1812requiring the use of either the @option{-Wl,-bbigtoc} linker flag (seen to
1813break with the @code{GDB} debugger) or some of the TOC-related compiler flags,
1814@ifnothtml
1815@xref{RS/6000 and PowerPC Options,, RS/6000 and PowerPC Options, gcc,
1816Using the GNU Compiler Collection (GCC)}.
1817@end ifnothtml
1818@ifhtml
1819see ``RS/6000 and PowerPC Options'' in the main manual.
1820@end ifhtml
1821
1822@option{--with-aix-soname} is currently supported by @samp{libgcc_s} only, so
1823this option is still experimental and not for normal use yet.
1824
9c582551 1825Default is the traditional behavior @option{--with-aix-soname=@samp{aix}}.
dd913323 1826
ef88b07d
JM
1827@item --enable-languages=@var{lang1},@var{lang2},@dots{}
1828Specify that only a particular subset of compilers and
767094dd 1829their runtime libraries should be built. For a list of valid values for
6cfb3f16 1830@var{langN} you can issue the following command in the
eea81d3e 1831@file{gcc} directory of your GCC source tree:@*
3ab51846 1832@smallexample
6fedd529 1833grep ^language= */config-lang.in
3ab51846 1834@end smallexample
eea81d3e 1835Currently, you can use any of the following:
b4c522fa
IB
1836@code{all}, @code{default}, @code{ada}, @code{c}, @code{c++}, @code{d},
1837@code{fortran}, @code{go}, @code{jit}, @code{lto}, @code{objc}, @code{obj-c++}.
f995c51f 1838Building the Ada compiler has special requirements, see below.
cdfee50a 1839If you do not pass this flag, or specify the option @code{default}, then the
f995c51f 1840default languages available in the @file{gcc} sub-tree will be configured.
b4c522fa 1841Ada, D, Go, Jit, and Objective-C++ are not default languages. LTO is not a
6fedd529 1842default language, but is built by default because @option{--enable-lto} is
cdfee50a
NS
1843enabled by default. The other languages are default languages. If
1844@code{all} is specified, then all available languages are built. An
1845exception is @code{jit} language, which requires
1846@option{--enable-host-shared} to be included with @code{all}.
f42974dc 1847
80ca80e9
BM
1848@item --enable-stage1-languages=@var{lang1},@var{lang2},@dots{}
1849Specify that a particular subset of compilers and their runtime
1850libraries should be built with the system C compiler during stage 1 of
1851the bootstrap process, rather than only in later stages with the
1852bootstrapped C compiler. The list of valid values is the same as for
1853@option{--enable-languages}, and the option @code{all} will select all
1854of the languages enabled by @option{--enable-languages}. This option is
1855primarily useful for GCC development; for instance, when a development
1856version of the compiler cannot bootstrap due to compiler bugs, or when
1857one is debugging front ends other than the C front end. When this
1858option is used, one can then build the target libraries for the
1859specified languages with the stage-1 compiler by using @command{make
1860stage1-bubble all-target}, or run the testsuite on the stage-1 compiler
1861for the specified languages using @command{make stage1-start check-gcc}.
1862
cd271054
AC
1863@item --disable-libada
1864Specify that the run-time libraries and tools used by GNAT should not
1865be built. This can be useful for debugging, or for compatibility with
c2910edf 1866previous Ada build procedures, when it was required to explicitly
cd271054
AC
1867do a @samp{make -C gcc gnatlib_and_tools}.
1868
6a929205
MT
1869@item --disable-libsanitizer
1870Specify that the run-time libraries for the various sanitizers should
1871not be built.
1872
ef0087a7
KH
1873@item --disable-libssp
1874Specify that the run-time libraries for stack smashing protection
78fd4c51
SL
1875should not be built or linked against. On many targets library support
1876is provided by the C library instead.
ef0087a7 1877
87e6d9dc
TB
1878@item --disable-libquadmath
1879Specify that the GCC quad-precision math library should not be built.
1880On some systems, the library is required to be linkable when building
1881the Fortran front end, unless @option{--disable-libquadmath-support}
1882is used.
1883
1884@item --disable-libquadmath-support
1885Specify that the Fortran front end and @code{libgfortran} do not add
1886support for @code{libquadmath} on systems supporting it.
1887
4fe7a8bc 1888@item --disable-libgomp
f1f3453e
TS
1889Specify that the GNU Offloading and Multi Processing Runtime Library
1890should not be built.
4fe7a8bc 1891
87f3fea8
CT
1892@item --disable-libvtv
1893Specify that the run-time libraries used by vtable verification
1894should not be built.
1895
ef88b07d
JM
1896@item --with-dwarf2
1897Specify that the compiler should
eea81d3e 1898use DWARF 2 debugging information as the default.
f85b8d1a 1899
5123acd2
MM
1900@item --with-advance-toolchain=@var{at}
1901On 64-bit PowerPC Linux systems, configure the compiler to use the
1902header files, library files, and the dynamic linker from the Advance
1903Toolchain release @var{at} instead of the default versions that are
1904provided by the Linux distribution. In general, this option is
1905intended for the developers of GCC, and it is not intended for general
1906use.
1907
7f970b70
AM
1908@item --enable-targets=all
1909@itemx --enable-targets=@var{target_list}
1910Some GCC targets, e.g.@: powerpc64-linux, build bi-arch compilers.
1911These are compilers that are able to generate either 64-bit or 32-bit
8ab5f5c9 1912code. Typically, the corresponding 32-bit target, e.g.@:
7f970b70
AM
1913powerpc-linux for powerpc64-linux, only generates 32-bit code. This
1914option enables the 32-bit target to be a bi-arch compiler, which is
1915useful when you want a bi-arch compiler that defaults to 32-bit, and
1916you are building a bi-arch or multi-arch binutils in a combined tree.
34677bae
MK
1917On mips-linux, this will build a tri-arch compiler (ABI o32/n32/64),
1918defaulted to o32.
f3054223
AL
1919Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
1920mips-linux and s390-linux.
7f970b70 1921
428b3812
L
1922@item --enable-default-pie
1923Turn on @option{-fPIE} and @option{-pie} by default.
1924
7f970b70
AM
1925@item --enable-secureplt
1926This option enables @option{-msecure-plt} by default for powerpc-linux.
1927@ifnothtml
1928@xref{RS/6000 and PowerPC Options,, RS/6000 and PowerPC Options, gcc,
1929Using the GNU Compiler Collection (GCC)},
1930@end ifnothtml
1931@ifhtml
1932See ``RS/6000 and PowerPC Options'' in the main manual
1933@end ifhtml
1934
e0f6cba0
MG
1935@item --enable-default-ssp
1936Turn on @option{-fstack-protector-strong} by default.
1937
922e3e33
UB
1938@item --enable-cld
1939This option enables @option{-mcld} by default for 32-bit x86 targets.
1940@ifnothtml
1941@xref{i386 and x86-64 Options,, i386 and x86-64 Options, gcc,
1942Using the GNU Compiler Collection (GCC)},
1943@end ifnothtml
1944@ifhtml
1945See ``i386 and x86-64 Options'' in the main manual
1946@end ifhtml
1947
67aeaded
AO
1948@item --enable-large-address-aware
1949The @option{--enable-large-address-aware} option arranges for MinGW
1950executables to be linked using the @option{--large-address-aware}
1951option, that enables the use of more than 2GB of memory. If GCC is
1952configured with this option, its effects can be reversed by passing the
1953@option{-Wl,--disable-large-address-aware} option to the so-configured
1954compiler driver.
1955
f85b8d1a 1956@item --enable-win32-registry
eea81d3e 1957@itemx --enable-win32-registry=@var{key}
f85b8d1a 1958@itemx --disable-win32-registry
95fef11f 1959The @option{--enable-win32-registry} option enables Microsoft Windows-hosted GCC
f85b8d1a
JM
1960to look up installations paths in the registry using the following key:
1961
1962@smallexample
eea81d3e 1963@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}}
f85b8d1a
JM
1964@end smallexample
1965
eea81d3e 1966@var{key} defaults to GCC version number, and can be overridden by the
8a36672b 1967@option{--enable-win32-registry=@var{key}} option. Vendors and distributors
f85b8d1a
JM
1968who use custom installers are encouraged to provide a different key,
1969perhaps one comprised of vendor name and GCC version number, to
767094dd 1970avoid conflict with existing installations. This feature is enabled
6cfb3f16 1971by default, and can be disabled by @option{--disable-win32-registry}
f85b8d1a
JM
1972option. This option has no effect on the other hosts.
1973
1974@item --nfp
1975Specify that the machine does not have a floating point unit. This
c9693e96
LH
1976option only applies to @samp{m68k-sun-sunos@var{n}}. On any other
1977system, @option{--nfp} has no effect.
f85b8d1a 1978
dd859b8a
KG
1979@item --enable-werror
1980@itemx --disable-werror
1981@itemx --enable-werror=yes
1982@itemx --enable-werror=no
1983When you specify this option, it controls whether certain files in the
1984compiler are built with @option{-Werror} in bootstrap stage2 and later.
1985If you don't specify it, @option{-Werror} is turned on for the main
1986development trunk. However it defaults to off for release branches and
1987final releases. The specific files which get @option{-Werror} are
1988controlled by the Makefiles.
1989
f85b8d1a 1990@item --enable-checking
267cca3d 1991@itemx --disable-checking
f85b8d1a 1992@itemx --enable-checking=@var{list}
267cca3d
RZ
1993This option controls performing internal consistency checks in the compiler.
1994It does not change the generated code, but adds error checking of the
1995requested complexity. This slows down the compiler and may only work
1996properly if you are building the compiler with GCC@.
1997
1998When the option is not specified, the active set of checks depends on context.
1999Namely, bootstrap stage 1 defaults to @samp{--enable-checking=yes}, builds
8bc6d0a2
RZ
2000from release branches or release archives default to
2001@samp{--enable-checking=release}, and otherwise
2002@samp{--enable-checking=yes,extra} is used. When the option is
267cca3d
RZ
2003specified without a @var{list}, the result is the same as
2004@samp{--enable-checking=yes}. Likewise, @samp{--disable-checking} is
2005equivalent to @samp{--enable-checking=no}.
2006
2007The categories of checks available in @var{list} are @samp{yes} (most common
2008checks @samp{assert,misc,gc,gimple,rtlflag,runtime,tree,types}), @samp{no}
2009(no checks at all), @samp{all} (all but @samp{valgrind}), @samp{release}
2010(cheapest checks @samp{assert,runtime}) or @samp{none} (same as @samp{no}).
2011@samp{release} checks are always on and to disable them
2012@samp{--disable-checking} or @samp{--enable-checking=no[,<other checks>]}
2013must be explicitly requested. Disabling assertions makes the compiler and
2014runtime slightly faster but increases the risk of undetected internal errors
2015causing wrong code to be generated.
2016
2017Individual checks can be enabled with these flags: @samp{assert}, @samp{df},
2018@samp{extra}, @samp{fold}, @samp{gc}, @samp{gcac}, @samp{gimple},
2019@samp{misc}, @samp{rtl}, @samp{rtlflag}, @samp{runtime}, @samp{tree},
2020@samp{types} and @samp{valgrind}. @samp{extra} extends @samp{misc}
2021checking with extra checks that might affect code generation and should
2022therefore not differ between stage1 and later stages in bootstrap.
2023
2024The @samp{valgrind} check requires the external @command{valgrind} simulator,
0d166f4a 2025available from @uref{https://valgrind.org}. The @samp{rtl} checks are
8bc6d0a2
RZ
2026expensive and the @samp{df}, @samp{gcac} and @samp{valgrind} checks are very
2027expensive.
f85b8d1a 2028
00f39bd5 2029@item --disable-stage1-checking
1588fb31 2030@itemx --enable-stage1-checking
00f39bd5 2031@itemx --enable-stage1-checking=@var{list}
267cca3d
RZ
2032This option affects only bootstrap build. If no @option{--enable-checking}
2033option is specified the stage1 compiler is built with @samp{yes} checking
2034enabled, otherwise the stage1 checking flags are the same as specified by
00f39bd5
RG
2035@option{--enable-checking}. To build the stage1 compiler with
2036different checking options use @option{--enable-stage1-checking}.
2037The list of checking options is the same as for @option{--enable-checking}.
2038If your system is too slow or too small to bootstrap a released compiler
2039with checking for stage1 enabled, you can use @samp{--disable-stage1-checking}
2040to disable checking for the stage1 compiler.
2041
22aa533e 2042@item --enable-coverage
31775d31 2043@itemx --enable-coverage=@var{level}
22aa533e 2044With this option, the compiler is built to collect self coverage
8a36672b
JM
2045information, every time it is run. This is for internal development
2046purposes, and only works when the compiler is being built with gcc. The
22aa533e 2047@var{level} argument controls whether the compiler is built optimized or
8a36672b 2048not, values are @samp{opt} and @samp{noopt}. For coverage analysis you
22aa533e 2049want to disable optimization, for performance analysis you want to
8a36672b 2050enable optimization. When coverage is enabled, the default level is
22aa533e
NS
2051without optimization.
2052
439a7e54 2053@item --enable-gather-detailed-mem-stats
95ea367d 2054When this option is specified more detailed information on memory
439a7e54 2055allocation is gathered. This information is printed when using
daf2f129 2056@option{-fmem-report}.
439a7e54 2057
fb107ea1
MT
2058@item --enable-valgrind-annotations
2059Mark selected memory related operations in the compiler when run under
2060valgrind to suppress false positives.
2061
f85b8d1a
JM
2062@item --enable-nls
2063@itemx --disable-nls
6cfb3f16 2064The @option{--enable-nls} option enables Native Language Support (NLS),
f85b8d1a 2065which lets GCC output diagnostics in languages other than American
767094dd 2066English. Native Language Support is enabled by default if not doing a
161d7b59 2067canadian cross build. The @option{--disable-nls} option disables NLS@.
f85b8d1a
JM
2068
2069@item --with-included-gettext
c771326b 2070If NLS is enabled, the @option{--with-included-gettext} option causes the build
021c4bfd 2071procedure to prefer its copy of GNU @command{gettext}.
f85b8d1a
JM
2072
2073@item --with-catgets
2074If NLS is enabled, and if the host lacks @code{gettext} but has the
2075inferior @code{catgets} interface, the GCC build procedure normally
2076ignores @code{catgets} and instead uses GCC's copy of the GNU
6cfb3f16 2077@code{gettext} library. The @option{--with-catgets} option causes the
f85b8d1a 2078build procedure to use the host's @code{catgets} in this situation.
80f9249a 2079
5304400d
CR
2080@item --with-libiconv-prefix=@var{dir}
2081Search for libiconv header files in @file{@var{dir}/include} and
2082libiconv library files in @file{@var{dir}/lib}.
2083
9340544b
ZW
2084@item --enable-obsolete
2085Enable configuration for an obsoleted system. If you attempt to
2086configure GCC for a system (build, host, or target) which has been
2087obsoleted, and you do not specify this flag, configure will halt with an
2088error message.
2089
2090All support for systems which have been obsoleted in one release of GCC
2091is removed entirely in the next major release, unless someone steps
2092forward to maintain the port.
486aa804
BE
2093
2094@item --enable-decimal-float
79b87c74
MM
2095@itemx --enable-decimal-float=yes
2096@itemx --enable-decimal-float=no
2097@itemx --enable-decimal-float=bid
2098@itemx --enable-decimal-float=dpd
486aa804 2099@itemx --disable-decimal-float
79b87c74 2100Enable (or disable) support for the C decimal floating point extension
7292b8e4
BE
2101that is in the IEEE 754-2008 standard. This is enabled by default only
2102on PowerPC, i386, and x86_64 GNU/Linux systems. Other systems may also
2103support it, but require the user to specifically enable it. You can
2104optionally control which decimal floating point format is used (either
2105@samp{bid} or @samp{dpd}). The @samp{bid} (binary integer decimal)
2106format is default on i386 and x86_64 systems, and the @samp{dpd}
2107(densely packed decimal) format is default on PowerPC systems.
486aa804 2108
ab22c1fa
CF
2109@item --enable-fixed-point
2110@itemx --disable-fixed-point
2111Enable (or disable) support for C fixed-point arithmetic.
2112This option is enabled by default for some targets (such as MIPS) which
2113have hardware-support for fixed-point operations. On other targets, you
2114may enable this option manually.
2115
ed965309
JJ
2116@item --with-long-double-128
2117Specify if @code{long double} type should be 128-bit by default on selected
2118GNU/Linux architectures. If using @code{--without-long-double-128},
2119@code{long double} will be by default 64-bit, the same as @code{double} type.
2120When neither of these configure options are used, the default will be
2121128-bit @code{long double} when built against GNU C Library 2.4 and later,
212264-bit @code{long double} otherwise.
2123
d2591b68
MM
2124@item --with-long-double-format=ibm
2125@itemx --with-long-double-format=ieee
2126Specify whether @code{long double} uses the IBM extended double format
2127or the IEEE 128-bit floating point format on PowerPC Linux systems.
2128This configuration switch will only work on little endian PowerPC
2129Linux systems and on big endian 64-bit systems where the default cpu
630ba2fd 2130is at least power7 (i.e.@: @option{--with-cpu=power7},
d2591b68
MM
2131@option{--with-cpu=power8}, or @option{--with-cpu=power9} is used).
2132
2133If you use the @option{--with-long-double-64} configuration option,
2134the @option{--with-long-double-format=ibm} and
2135@option{--with-long-double-format=ieee} options are ignored.
2136
2137The default @code{long double} format is to use IBM extended double.
2138Until all of the libraries are converted to use IEEE 128-bit floating
2139point, it is not recommended to use
2140@option{--with-long-double-format=ieee}.
2141
1e44e857
DJ
2142@item --enable-fdpic
2143On SH Linux systems, generate ELF FDPIC code.
2144
8a877c9c
KG
2145@item --with-gmp=@var{pathname}
2146@itemx --with-gmp-include=@var{pathname}
2147@itemx --with-gmp-lib=@var{pathname}
2148@itemx --with-mpfr=@var{pathname}
2149@itemx --with-mpfr-include=@var{pathname}
2150@itemx --with-mpfr-lib=@var{pathname}
f9bab007
KG
2151@itemx --with-mpc=@var{pathname}
2152@itemx --with-mpc-include=@var{pathname}
2153@itemx --with-mpc-lib=@var{pathname}
7a07ae52 2154If you want to build GCC but do not have the GMP library, the MPFR
f9bab007 2155library and/or the MPC library installed in a standard location and
7a07ae52
JW
2156do not have their sources present in the GCC source tree then you
2157can explicitly specify the directory where they are installed
2158(@samp{--with-gmp=@var{gmpinstalldir}},
b7ae9eb5
RW
2159@samp{--with-mpfr=@/@var{mpfrinstalldir}},
2160@samp{--with-mpc=@/@var{mpcinstalldir}}). The
2161@option{--with-gmp=@/@var{gmpinstalldir}} option is shorthand for
2162@option{--with-gmp-lib=@/@var{gmpinstalldir}/lib} and
2163@option{--with-gmp-include=@/@var{gmpinstalldir}/include}. Likewise the
2164@option{--with-mpfr=@/@var{mpfrinstalldir}} option is shorthand for
2165@option{--with-mpfr-lib=@/@var{mpfrinstalldir}/lib} and
2166@option{--with-mpfr-include=@/@var{mpfrinstalldir}/include}, also the
2167@option{--with-mpc=@/@var{mpcinstalldir}} option is shorthand for
2168@option{--with-mpc-lib=@/@var{mpcinstalldir}/lib} and
2169@option{--with-mpc-include=@/@var{mpcinstalldir}/include}. If these
3aea2d1c 2170shorthand assumptions are not correct, you can use the explicit
abcc9b2a
JW
2171include and lib options directly. You might also need to ensure the
2172shared libraries can be found by the dynamic linker when building and
2173using GCC, for example by setting the runtime shared library path
2174variable (@env{LD_LIBRARY_PATH} on GNU/Linux and Solaris systems).
3aea2d1c 2175
29a63921
AO
2176These flags are applicable to the host platform only. When building
2177a cross compiler, they will not be used to configure target libraries.
2178
6f22445a
RB
2179@item --with-isl=@var{pathname}
2180@itemx --with-isl-include=@var{pathname}
2181@itemx --with-isl-lib=@var{pathname}
e357a5e0 2182If you do not have the isl library installed in a standard location and you
8495b8f6
FXC
2183want to build GCC, you can explicitly specify the directory where it is
2184installed (@samp{--with-isl=@/@var{islinstalldir}}). The
33ad93b9
RG
2185@option{--with-isl=@/@var{islinstalldir}} option is shorthand for
2186@option{--with-isl-lib=@/@var{islinstalldir}/lib} and
8495b8f6
FXC
2187@option{--with-isl-include=@/@var{islinstalldir}/include}. If this
2188shorthand assumption is not correct, you can use the explicit
8a877c9c
KG
2189include and lib options directly.
2190
29a63921
AO
2191These flags are applicable to the host platform only. When building
2192a cross compiler, they will not be used to configure target libraries.
2193
00020c16
ILT
2194@item --with-stage1-ldflags=@var{flags}
2195This option may be used to set linker flags to be used when linking
2196stage 1 of GCC. These are also used when linking GCC if configured with
0682ab79 2197@option{--disable-bootstrap}. If @option{--with-stage1-libs} is not set to a
5dc85f7e
TV
2198value, then the default is @samp{-static-libstdc++ -static-libgcc}, if
2199supported.
00020c16
ILT
2200
2201@item --with-stage1-libs=@var{libs}
2202This option may be used to set libraries to be used when linking stage 1
2203of GCC. These are also used when linking GCC if configured with
5dc85f7e 2204@option{--disable-bootstrap}.
00020c16
ILT
2205
2206@item --with-boot-ldflags=@var{flags}
2207This option may be used to set linker flags to be used when linking
5dc85f7e
TV
2208stage 2 and later when bootstrapping GCC. If --with-boot-libs
2209is not is set to a value, then the default is
bec93d73 2210@samp{-static-libstdc++ -static-libgcc}.
00020c16
ILT
2211
2212@item --with-boot-libs=@var{libs}
2213This option may be used to set libraries to be used when linking stage 2
5dc85f7e 2214and later when bootstrapping GCC.
00020c16 2215
c8aea42c
PB
2216@item --with-debug-prefix-map=@var{map}
2217Convert source directory names using @option{-fdebug-prefix-map} when
2218building runtime libraries. @samp{@var{map}} is a space-separated
2219list of maps of the form @samp{@var{old}=@var{new}}.
2220
3b0249cb
ILT
2221@item --enable-linker-build-id
2222Tells GCC to pass @option{--build-id} option to the linker for all final
2223links (links performed without the @option{-r} or @option{--relocatable}
2224option), if the linker supports it. If you specify
2225@option{--enable-linker-build-id}, but your linker does not
2226support @option{--build-id} option, a warning is issued and the
2227@option{--enable-linker-build-id} option is ignored. The default is off.
2228
79bec923
ST
2229@item --with-linker-hash-style=@var{choice}
2230Tells GCC to pass @option{--hash-style=@var{choice}} option to the
2231linker for all final links. @var{choice} can be one of
2232@samp{sysv}, @samp{gnu}, and @samp{both} where @samp{sysv} is the default.
2233
e31bcd1b
JM
2234@item --enable-gnu-unique-object
2235@itemx --disable-gnu-unique-object
2236Tells GCC to use the gnu_unique_object relocation for C++ template
2237static data members and inline function local statics. Enabled by
75a2bcc0 2238default for a toolchain with an assembler that accepts it and
e31bcd1b
JM
2239GLIBC 2.11 or above, otherwise disabled.
2240
b907149b
JJ
2241@item --with-diagnostics-color=@var{choice}
2242Tells GCC to use @var{choice} as the default for @option{-fdiagnostics-color=}
2243option (if not used explicitly on the command line). @var{choice}
2244can be one of @samp{never}, @samp{auto}, @samp{always}, and @samp{auto-if-env}
458c8d64
BE
2245where @samp{auto} is the default. @samp{auto-if-env} makes
2246@option{-fdiagnostics-color=auto} the default if @env{GCC_COLORS}
2247is present and non-empty in the environment of the compiler, and
b907149b
JJ
2248@option{-fdiagnostics-color=never} otherwise.
2249
458c8d64
BE
2250@item --with-diagnostics-urls=@var{choice}
2251Tells GCC to use @var{choice} as the default for @option{-fdiagnostics-urls=}
2252option (if not used explicitly on the command line). @var{choice}
2253can be one of @samp{never}, @samp{auto}, @samp{always}, and @samp{auto-if-env}
2254where @samp{auto} is the default. @samp{auto-if-env} makes
2255@option{-fdiagnostics-urls=auto} the default if @env{GCC_URLS}
2256or @env{TERM_URLS} is present and non-empty in the environment of the
2257compiler, and @option{-fdiagnostics-urls=never} otherwise.
2258
2d413304 2259@item --enable-lto
48215350 2260@itemx --disable-lto
2d413304 2261Enable support for link-time optimization (LTO). This is enabled by
48215350 2262default, and may be disabled using @option{--disable-lto}.
2d413304 2263
45b3824d
TS
2264@item --enable-linker-plugin-configure-flags=FLAGS
2265@itemx --enable-linker-plugin-flags=FLAGS
2266By default, linker plugins (such as the LTO plugin) are built for the
2267host system architecture. For the case that the linker has a
2268different (but run-time compatible) architecture, these flags can be
2269specified to build plugins that are compatible to the linker. For
2270example, if you are building GCC for a 64-bit x86_64
3340164d 2271(@samp{x86_64-pc-linux-gnu}) host system, but have a 32-bit x86
45b3824d
TS
2272GNU/Linux (@samp{i686-pc-linux-gnu}) linker executable (which is
2273executable on the former system), you can configure GCC as follows for
2274getting compatible linker plugins:
2275
2276@smallexample
2277% @var{srcdir}/configure \
3340164d 2278 --host=x86_64-pc-linux-gnu \
45b3824d
TS
2279 --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
2280 --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
2281@end smallexample
2282
09a52fc3
RG
2283@item --with-plugin-ld=@var{pathname}
2284Enable an alternate linker to be used at link-time optimization (LTO)
2285link time when @option{-fuse-linker-plugin} is enabled.
2286This linker should have plugin support such as gold starting with
2287version 2.20 or GNU ld starting with version 2.21.
2288See @option{-fuse-linker-plugin} for details.
5dc99c46
SB
2289
2290@item --enable-canonical-system-headers
2291@itemx --disable-canonical-system-headers
2292Enable system header path canonicalization for @file{libcpp}. This can
2293produce shorter header file paths in diagnostics and dependency output
2294files, but these changed header paths may conflict with some compilation
2295environments. Enabled by default, and may be disabled using
2296@option{--disable-canonical-system-headers}.
75a2bcc0
JM
2297
2298@item --with-glibc-version=@var{major}.@var{minor}
2299Tell GCC that when the GNU C Library (glibc) is used on the target it
2300will be version @var{major}.@var{minor} or later. Normally this can
2301be detected from the C library's header files, but this option may be
2302needed when bootstrapping a cross toolchain without the header files
2303available for building the initial bootstrap compiler.
2304
2305If GCC is configured with some multilibs that use glibc and some that
2306do not, this option applies only to the multilibs that use glibc.
2307However, such configurations may not work well as not all the relevant
2308configuration in GCC is on a per-multilib basis.
85c64bbe
BS
2309
2310@item --enable-as-accelerator-for=@var{target}
2311Build as offload target compiler. Specify offload host triple by @var{target}.
2312
2313@item --enable-offload-targets=@var{target1}[=@var{path1}],@dots{},@var{targetN}[=@var{pathN}]
2314Enable offloading to targets @var{target1}, @dots{}, @var{targetN}.
2315Offload compilers are expected to be already installed. Default search
2316path for them is @file{@var{exec-prefix}}, but it can be changed by
2317specifying paths @var{path1}, @dots{}, @var{pathN}.
2318
2319@smallexample
2320% @var{srcdir}/configure \
c56684fd 2321 --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/path/to/x86_64/compiler,nvptx-none
85c64bbe 2322@end smallexample
b2b40051 2323
4c84c45d
TB
2324@item --enable-offload-defaulted
2325
2326Tell GCC that configured but not installed offload compilers and libgomp
2327plugins are silently ignored. Useful for distribution compilers where
2328those are in separate optional packages and where the presence or absence
2329of those optional packages should determine the actual supported offloading
2330target set rather than the GCC configure-time selection.
2331
1ecae1fc
IT
2332@item --enable-cet
2333@itemx --disable-cet
2334Enable building target run-time libraries with control-flow
2335instrumentation, see @option{-fcf-protection} option. When
2336@code{--enable-cet} is specified target libraries are configured
2337to add @option{-fcf-protection} and, if needed, other target
2338specific options to a set of building options.
2339
9df6c9c7
L
2340@code{--enable-cet=auto} is default. CET is enabled on Linux/x86 if
2341target binutils supports @code{Intel CET} instructions and disabled
2342otherwise. In this case, the target libraries are configured to get
2343additional @option{-fcf-protection} option.
8e966210
KC
2344
2345@item --with-riscv-attribute=@samp{yes}, @samp{no} or @samp{default}
2346Generate RISC-V attribute by default, in order to record extra build
2347information in object.
2348
2349The option is disabled by default. It is enabled on RISC-V/ELF (bare-metal)
2350target if target binutils supported.
a5dd6b69
MH
2351
2352@item --enable-s390-excess-float-precision
2353@itemx --disable-s390-excess-float-precision
2354On s390(x) targets, enable treatment of float expressions with double precision
2355when in standards-compliant mode (e.g., when @code{--std=c99} or
2356@code{-fexcess-precision=standard} are given).
2357
33f92509
MH
2358For a native build and cross compiles that have target headers, the option's
2359default is derived from glibc's behavior. When glibc clamps float_t to double,
2360GCC follows and enables the option. For other cross compiles, the default is
2361disabled.
8fa68976 2362
3677eb80
BH
2363@item --with-zstd=@var{pathname}
2364@itemx --with-zstd-include=@var{pathname}
2365@itemx --with-zstd-lib=@var{pathname}
2366If you do not have the @code{zstd} library installed in a standard
2367location and you want to build GCC, you can explicitly specify the
2368directory where it is installed (@samp{--with-zstd=@/@var{zstdinstalldir}}).
2369The @option{--with-zstd=@/@var{zstdinstalldir}} option is shorthand for
2370@option{--with-zstd-lib=@/@var{zstdinstalldir}/lib} and
2371@option{--with-zstd-include=@/@var{zstdinstalldir}/include}. If this
2372shorthand assumption is not correct, you can use the explicit
2373include and lib options directly.
2374
2375These flags are applicable to the host platform only. When building
2376a cross compiler, they will not be used to configure target libraries.
ef88b07d 2377@end table
f42974dc 2378
c1c3bb0c
ME
2379@subheading Cross-Compiler-Specific Options
2380The following options only apply to building cross compilers.
0b70519f 2381
ef88b07d 2382@table @code
e8e66971
MR
2383@item --with-toolexeclibdir=@var{dir}
2384Specify the installation directory for libraries built with a cross compiler.
2385The default is @option{$@{gcc_tooldir@}/lib}.
2386
4977bab6
ZW
2387@item --with-sysroot
2388@itemx --with-sysroot=@var{dir}
d47abcca
JW
2389Tells GCC to consider @var{dir} as the root of a tree that contains
2390(a subset of) the root filesystem of the target operating system.
4977bab6 2391Target system headers, libraries and run-time object files will be
169264b3 2392searched for in there. More specifically, this acts as if
0b70519f
RW
2393@option{--sysroot=@var{dir}} was added to the default options of the built
2394compiler. The specified directory is not copied into the
4977bab6
ZW
2395install tree, unlike the options @option{--with-headers} and
2396@option{--with-libs} that this option obsoletes. The default value,
2397in case @option{--with-sysroot} is not given an argument, is
047d636f
DJ
2398@option{$@{gcc_tooldir@}/sys-root}. If the specified directory is a
2399subdirectory of @option{$@{exec_prefix@}}, then it will be found relative to
2400the GCC binaries if the installation tree is moved.
4977bab6 2401
0b70519f
RW
2402This option affects the system root for the compiler used to build
2403target libraries (which runs on the build system) and the compiler newly
2404installed with @code{make install}; it does not affect the compiler which is
2405used to build GCC itself.
2406
08b2bad2
SB
2407If you specify the @option{--with-native-system-header-dir=@var{dirname}}
2408option then the compiler will search that directory within @var{dirname} for
2409native system headers rather than the default @file{/usr/include}.
2410
160633c6
MM
2411@item --with-build-sysroot
2412@itemx --with-build-sysroot=@var{dir}
2413Tells GCC to consider @var{dir} as the system root (see
526635cb 2414@option{--with-sysroot}) while building target libraries, instead of
160633c6
MM
2415the directory specified with @option{--with-sysroot}. This option is
2416only useful when you are already using @option{--with-sysroot}. You
526635cb 2417can use @option{--with-build-sysroot} when you are configuring with
160633c6 2418@option{--prefix} set to a directory that is different from the one in
ff2ce160 2419which you are installing GCC and your target libraries.
526635cb
MM
2420
2421This option affects the system root for the compiler used to build
2422target libraries (which runs on the build system); it does not affect
2423the compiler which is used to build GCC itself.
160633c6 2424
08b2bad2
SB
2425If you specify the @option{--with-native-system-header-dir=@var{dirname}}
2426option then the compiler will search that directory within @var{dirname} for
2427native system headers rather than the default @file{/usr/include}.
2428
65a824f6
JT
2429@item --with-headers
2430@itemx --with-headers=@var{dir}
4977bab6 2431Deprecated in favor of @option{--with-sysroot}.
65a824f6
JT
2432Specifies that target headers are available when building a cross compiler.
2433The @var{dir} argument specifies a directory which has the target include
2434files. These include files will be copied into the @file{gcc} install
2435directory. @emph{This option with the @var{dir} argument is required} when
2436building a cross compiler, if @file{@var{prefix}/@var{target}/sys-include}
2437doesn't pre-exist. If @file{@var{prefix}/@var{target}/sys-include} does
2438pre-exist, the @var{dir} argument may be omitted. @command{fixincludes}
8a36672b 2439will be run on these files to make them compatible with GCC@.
264d65c1
AP
2440
2441@item --without-headers
2442Tells GCC not use any target headers from a libc when building a cross
2dd76960 2443compiler. When crossing to GNU/Linux, you need the headers so GCC
264d65c1 2444can build the exception handling for libgcc.
264d65c1 2445
65a824f6 2446@item --with-libs
0b70519f 2447@itemx --with-libs="@var{dir1} @var{dir2} @dots{} @var{dirN}"
4977bab6 2448Deprecated in favor of @option{--with-sysroot}.
38209993
LG
2449Specifies a list of directories which contain the target runtime
2450libraries. These libraries will be copied into the @file{gcc} install
65a824f6
JT
2451directory. If the directory list is omitted, this option has no
2452effect.
cc11cc9b 2453
ef88b07d 2454@item --with-newlib
eea81d3e 2455Specifies that @samp{newlib} is
38209993 2456being used as the target C library. This causes @code{__eprintf} to be
eea81d3e
RO
2457omitted from @file{libgcc.a} on the assumption that it will be provided by
2458@samp{newlib}.
cc11cc9b 2459
29f3def3
GJL
2460@html
2461<a name="avr"></a>
2462@end html
2a095093 2463@item --with-avrlibc
29f3def3
GJL
2464Only supported for the AVR target. Specifies that @samp{AVR-Libc} is
2465being used as the target C@tie{} library. This causes float support
2a095093
GJL
2466functions like @code{__addsf3} to be omitted from @file{libgcc.a} on
2467the assumption that it will be provided by @file{libm.a}. For more
786973ce 2468technical details, cf. @uref{https://gcc.gnu.org/PR54461,,PR54461}.
29f3def3 2469It is not supported for
2a095093
GJL
2470RTEMS configurations, which currently use newlib. The option is
2471supported since version 4.7.2 and is the default in 4.8.0 and newer.
2472
29f3def3
GJL
2473@item --with-double=@{32|64|32,64|64,32@}
2474@itemx --with-long-double=@{32|64|32,64|64,32|double@}
2475Only supported for the AVR target since version@tie{}10.
2476Specify the default layout available for the C/C++ @samp{double}
2477and @samp{long double} type, respectively. The following rules apply:
2478@itemize
2479@item
2480The first value after the @samp{=} specifies the default layout (in bits)
2481of the type and also the default for the @option{-mdouble=} resp.
2482@option{-mlong-double=} compiler option.
2483@item
2484If more than one value is specified, respective multilib variants are
2485available, and @option{-mdouble=} resp. @option{-mlong-double=} acts
2486as a multilib option.
2487@item
2488If @option{--with-long-double=double} is specified, @samp{double} and
2489@samp{long double} will have the same layout.
2490@item
f30dd607
GJL
2491The defaults are @option{--with-long-double=64,32} and
2492@option{--with-double=32,64}. The default @samp{double} layout imposed by
2493the latter is compatible with older versions of the compiler that implement
2494@samp{double} as a 32-bit type, which does not comply to the language standard.
29f3def3
GJL
2495@end itemize
2496Not all combinations of @option{--with-double=} and
2497@option{--with-long-double=} are valid. For example, the combination
2498@option{--with-double=32,64} @option{--with-long-double=32} will be
2499rejected because the first option specifies the availability of
2500multilibs for @samp{double}, whereas the second option implies
2501that @samp{long double} --- and hence also @samp{double} --- is always
250232@tie{}bits wide.
2503
d672c0af 2504@item --with-double-comparison=@{tristate|bool|libf7@}
f30dd607
GJL
2505Only supported for the AVR target since version@tie{}10.
2506Specify what result format is returned by library functions that
2507compare 64-bit floating point values (@code{DFmode}).
2508The GCC default is @samp{tristate}. If the floating point
2509implementation returns a boolean instead, set it to @samp{bool}.
2510
2511@item --with-libf7=@{libgcc|math|math-symbols|no@}
2512Only supported for the AVR target since version@tie{}10.
2513Specify to which degree code from LibF7 is included in libgcc.
2514LibF7 is an ad-hoc, AVR-specific, 64-bit floating point emulation
2515written in C and (inline) assembly. @samp{libgcc} adds support
2516for functions that one would usually expect in libgcc like double addition,
2517double comparisons and double conversions. @samp{math} also adds routines
2518that one would expect in @file{libm.a}, but with @code{__} (two underscores)
2519prepended to the symbol names as specified by @file{math.h}.
2520@samp{math-symbols} also defines weak aliases for the functions
2521declared in @file{math.h}. However, @code{--with-libf7} won't
2522install no @file{math.h} header file whatsoever, this file must come
2523from elsewhere. This option sets @option{--with-double-comparison}
2524to @samp{bool}.
2525
9304f876
CJW
2526@item --with-nds32-lib=@var{library}
2527Specifies that @var{library} setting is used for building @file{libgcc.a}.
2528Currently, the valid @var{library} is @samp{newlib} or @samp{mculib}.
2529This option is only supported for the NDS32 target.
2530
cc11cc9b
PB
2531@item --with-build-time-tools=@var{dir}
2532Specifies where to find the set of target tools (assembler, linker, etc.)
2533that will be used while building GCC itself. This option can be useful
2534if the directory layouts are different between the system you are building
2535GCC on, and the system where you will deploy it.
2536
e4ae5e77 2537For example, on an @samp{ia64-hp-hpux} system, you may have the GNU
cc11cc9b
PB
2538assembler and linker in @file{/usr/bin}, and the native tools in a
2539different path, and build a toolchain that expects to find the
2540native tools in @file{/usr/bin}.
2541
2542When you use this option, you should ensure that @var{dir} includes
2543@command{ar}, @command{as}, @command{ld}, @command{nm},
2544@command{ranlib} and @command{strip} if necessary, and possibly
2545@command{objdump}. Otherwise, GCC may use an inconsistent set of
2546tools.
ef88b07d 2547@end table
f9047ed3 2548
ffedf511
RW
2549@subsubheading Overriding @command{configure} test results
2550
2551Sometimes, it might be necessary to override the result of some
2552@command{configure} test, for example in order to ease porting to a new
2553system or work around a bug in a test. The toplevel @command{configure}
2554script provides three variables for this:
2555
2556@table @code
2557
2558@item build_configargs
2559@cindex @code{build_configargs}
2560The contents of this variable is passed to all build @command{configure}
2561scripts.
2562
2563@item host_configargs
2564@cindex @code{host_configargs}
2565The contents of this variable is passed to all host @command{configure}
2566scripts.
2567
2568@item target_configargs
2569@cindex @code{target_configargs}
2570The contents of this variable is passed to all target @command{configure}
2571scripts.
2572
2573@end table
2574
2575In order to avoid shell and @command{make} quoting issues for complex
2576overrides, you can pass a setting for @env{CONFIG_SITE} and set
2577variables in the site file.
2578
114bf3f1
MK
2579@subheading Objective-C-Specific Options
2580
2581The following options apply to the build of the Objective-C runtime library.
2582
2583@table @code
2584@item --enable-objc-gc
2585Specify that an additional variant of the GNU Objective-C runtime library
2586is built, using an external build of the Boehm-Demers-Weiser garbage
efbf0f1e 2587collector (@uref{https://www.hboehm.info/gc/}). This library needs to be
114bf3f1
MK
2588available for each multilib variant, unless configured with
2589@option{--enable-objc-gc=@samp{auto}} in which case the build of the
2590additional runtime library is skipped when not available and the build
2591continues.
2592
2593@item --with-target-bdw-gc=@var{list}
2594@itemx --with-target-bdw-gc-include=@var{list}
2595@itemx --with-target-bdw-gc-lib=@var{list}
2596Specify search directories for the garbage collector header files and
2597libraries. @var{list} is a comma separated list of key value pairs of the
f521b293 2598form @samp{@var{multilibdir}=@var{path}}, where the default multilib key
630ba2fd 2599is named as @samp{.} (dot), or is omitted (e.g.@:
114bf3f1
MK
2600@samp{--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32}).
2601
2602The options @option{--with-target-bdw-gc-include} and
2603@option{--with-target-bdw-gc-lib} must always be specified together
2604for each multilib variant and they take precedence over
8465132c
MK
2605@option{--with-target-bdw-gc}. If @option{--with-target-bdw-gc-include}
2606is missing values for a multilib, then the value for the default
630ba2fd 2607multilib is used (e.g.@: @samp{--with-target-bdw-gc-include=/opt/bdw-gc/include}
8465132c
MK
2608@samp{--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32}).
2609If none of these options are specified, the library is assumed in
2610default locations.
114bf3f1
MK
2611@end table
2612
bb50312e
IB
2613@subheading D-Specific Options
2614
2615The following options apply to the build of the D runtime library.
2616
2617@table @code
66c22737
IB
2618@item --enable-libphobos-checking
2619@itemx --disable-libphobos-checking
2620@itemx --enable-libphobos-checking=@var{list}
2621This option controls whether run-time checks and contracts are compiled into
2622the D runtime library. When the option is not specified, the library is built
2623with @samp{release} checking. When the option is specified without a
2624@var{list}, the result is the same as @samp{--enable-libphobos-checking=yes}.
2625Likewise, @samp{--disable-libphobos-checking} is equivalent to
2626@samp{--enable-libphobos-checking=no}.
2627
2628The categories of checks available in @var{list} are @samp{yes} (compiles
2629libphobos with @option{-fno-release}), @samp{no} (compiles libphobos with
2630@option{-frelease}), @samp{all} (same as @samp{yes}), @samp{none} or
2631@samp{release} (same as @samp{no}).
2632
2633Individual checks available in @var{list} are @samp{assert} (compiles libphobos
2634with an extra option @option{-fassert}).
2635
2636@item --with-libphobos-druntime-only
2637@itemx --with-libphobos-druntime-only=@var{choice}
2638Specify whether to build only the core D runtime library (druntime), or both
2639the core and standard library (phobos) into libphobos. This is useful for
2640targets that have full support in druntime, but no or incomplete support
2641in phobos. @var{choice} can be one of @samp{auto}, @samp{yes}, and @samp{no}
2642where @samp{auto} is the default.
2643
2644When the option is not specified, the default choice @samp{auto} means that it
2645is inferred whether the target has support for the phobos standard library.
2646When the option is specified without a @var{choice}, the result is the same as
2647@samp{--with-libphobos-druntime-only=yes}.
2648
bb50312e
IB
2649@item --with-target-system-zlib
2650Use installed @samp{zlib} rather than that included with GCC@. This needs
2651to be available for each multilib variant, unless configured with
2652@option{--with-target-system-zlib=@samp{auto}} in which case the GCC@ included
2653@samp{zlib} is only used when the system installed library is not available.
2654@end table
2655
f42974dc 2656@html
b8db17af 2657<hr />
f42974dc
DW
2658<p>
2659@end html
2660@ifhtml
2661@uref{./index.html,,Return to the GCC Installation page}
2662@end ifhtml
2663@end ifset
2664
2665@c ***Building****************************************************************
6cfb3f16 2666@ifnothtml
f42974dc
DW
2667@comment node-name, next, previous, up
2668@node Building, Testing, Configuration, Installing GCC
6cfb3f16 2669@end ifnothtml
f42974dc 2670@ifset buildhtml
f42974dc
DW
2671@ifnothtml
2672@chapter Building
2673@end ifnothtml
2674@cindex Installing GCC: Building
2675
2676Now that GCC is configured, you are ready to build the compiler and
2677runtime libraries.
2678
b8df899a 2679Some commands executed when making the compiler may fail (return a
7ba4ca63 2680nonzero status) and be ignored by @command{make}. These failures, which
b8df899a
JM
2681are often due to files that were not found, are expected, and can safely
2682be ignored.
2683
2684It is normal to have compiler warnings when compiling certain files.
2685Unless you are a GCC developer, you can generally ignore these warnings
dd859b8a
KG
2686unless they cause compilation to fail. Developers should attempt to fix
2687any warnings encountered, however they can temporarily continue past
2688warnings-as-errors by specifying the configure flag
2689@option{--disable-werror}.
b8df899a
JM
2690
2691On certain old systems, defining certain environment variables such as
6cfb3f16 2692@env{CC} can interfere with the functioning of @command{make}.
b8df899a
JM
2693
2694If you encounter seemingly strange errors when trying to build the
2695compiler in a directory other than the source directory, it could be
2696because you have previously configured the compiler in the source
2697directory. Make sure you have done all the necessary preparations.
2698
2699If you build GCC on a BSD system using a directory stored in an old System
4c64396e 2700V file system, problems may occur in running @command{fixincludes} if the
b8df899a
JM
2701System V file system doesn't support symbolic links. These problems
2702result in a failure to fix the declaration of @code{size_t} in
2703@file{sys/types.h}. If you find that @code{size_t} is a signed type and
2704that type mismatches occur, this could be the cause.
2705
161d7b59 2706The solution is not to use such a directory for building GCC@.
f42974dc 2707
f4d83eba 2708Similarly, when building from the source repository or snapshots, or if you modify
e8645a40
TT
2709@file{*.l} files, you need the Flex lexical analyzer generator
2710installed. If you do not modify @file{*.l} files, releases contain
2711the Flex-generated files and you do not need Flex installed to build
2712them. There is still one Flex-based lexical analyzer (part of the
2713build machinery, not of GCC itself) that is used even if you only
2714build the C front end.
f85b8d1a 2715
f4d83eba 2716When building from the source repository or snapshots, or if you modify Texinfo
7326a39e 2717documentation, you need version 4.7 or later of Texinfo installed if you
f85b8d1a
JM
2718want Info documentation to be regenerated. Releases contain Info
2719documentation pre-built for the unmodified documentation in the release.
2720
f42974dc
DW
2721@section Building a native compiler
2722
f5c3bb4b
PB
2723For a native build, the default configuration is to perform
2724a 3-stage bootstrap of the compiler when @samp{make} is invoked.
2725This will build the entire GCC system and ensure that it compiles
2726itself correctly. It can be disabled with the @option{--disable-bootstrap}
2727parameter to @samp{configure}, but bootstrapping is suggested because
2728the compiler will be tested more completely and could also have
2729better performance.
2730
2731The bootstrapping process will complete the following steps:
f42974dc
DW
2732
2733@itemize @bullet
2734@item
80521187 2735Build tools necessary to build the compiler.
f42974dc
DW
2736
2737@item
cc11cc9b
PB
2738Perform a 3-stage bootstrap of the compiler. This includes building
2739three times the target tools for use by the compiler such as binutils
2740(bfd, binutils, gas, gprof, ld, and opcodes) if they have been
2741individually linked or moved into the top level GCC source tree before
2742configuring.
f42974dc
DW
2743
2744@item
2745Perform a comparison test of the stage2 and stage3 compilers.
2746
2747@item
2748Build runtime libraries using the stage3 compiler from the previous step.
f9047ed3 2749
f42974dc
DW
2750@end itemize
2751
38209993 2752If you are short on disk space you might consider @samp{make
cc11cc9b
PB
2753bootstrap-lean} instead. The sequence of compilation is the
2754same described above, but object files from the stage1 and
f42974dc
DW
2755stage2 of the 3-stage bootstrap of the compiler are deleted as
2756soon as they are no longer needed.
2757
1c8bd6a3
PB
2758If you wish to use non-default GCC flags when compiling the stage2
2759and stage3 compilers, set @code{BOOT_CFLAGS} on the command line when
2760doing @samp{make}. For example, if you want to save additional space
2761during the bootstrap and in the final installation as well, you can
2762build the compiler binaries without debugging information as in the
2763following example. This will save roughly 40% of disk space both for
2764the bootstrap and the final installation. (Libraries will still contain
2765debugging information.)
f42974dc 2766
3ab51846 2767@smallexample
98797784 2768make BOOT_CFLAGS='-O' bootstrap
3ab51846 2769@end smallexample
8c085f6f 2770
1c8bd6a3
PB
2771You can place non-default optimization flags into @code{BOOT_CFLAGS}; they
2772are less well tested here than the default of @samp{-g -O2}, but should
2773still work. In a few cases, you may find that you need to specify special
2774flags such as @option{-msoft-float} here to complete the bootstrap; or,
2775if the native compiler miscompiles the stage1 compiler, you may need
2776to work around this, by choosing @code{BOOT_CFLAGS} to avoid the parts
2777of the stage1 compiler that were miscompiled, or by using @samp{make
f85b8d1a
JM
2778bootstrap4} to increase the number of stages of bootstrap.
2779
1c8bd6a3
PB
2780@code{BOOT_CFLAGS} does not apply to bootstrapped target libraries.
2781Since these are always compiled with the compiler currently being
2782bootstrapped, you can use @code{CFLAGS_FOR_TARGET} to modify their
2783compilation flags, as for non-bootstrapped target libraries.
2784Again, if the native compiler miscompiles the stage1 compiler, you may
2785need to work around this by avoiding non-working parts of the stage1
4a4a4e99 2786compiler. Use @code{STAGE1_TFLAGS} to this end.
c872077c 2787
6cfb3f16 2788If you used the flag @option{--enable-languages=@dots{}} to restrict
f42974dc 2789the compilers to be built, only those you've actually enabled will be
767094dd 2790built. This will of course only build those runtime libraries, for
f42974dc 2791which the particular compiler has been built. Please note,
cc11cc9b 2792that re-defining @env{LANGUAGES} when calling @samp{make}
ef88b07d 2793@strong{does not} work anymore!
f42974dc 2794
f85b8d1a 2795If the comparison of stage2 and stage3 fails, this normally indicates
eea81d3e 2796that the stage2 compiler has compiled GCC incorrectly, and is therefore
f85b8d1a
JM
2797a potentially serious bug which you should investigate and report. (On
2798a few systems, meaningful comparison of object files is impossible; they
2799always appear ``different''. If you encounter this problem, you will
2800need to disable comparison in the @file{Makefile}.)
f42974dc 2801
cc11cc9b
PB
2802If you do not want to bootstrap your compiler, you can configure with
2803@option{--disable-bootstrap}. In particular cases, you may want to
2804bootstrap your compiler even if the target system is not the same as
2805the one you are building on: for example, you could build a
2806@code{powerpc-unknown-linux-gnu} toolchain on a
2807@code{powerpc64-unknown-linux-gnu} host. In this case, pass
2808@option{--enable-bootstrap} to the configure script.
2809
e12c4094
AO
2810@code{BUILD_CONFIG} can be used to bring in additional customization
2811to the build. It can be set to a whitespace-separated list of names.
2812For each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will
2813be included by the top-level @file{Makefile}, bringing in any settings
2814it contains. The default @code{BUILD_CONFIG} can be set using the
2815configure option @option{--with-build-config=@code{NAME}...}. Some
2816examples of supported build configurations are:
4a4a4e99
AO
2817
2818@table @asis
2819@item @samp{bootstrap-O1}
2820Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds
2821@option{-O1} to it. @samp{BUILD_CONFIG=bootstrap-O1} is equivalent to
2822@samp{BOOT_CFLAGS='-g -O1'}.
2823
2824@item @samp{bootstrap-O3}
8849d503 2825@itemx @samp{bootstrap-Og}
4a4a4e99
AO
2826Analogous to @code{bootstrap-O1}.
2827
339325b3
AO
2828@item @samp{bootstrap-lto}
2829Enables Link-Time Optimization for host tools during bootstrapping.
2830@samp{BUILD_CONFIG=bootstrap-lto} is equivalent to adding
871fe673 2831@option{-flto} to @samp{BOOT_CFLAGS}. This option assumes that the host
630ba2fd 2832supports the linker plugin (e.g.@: GNU ld version 2.21 or later or GNU gold
871fe673
UB
2833version 2.21 or later).
2834
2835@item @samp{bootstrap-lto-noplugin}
2836This option is similar to @code{bootstrap-lto}, but is intended for
47eec994
GP
2837hosts that do not support the linker plugin. Without the linker plugin
2838static libraries are not compiled with link-time optimizations. Since
2839the GCC middle end and back end are in @file{libbackend.a} this means
2840that only the front end is actually LTO optimized.
339325b3 2841
1c67e69c
ML
2842@item @samp{bootstrap-lto-lean}
2843This option is similar to @code{bootstrap-lto}, but is intended for
2844faster build by only using LTO in the final bootstrap stage.
2845With @samp{make profiledbootstrap} the LTO frontend
2846is trained only on generator files.
2847
4a4a4e99 2848@item @samp{bootstrap-debug}
b5b8b0ac 2849Verifies that the compiler generates the same executable code, whether
e12c4094
AO
2850or not it is asked to emit debug information. To this end, this
2851option builds stage2 host programs without debug information, and uses
b5b8b0ac
AO
2852@file{contrib/compare-debug} to compare them with the stripped stage3
2853object files. If @code{BOOT_CFLAGS} is overridden so as to not enable
2854debug information, stage2 will have it, and stage3 won't. This option
e12c4094
AO
2855is enabled by default when GCC bootstrapping is enabled, if
2856@code{strip} can turn object files compiled with and without debug
2857info into identical object files. In addition to better test
2858coverage, this option makes default bootstraps faster and leaner.
b5b8b0ac
AO
2859
2860@item @samp{bootstrap-debug-big}
e12c4094
AO
2861Rather than comparing stripped object files, as in
2862@code{bootstrap-debug}, this option saves internal compiler dumps
2863during stage2 and stage3 and compares them as well, which helps catch
2864additional potential problems, but at a great cost in terms of disk
2865space. It can be specified in addition to @samp{bootstrap-debug}.
b5b8b0ac
AO
2866
2867@item @samp{bootstrap-debug-lean}
2868This option saves disk space compared with @code{bootstrap-debug-big},
2869but at the expense of some recompilation. Instead of saving the dumps
2870of stage2 and stage3 until the final compare, it uses
2871@option{-fcompare-debug} to generate, compare and remove the dumps
2872during stage3, repeating the compilation that already took place in
2873stage2, whose dumps were not saved.
2874
2875@item @samp{bootstrap-debug-lib}
2876This option tests executable code invariance over debug information
2877generation on target libraries, just like @code{bootstrap-debug-lean}
2878tests it on host programs. It builds stage3 libraries with
2879@option{-fcompare-debug}, and it can be used along with any of the
2880@code{bootstrap-debug} options above.
2881
2882There aren't @code{-lean} or @code{-big} counterparts to this option
2883because most libraries are only build in stage3, so bootstrap compares
2884would not get significant coverage. Moreover, the few libraries built
2885in stage2 are used in stage3 host programs, so we wouldn't want to
2886compile stage2 libraries with different options for comparison purposes.
2887
2888@item @samp{bootstrap-debug-ckovw}
2889Arranges for error messages to be issued if the compiler built on any
2890stage is run without the option @option{-fcompare-debug}. This is
2891useful to verify the full @option{-fcompare-debug} testing coverage. It
2892must be used along with @code{bootstrap-debug-lean} and
2893@code{bootstrap-debug-lib}.
2894
c58a9f35
L
2895@item @samp{bootstrap-cet}
2896This option enables Intel CET for host tools during bootstrapping.
2897@samp{BUILD_CONFIG=bootstrap-cet} is equivalent to adding
48f64e05 2898@option{-fcf-protection} to @samp{BOOT_CFLAGS}. This option
630ba2fd 2899assumes that the host supports Intel CET (e.g.@: GNU assembler version
c58a9f35
L
29002.30 or later).
2901
b5b8b0ac
AO
2902@item @samp{bootstrap-time}
2903Arranges for the run time of each program started by the GCC driver,
2904built in any stage, to be logged to @file{time.log}, in the top level of
2905the build tree.
4a4a4e99 2906
4a8c5435
MM
2907@item @samp{bootstrap-asan}
2908Compiles GCC itself using Address Sanitization in order to catch invalid memory
2909accesses within the GCC code.
2910
170e618e
MM
2911@item @samp{bootstrap-hwasan}
2912Compiles GCC itself using HWAddress Sanitization in order to catch invalid
2913memory accesses within the GCC code. This option is only available on AArch64
2914systems that are running Linux kernel version 5.4 or later.
2915
4a4a4e99 2916@end table
cc11cc9b 2917
f42974dc
DW
2918@section Building a cross compiler
2919
f42974dc
DW
2920When building a cross compiler, it is not generally possible to do a
29213-stage bootstrap of the compiler. This makes for an interesting problem
161d7b59 2922as parts of GCC can only be built with GCC@.
f42974dc 2923
0b70519f 2924To build a cross compiler, we recommend first building and installing a
f42974dc 2925native compiler. You can then use the native GCC compiler to build the
635771af
JM
2926cross compiler. The installed native compiler needs to be GCC version
29272.95 or later.
f42974dc
DW
2928
2929Assuming you have already installed a native copy of GCC and configured
6cfb3f16 2930your cross compiler, issue the command @command{make}, which performs the
f42974dc
DW
2931following steps:
2932
2933@itemize @bullet
2934@item
80521187 2935Build host tools necessary to build the compiler.
f42974dc
DW
2936
2937@item
2938Build target tools for use by the compiler such as binutils (bfd,
2939binutils, gas, gprof, ld, and opcodes)
2940if they have been individually linked or moved into the top level GCC source
2941tree before configuring.
2942
2943@item
2944Build the compiler (single stage only).
2945
2946@item
2947Build runtime libraries using the compiler from the previous step.
2948@end itemize
2949
2950Note that if an error occurs in any step the make process will exit.
2951
01e97976
JM
2952If you are not building GNU binutils in the same source tree as GCC,
2953you will need a cross-assembler and cross-linker installed before
2954configuring GCC@. Put them in the directory
2955@file{@var{prefix}/@var{target}/bin}. Here is a table of the tools
2956you should put in this directory:
2957
2958@table @file
2959@item as
2960This should be the cross-assembler.
2961
2962@item ld
2963This should be the cross-linker.
2964
2965@item ar
2966This should be the cross-archiver: a program which can manipulate
2967archive files (linker libraries) in the target machine's format.
2968
2969@item ranlib
2970This should be a program to construct a symbol table in an archive file.
2971@end table
2972
2973The installation of GCC will find these programs in that directory,
2974and copy or link them to the proper place to for the cross-compiler to
2975find them when run later.
2976
2977The easiest way to provide these files is to build the Binutils package.
2978Configure it with the same @option{--host} and @option{--target}
2979options that you use for configuring GCC, then build and install
2980them. They install their executables automatically into the proper
2981directory. Alas, they do not support all the targets that GCC
2982supports.
2983
2984If you are not building a C library in the same source tree as GCC,
2985you should also provide the target libraries and headers before
2986configuring GCC, specifying the directories with
2987@option{--with-sysroot} or @option{--with-headers} and
2988@option{--with-libs}. Many targets also require ``start files'' such
2989as @file{crt0.o} and
2990@file{crtn.o} which are linked into each executable. There may be several
2991alternatives for @file{crt0.o}, for use with profiling or other
2992compilation options. Check your target's definition of
2993@code{STARTFILE_SPEC} to find out what start files it uses.
2994
f42974dc
DW
2995@section Building in parallel
2996
0b70519f 2997GNU Make 3.80 and above, which is necessary to build GCC, support
d7f755c3 2998building in parallel. To activate this, you can use @samp{make -j 2}
ff2ce160 2999instead of @samp{make}. You can also specify a bigger number, and
cc11cc9b
PB
3000in most cases using a value greater than the number of processors in
3001your machine will result in fewer and shorter I/O latency hits, thus
3002improving overall throughput; this is especially true for slow drives
3003and network filesystems.
f42974dc 3004
e23381df
GB
3005@section Building the Ada compiler
3006
903a9d25
AC
3007@ifnothtml
3008@ref{GNAT-prerequisite}.
3009@end ifnothtml
3010@ifhtml
dd2f3208 3011@uref{prerequisites.html#GNAT-prerequisite,,GNAT prerequisites}.
903a9d25 3012@end ifhtml
e397a9f1 3013
d376b73a
IB
3014@section Building the D compiler
3015
3016@ifnothtml
3017@ref{GDC-prerequisite}.
3018@end ifnothtml
3019@ifhtml
3020@uref{prerequisites.html#GDC-prerequisite,,GDC prerequisites}.
3021@end ifhtml
3022
8f231b5d
JH
3023@section Building with profile feedback
3024
3025It is possible to use profile feedback to optimize the compiler itself. This
3026should result in a faster compiler binary. Experiments done on x86 using gcc
30273.3 showed approximately 7 percent speedup on compiling C programs. To
cc11cc9b 3028bootstrap the compiler with profile feedback, use @code{make profiledbootstrap}.
8f231b5d
JH
3029
3030When @samp{make profiledbootstrap} is run, it will first build a @code{stage1}
3031compiler. This compiler is used to build a @code{stageprofile} compiler
3032instrumented to collect execution counts of instruction and branch
0d053a49
ML
3033probabilities. Training run is done by building @code{stagetrain}
3034compiler. Finally a @code{stagefeedback} compiler is built
3035using the information collected.
8f231b5d 3036
cc11cc9b 3037Unlike standard bootstrap, several additional restrictions apply. The
8f231b5d 3038compiler used to build @code{stage1} needs to support a 64-bit integral type.
167c3e96 3039It is recommended to only use GCC for this.
8f231b5d 3040
277d7ee0
AK
3041On Linux/x86_64 hosts with some restrictions (no virtualization) it is
3042also possible to do autofdo build with @samp{make
3043autoprofiledback}. This uses Linux perf to sample branches in the
3044binary and then rebuild it with feedback derived from the profile.
3045Linux perf and the @code{autofdo} toolkit needs to be installed for
3046this.
3047
3048Only the profile from the current build is used, so when an error
3049occurs it is recommended to clean before restarting. Otherwise
3050the code quality may be much worse.
3051
f42974dc 3052@html
b8db17af 3053<hr />
f42974dc
DW
3054<p>
3055@end html
3056@ifhtml
3057@uref{./index.html,,Return to the GCC Installation page}
3058@end ifhtml
3059@end ifset
3060
3061@c ***Testing*****************************************************************
6cfb3f16 3062@ifnothtml
f42974dc
DW
3063@comment node-name, next, previous, up
3064@node Testing, Final install, Building, Installing GCC
6cfb3f16 3065@end ifnothtml
f42974dc 3066@ifset testhtml
f42974dc
DW
3067@ifnothtml
3068@chapter Installing GCC: Testing
3069@end ifnothtml
3070@cindex Testing
3071@cindex Installing GCC: Testing
3072@cindex Testsuite
3073
f97903cc
JJ
3074Before you install GCC, we encourage you to run the testsuites and to
3075compare your results with results from a similar configuration that have
3076been submitted to the
786973ce 3077@uref{https://gcc.gnu.org/ml/gcc-testresults/,,gcc-testresults mailing list}.
05253aed 3078Some of these archived results are linked from the build status lists
786973ce 3079at @uref{https://gcc.gnu.org/buildstat.html}, although not everyone who
05253aed 3080reports a successful build runs the testsuites and submits the results.
f97903cc
JJ
3081This step is optional and may require you to download additional software,
3082but it can give you confidence in your new GCC installation or point out
8a36672b 3083problems before you install and start using your new GCC@.
f42974dc 3084
f9047ed3 3085First, you must have @uref{download.html,,downloaded the testsuites}.
f97903cc
JJ
3086These are part of the full distribution, but if you downloaded the
3087``core'' compiler plus any front ends, you must download the testsuites
3088separately.
f42974dc 3089
f97903cc 3090Second, you must have the testing tools installed. This includes
786973ce 3091@uref{https://www.gnu.org/software/dejagnu/,,DejaGnu}, Tcl, and Expect;
900b1c27
ML
3092the DejaGnu site has links to these.
3093Some optional tests also require Python3 and pytest module.
f42974dc 3094
8cacda7c
GP
3095If the directories where @command{runtest} and @command{expect} were
3096installed are not in the @env{PATH}, you may need to set the following
3097environment variables appropriately, as in the following example (which
3098assumes that DejaGnu has been installed under @file{/usr/local}):
f42974dc 3099
3ab51846 3100@smallexample
98797784
RW
3101TCL_LIBRARY = /usr/local/share/tcl8.0
3102DEJAGNULIBS = /usr/local/share/dejagnu
3ab51846 3103@end smallexample
f42974dc 3104
8cacda7c 3105(On systems such as Cygwin, these paths are required to be actual
f42974dc 3106paths, not mounts or links; presumably this is due to some lack of
8cacda7c 3107portability in the DejaGnu code.)
ecb7d6b3 3108
f42974dc
DW
3109
3110Finally, you can run the testsuite (which may take a long time):
3ab51846 3111@smallexample
98797784 3112cd @var{objdir}; make -k check
3ab51846 3113@end smallexample
f42974dc 3114
794aca5d
WB
3115This will test various components of GCC, such as compiler
3116front ends and runtime libraries. While running the testsuite, DejaGnu
3117might emit some harmless messages resembling
daf2f129 3118@samp{WARNING: Couldn't find the global config file.} or
794aca5d 3119@samp{WARNING: Couldn't find tool init file} that can be ignored.
06809951 3120
82161911 3121If you are testing a cross-compiler, you may want to run the testsuite
786973ce 3122on a simulator as described at @uref{https://gcc.gnu.org/simtest-howto.html}.
82161911 3123
962e6e00 3124@section How can you run the testsuite on selected tests?
f42974dc 3125
794aca5d 3126In order to run sets of tests selectively, there are targets
6c6b6634 3127@samp{make check-gcc} and language specific @samp{make check-c},
b4c522fa 3128@samp{make check-c++}, @samp{make check-d} @samp{make check-fortran},
6c6b6634
BRF
3129@samp{make check-ada}, @samp{make check-objc}, @samp{make check-obj-c++},
3130@samp{make check-lto}
794aca5d
WB
3131in the @file{gcc} subdirectory of the object directory. You can also
3132just run @samp{make check} in a subdirectory of the object directory.
3133
3134
3135A more selective way to just run all @command{gcc} execute tests in the
3136testsuite is to use
f42974dc 3137
3ab51846 3138@smallexample
98797784 3139make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
3ab51846 3140@end smallexample
f42974dc 3141
794aca5d
WB
3142Likewise, in order to run only the @command{g++} ``old-deja'' tests in
3143the testsuite with filenames matching @samp{9805*}, you would use
f42974dc 3144
3ab51846 3145@smallexample
98797784 3146make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
3ab51846 3147@end smallexample
f42974dc 3148
d35bcdd4
DS
3149The file-matching expression following @var{filename}@command{.exp=} is treated
3150as a series of whitespace-delimited glob expressions so that multiple patterns
3151may be passed, although any whitespace must either be escaped or surrounded by
3152single quotes if multiple expressions are desired. For example,
3153
3154@smallexample
3155make check-g++ RUNTESTFLAGS="old-deja.exp=9805*\ virtual2.c @var{other-options}"
3156make check-g++ RUNTESTFLAGS="'old-deja.exp=9805* virtual2.c' @var{other-options}"
3157@end smallexample
3158
6cfb3f16
JM
3159The @file{*.exp} files are located in the testsuite directories of the GCC
3160source, the most important ones being @file{compile.exp},
3161@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}.
3162To get a list of the possible @file{*.exp} files, pipe the
38209993 3163output of @samp{make check} into a file and look at the
6cfb3f16 3164@samp{Running @dots{} .exp} lines.
f42974dc 3165
e08737dc
PE
3166@section Passing options and running multiple testsuites
3167
3168You can pass multiple options to the testsuite using the
3169@samp{--target_board} option of DejaGNU, either passed as part of
3170@samp{RUNTESTFLAGS}, or directly to @command{runtest} if you prefer to
3171work outside the makefiles. For example,
3172
3ab51846 3173@smallexample
98797784 3174make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
3ab51846 3175@end smallexample
e08737dc
PE
3176
3177will run the standard @command{g++} testsuites (``unix'' is the target name
3178for a standard native testsuite situation), passing
311c6da4 3179@samp{-O3 -fmerge-constants} to the compiler on every test, i.e.,
e08737dc
PE
3180slashes separate options.
3181
3182You can run the testsuites multiple times using combinations of options
3183with a syntax similar to the brace expansion of popular shells:
3184
3ab51846 3185@smallexample
98797784 3186@dots{}"--target_board=arm-sim\@{-mhard-float,-msoft-float\@}\@{-O1,-O2,-O3,\@}"
3ab51846 3187@end smallexample
e08737dc
PE
3188
3189(Note the empty option caused by the trailing comma in the final group.)
3190The following will run each testsuite eight times using the @samp{arm-sim}
3191target, as if you had specified all possible combinations yourself:
3192
3ab51846 3193@smallexample
5f11ec71
SE
3194--target_board='arm-sim/-mhard-float/-O1 \
3195 arm-sim/-mhard-float/-O2 \
3196 arm-sim/-mhard-float/-O3 \
3197 arm-sim/-mhard-float \
3198 arm-sim/-msoft-float/-O1 \
3199 arm-sim/-msoft-float/-O2 \
3200 arm-sim/-msoft-float/-O3 \
3201 arm-sim/-msoft-float'
3ab51846 3202@end smallexample
e08737dc
PE
3203
3204They can be combined as many times as you wish, in arbitrary ways. This
3205list:
3206
3ab51846 3207@smallexample
98797784 3208@dots{}"--target_board=unix/-Wextra\@{-O3,-fno-strength\@}\@{-fomit-frame,\@}"
3ab51846 3209@end smallexample
e08737dc
PE
3210
3211will generate four combinations, all involving @samp{-Wextra}.
3212
3213The disadvantage to this method is that the testsuites are run in serial,
3214which is a waste on multiprocessor systems. For users with GNU Make and
3215a shell which performs brace expansion, you can run the testsuites in
3216parallel by having the shell perform the combinations and @command{make}
3217do the parallel runs. Instead of using @samp{--target_board}, use a
3218special makefile target:
3219
3ab51846 3220@smallexample
98797784 3221make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
3ab51846 3222@end smallexample
e08737dc
PE
3223
3224For example,
3225
3ab51846 3226@smallexample
98797784 3227make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
3ab51846 3228@end smallexample
e08737dc
PE
3229
3230will run three concurrent ``make-gcc'' testsuites, eventually testing all
3231ten combinations as described above. Note that this is currently only
3232supported in the @file{gcc} subdirectory. (To see how this works, try
3233typing @command{echo} before the example given here.)
3234
3235
f42974dc
DW
3236@section How to interpret test results
3237
794aca5d 3238The result of running the testsuite are various @file{*.sum} and @file{*.log}
767094dd 3239files in the testsuite subdirectories. The @file{*.log} files contain a
f42974dc 3240detailed log of the compiler invocations and the corresponding
daf2f129
JM
3241results, the @file{*.sum} files summarize the results. These summaries
3242contain status codes for all tests:
f42974dc
DW
3243
3244@itemize @bullet
3245@item
3246PASS: the test passed as expected
3247@item
3248XPASS: the test unexpectedly passed
3249@item
3250FAIL: the test unexpectedly failed
3251@item
3252XFAIL: the test failed as expected
3253@item
3254UNSUPPORTED: the test is not supported on this platform
3255@item
3256ERROR: the testsuite detected an error
3257@item
3258WARNING: the testsuite detected a possible problem
3259@end itemize
3260
38209993 3261It is normal for some tests to report unexpected failures. At the
962e6e00
JM
3262current time the testing harness does not allow fine grained control
3263over whether or not a test is expected to fail. This problem should
3264be fixed in future releases.
f42974dc
DW
3265
3266
3267@section Submitting test results
3268
3269If you want to report the results to the GCC project, use the
767094dd 3270@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
f42974dc 3271
3ab51846 3272@smallexample
98797784
RW
3273@var{srcdir}/contrib/test_summary -p your_commentary.txt \
3274 -m gcc-testresults@@gcc.gnu.org |sh
3ab51846 3275@end smallexample
f42974dc 3276
6cfb3f16 3277This script uses the @command{Mail} program to send the results, so
767094dd 3278make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
f42974dc 3279prepended to the testsuite summary and should contain any special
767094dd 3280remarks you have on your results or your build environment. Please
f42974dc 3281do not edit the testsuite result block or the subject line, as these
05c425a9 3282messages may be automatically processed.
f42974dc 3283
aed5964b 3284@html
b8db17af 3285<hr />
aed5964b
JM
3286<p>
3287@end html
3288@ifhtml
3289@uref{./index.html,,Return to the GCC Installation page}
3290@end ifhtml
f42974dc
DW
3291@end ifset
3292
3293@c ***Final install***********************************************************
6cfb3f16 3294@ifnothtml
f42974dc
DW
3295@comment node-name, next, previous, up
3296@node Final install, , Testing, Installing GCC
6cfb3f16 3297@end ifnothtml
f42974dc 3298@ifset finalinstallhtml
f42974dc
DW
3299@ifnothtml
3300@chapter Installing GCC: Final installation
3301@end ifnothtml
3302
eea81d3e 3303Now that GCC has been built (and optionally tested), you can install it with
3ab51846 3304@smallexample
455c8f48 3305cd @var{objdir} && make install
3ab51846 3306@end smallexample
f42974dc 3307
06809951 3308We strongly recommend to install into a target directory where there is
4b322f43
JB
3309no previous version of GCC present. Also, the GNAT runtime should not
3310be stripped, as this would break certain features of the debugger that
3311depend on this debugging information (catching Ada exceptions for
3312instance).
06809951 3313
f42974dc 3314That step completes the installation of GCC; user level binaries can
8e5f33ff
GK
3315be found in @file{@var{prefix}/bin} where @var{prefix} is the value
3316you specified with the @option{--prefix} to configure (or
3317@file{/usr/local} by default). (If you specified @option{--bindir},
3318that directory will be used instead; otherwise, if you specified
3319@option{--exec-prefix}, @file{@var{exec-prefix}/bin} will be used.)
97a2feb6 3320Headers for the C++ library are installed in
8e5f33ff
GK
3321@file{@var{prefix}/include}; libraries in @file{@var{libdir}}
3322(normally @file{@var{prefix}/lib}); internal parts of the compiler in
3323@file{@var{libdir}/gcc} and @file{@var{libexecdir}/gcc}; documentation
3324in info format in @file{@var{infodir}} (normally
3325@file{@var{prefix}/info}).
f42974dc 3326
53b50ac1
CC
3327When installing cross-compilers, GCC's executables
3328are not only installed into @file{@var{bindir}}, that
3329is, @file{@var{exec-prefix}/bin}, but additionally into
3330@file{@var{exec-prefix}/@var{target-alias}/bin}, if that directory
3331exists. Typically, such @dfn{tooldirs} hold target-specific
3332binutils, including assembler and linker.
3333
3334Installation into a temporary staging area or into a @command{chroot}
3335jail can be achieved with the command
3336
3ab51846 3337@smallexample
53b50ac1 3338make DESTDIR=@var{path-to-rootdir} install
3ab51846 3339@end smallexample
53b50ac1 3340
455c8f48
RW
3341@noindent
3342where @var{path-to-rootdir} is the absolute path of
53b50ac1
CC
3343a directory relative to which all installation paths will be
3344interpreted. Note that the directory specified by @code{DESTDIR}
3345need not exist yet; it will be created if necessary.
3346
3347There is a subtle point with tooldirs and @code{DESTDIR}:
3348If you relocate a cross-compiler installation with
3349e.g.@: @samp{DESTDIR=@var{rootdir}}, then the directory
3350@file{@var{rootdir}/@var{exec-prefix}/@var{target-alias}/bin} will
3351be filled with duplicated GCC executables only if it already exists,
3352it will not be created otherwise. This is regarded as a feature,
3353not as a bug, because it gives slightly more control to the packagers
3354using the @code{DESTDIR} feature.
3355
455c8f48
RW
3356You can install stripped programs and libraries with
3357
3358@smallexample
3359make install-strip
3360@end smallexample
3361
cc11cc9b 3362If you are bootstrapping a released version of GCC then please
f97a5bda 3363quickly review the build status page for your release, available from
786973ce 3364@uref{https://gcc.gnu.org/buildstat.html}.
c5997381
JJ
3365If your system is not listed for the version of GCC that you built,
3366send a note to
eea81d3e 3367@email{gcc@@gcc.gnu.org} indicating
8a36672b 3368that you successfully built and installed GCC@.
c5997381 3369Include the following information:
f42974dc 3370
c5997381
JJ
3371@itemize @bullet
3372@item
962e6e00 3373Output from running @file{@var{srcdir}/config.guess}. Do not send
c5997381
JJ
3374that file itself, just the one-line output from running it.
3375
3376@item
2dd76960 3377The output of @samp{gcc -v} for your newly installed @command{gcc}.
c5997381
JJ
3378This tells us which version of GCC you built and the options you passed to
3379configure.
3380
2b46bc67
JJ
3381@item
3382Whether you enabled all languages or a subset of them. If you used a
3383full distribution then this information is part of the configure
3384options in the output of @samp{gcc -v}, but if you downloaded the
3385``core'' compiler plus additional front ends then it isn't apparent
3386which ones you built unless you tell us about it.
3387
c5997381
JJ
3388@item
3389If the build was for GNU/Linux, also include:
3390@itemize @bullet
3391@item
3392The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
3393this information should be available from @file{/etc/issue}.
3394
3395@item
3396The version of the Linux kernel, available from @samp{uname --version}
3397or @samp{uname -a}.
3398
3399@item
3400The version of glibc you used; for RPM-based systems like Red Hat,
b9da07da
JJ
3401Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version,
3402and on systems like Debian and Progeny use @samp{dpkg -l libc6}.
c5997381
JJ
3403@end itemize
3404For other systems, you can include similar information if you think it is
3405relevant.
3406
3407@item
3408Any other information that you think would be useful to people building
3409GCC on the same configuration. The new entry in the build status list
3410will include a link to the archived copy of your message.
3411@end itemize
c009f01f
JJ
3412
3413We'd also like to know if the
3414@ifnothtml
3415@ref{Specific, host/target specific installation notes}
3416@end ifnothtml
3417@ifhtml
3418@uref{specific.html,,host/target specific installation notes}
3419@end ifhtml
3420didn't include your host/target information or if that information is
3421incomplete or out of date. Send a note to
962e6e00 3422@email{gcc@@gcc.gnu.org} detailing how the information should be changed.
f42974dc 3423
962e6e00 3424If you find a bug, please report it following the
c08766bc 3425@uref{../bugs/,,bug reporting guidelines}.
f42974dc 3426
ab130aa5 3427If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
7326a39e 3428dvi}. You will need to have @command{texi2dvi} (version at least 4.7)
ab130aa5
JM
3429and @TeX{} installed. This creates a number of @file{.dvi} files in
3430subdirectories of @file{@var{objdir}}; these may be converted for
cc5c2741
BM
3431printing with programs such as @command{dvips}. Alternately, by using
3432@samp{make pdf} in place of @samp{make dvi}, you can create documentation
3433in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
3434is included with Texinfo version 4.8 and later. You can also
545808ee 3435@uref{https://shop.fsf.org/,,buy printed manuals from the
ab130aa5 3436Free Software Foundation}, though such manuals may not be for the most
161d7b59 3437recent version of GCC@.
ab130aa5 3438
9d65c5cb 3439If you would like to generate online HTML documentation, do @samp{cd
f995c51f
JW
3440@var{objdir}; make html} and HTML will be generated for the gcc manuals in
3441@file{@var{objdir}/gcc/HTML}.
9d65c5cb 3442
f42974dc 3443@html
b8db17af 3444<hr />
f42974dc
DW
3445<p>
3446@end html
3447@ifhtml
3448@uref{./index.html,,Return to the GCC Installation page}
3449@end ifhtml
3450@end ifset
3451
3452@c ***Binaries****************************************************************
6cfb3f16 3453@ifnothtml
f42974dc
DW
3454@comment node-name, next, previous, up
3455@node Binaries, Specific, Installing GCC, Top
6cfb3f16 3456@end ifnothtml
f42974dc 3457@ifset binarieshtml
f42974dc
DW
3458@ifnothtml
3459@chapter Installing GCC: Binaries
3460@end ifnothtml
3461@cindex Binaries
3462@cindex Installing GCC: Binaries
3463
161d7b59 3464We are often asked about pre-compiled versions of GCC@. While we cannot
f42974dc
DW
3465provide these for all platforms, below you'll find links to binaries for
3466various platforms where creating them by yourself is not easy due to various
3467reasons.
3468
3469Please note that we did not create these binaries, nor do we
3470support them. If you have any problems installing them, please
3471contact their makers.
3472
3473@itemize
3474@item
df002c7d
DE
3475AIX:
3476@itemize
3477@item
50b43b86 3478@uref{http://www.bullfreeware.com,,Bull's Open Source Software Archive for
4fd9efc8 3479for AIX 6 and AIX 7};
df002c7d
DE
3480
3481@item
50b43b86
FXC
3482@uref{http://www.perzl.org/aix/,,AIX Open Source Packages (AIX5L AIX 6.1
3483AIX 7.1)}.
df002c7d 3484@end itemize
f42974dc
DW
3485
3486@item
8d5362b7
GP
3487DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP}.
3488
f404402c
MW
3489@item
3490HP-UX:
3491@itemize
f42974dc 3492@item
58735e03 3493@uref{http://hpux.connect.org.uk/,,HP-UX Porting Center};
f404402c
MW
3494@end itemize
3495
8d5362b7 3496@item
58735e03
TC
3497Solaris 2 (SPARC, Intel):
3498@itemize
58735e03 3499@item
845d9d1a 3500@uref{https://www.opencsw.org/,,OpenCSW}
58735e03 3501@end itemize
f42974dc 3502
30329066
FXC
3503@item
3504macOS:
3505@itemize
3506@item
3507The @uref{https://brew.sh,,Homebrew} package manager;
3508@item
3509@uref{https://www.macports.org,,MacPorts}.
3510@end itemize
3511
f42974dc 3512@item
05c425a9 3513Microsoft Windows:
f42974dc
DW
3514@itemize
3515@item
2139a88a 3516The @uref{https://sourceware.org/cygwin/,,Cygwin} project;
f42974dc 3517@item
640ae312 3518The @uref{https://osdn.net/projects/mingw/,,MinGW} and
47d48991 3519@uref{https://www.mingw-w64.org/,,mingw-w64} projects.
f42974dc
DW
3520@end itemize
3521
6512c54a
GP
3522@item
3523@uref{http://www.openpkg.org/,,OpenPKG} offers binaries for quite a
3524number of platforms.
eae50c87
PB
3525
3526@item
786973ce 3527The @uref{https://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has
92922512 3528links to GNU Fortran binaries for several platforms.
f42974dc
DW
3529@end itemize
3530
f42974dc 3531@html
b8db17af 3532<hr />
f42974dc
DW
3533<p>
3534@end html
3535@ifhtml
3536@uref{./index.html,,Return to the GCC Installation page}
3537@end ifhtml
3538@end ifset
3539
3540@c ***Specific****************************************************************
6cfb3f16 3541@ifnothtml
f42974dc 3542@comment node-name, next, previous, up
431d26e1 3543@node Specific, GNU Free Documentation License, Binaries, Top
6cfb3f16 3544@end ifnothtml
f42974dc 3545@ifset specifichtml
f42974dc
DW
3546@ifnothtml
3547@chapter Host/target specific installation notes for GCC
3548@end ifnothtml
3549@cindex Specific
3550@cindex Specific installation notes
3551@cindex Target specific installation
3552@cindex Host specific installation
3553@cindex Target specific installation notes
3554
3555Please read this document carefully @emph{before} installing the
3556GNU Compiler Collection on your machine.
3557
c9936427
DD
3558Note that this list of install notes is @emph{not} a list of supported
3559hosts or targets. Not all supported hosts and targets are listed
3560here, only the ones that require host-specific or target-specific
a66217a0 3561information have to.
c9936427 3562
ef88b07d 3563@ifhtml
f42974dc
DW
3564@itemize
3565@item
4fb1c8f9
JG
3566@uref{#aarch64-x-x,,aarch64*-*-*}
3567@item
5a4c9b10 3568@uref{#alpha-x-x,,alpha*-*-*}
f42974dc 3569@item
ccd1242e 3570@uref{#amd64-x-solaris2,,amd64-*-solaris2*}
fbdd5d87 3571@item
9094e001 3572@uref{#arm-x-eabi,,arm-*-eabi}
b8df899a 3573@item
f42974dc
DW
3574@uref{#avr,,avr}
3575@item
0d4a78eb
BS
3576@uref{#bfin,,Blackfin}
3577@item
f42974dc
DW
3578@uref{#dos,,DOS}
3579@item
5a4c9b10 3580@uref{#x-x-freebsd,,*-*-freebsd*}
021c4bfd 3581@item
f42974dc
DW
3582@uref{#h8300-hms,,h8300-hms}
3583@item
5a4c9b10 3584@uref{#hppa-hp-hpux,,hppa*-hp-hpux*}
f42974dc 3585@item
5a4c9b10 3586@uref{#hppa-hp-hpux10,,hppa*-hp-hpux10}
f42974dc 3587@item
5a4c9b10 3588@uref{#hppa-hp-hpux11,,hppa*-hp-hpux11}
f42974dc 3589@item
5a4c9b10 3590@uref{#x-x-linux-gnu,,*-*-linux-gnu}
f42974dc 3591@item
5a4c9b10 3592@uref{#ix86-x-linux,,i?86-*-linux*}
f42974dc 3593@item
ccd1242e 3594@uref{#ix86-x-solaris2,,i?86-*-solaris2*}
8f47c084 3595@item
5a4c9b10 3596@uref{#ia64-x-linux,,ia64-*-linux}
b8df899a 3597@item
5a4c9b10 3598@uref{#ia64-x-hpux,,ia64-*-hpux*}
b499d9ab 3599@item
5a4c9b10 3600@uref{#x-ibm-aix,,*-ibm-aix*}
959a73a4 3601@item
5a4c9b10 3602@uref{#iq2000-x-elf,,iq2000-*-elf}
e3223ea2 3603@item
aa4945c1
JB
3604@uref{#lm32-x-elf,,lm32-*-elf}
3605@item
3606@uref{#lm32-x-uclinux,,lm32-*-uclinux}
3607@item
38b2d076
DD
3608@uref{#m32c-x-elf,,m32c-*-elf}
3609@item
5a4c9b10 3610@uref{#m32r-x-elf,,m32r-*-elf}
b8df899a 3611@item
183dc04b
RS
3612@uref{#m68k-x-x,,m68k-*-*}
3613@item
4529dbf1
RS
3614@uref{#m68k-uclinux,,m68k-uclinux}
3615@item
80920132
ME
3616@uref{#microblaze-x-elf,,microblaze-*-elf}
3617@item
5a4c9b10 3618@uref{#mips-x-x,,mips-*-*}
b8df899a 3619@item
d4fbc3ae
CJW
3620@uref{#nds32le-x-elf,,nds32le-*-elf}
3621@item
3622@uref{#nds32be-x-elf,,nds32be-*-elf}
3623@item
d7705288
TS
3624@uref{#nvptx-x-none,,nvptx-*-none}
3625@item
3965b35f
SH
3626@uref{#or1k-x-elf,,or1k-*-elf}
3627@item
3628@uref{#or1k-x-linux,,or1k-*-linux}
3629@item
cd985f66 3630@uref{#powerpc-x-x,,powerpc*-*-*}
4f2b1139 3631@item
5a4c9b10 3632@uref{#powerpc-x-darwin,,powerpc-*-darwin*}
b8df899a 3633@item
cd985f66 3634@uref{#powerpc-x-elf,,powerpc-*-elf}
f42974dc 3635@item
5a4c9b10 3636@uref{#powerpc-x-linux-gnu,,powerpc*-*-linux-gnu*}
edf1b3f3 3637@item
5a4c9b10 3638@uref{#powerpc-x-netbsd,,powerpc-*-netbsd*}
b8df899a 3639@item
5a4c9b10 3640@uref{#powerpc-x-eabisim,,powerpc-*-eabisim}
b8df899a 3641@item
5a4c9b10 3642@uref{#powerpc-x-eabi,,powerpc-*-eabi}
b8df899a 3643@item
cd985f66 3644@uref{#powerpcle-x-elf,,powerpcle-*-elf}
b8df899a 3645@item
5a4c9b10 3646@uref{#powerpcle-x-eabisim,,powerpcle-*-eabisim}
b8df899a 3647@item
5a4c9b10 3648@uref{#powerpcle-x-eabi,,powerpcle-*-eabi}
b8df899a 3649@item
3b82a32c
PD
3650@uref{#riscv32-x-elf,,riscv32-*-elf}
3651@item
3652@uref{#riscv32-x-linux,,riscv32-*-linux}
3653@item
3654@uref{#riscv64-x-elf,,riscv64-*-elf}
3655@item
3656@uref{#riscv64-x-linux,,riscv64-*-linux}
3657@item
5a4c9b10 3658@uref{#s390-x-linux,,s390-*-linux*}
91abf72d 3659@item
5a4c9b10 3660@uref{#s390x-x-linux,,s390x-*-linux*}
91abf72d 3661@item
5a4c9b10 3662@uref{#s390x-ibm-tpf,,s390x-ibm-tpf*}
8bf06993 3663@item
5a4c9b10 3664@uref{#x-x-solaris2,,*-*-solaris2*}
f42974dc 3665@item
d191cd06
EB
3666@uref{#sparc-x-x,,sparc*-*-*}
3667@item
5a4c9b10 3668@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*}
f42974dc 3669@item
5a4c9b10 3670@uref{#sparc-x-linux,,sparc-*-linux*}
c6fa9728 3671@item
5a4c9b10 3672@uref{#sparc64-x-solaris2,,sparc64-*-solaris2*}
f42974dc 3673@item
5a4c9b10 3674@uref{#sparcv9-x-solaris2,,sparcv9-*-solaris2*}
e403b4bc 3675@item
bcead286
BS
3676@uref{#c6x-x-x,,c6x-*-*}
3677@item
0969ec7d
EB
3678@uref{#visium-x-elf, visium-*-elf}
3679@item
5a4c9b10 3680@uref{#x-x-vxworks,,*-*-vxworks*}
4977bab6 3681@item
d8fcd085 3682@uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*}
7e081a0c 3683@item
ccd1242e 3684@uref{#x86-64-x-solaris2,,x86_64-*-solaris2*}
fbdd5d87 3685@item
6d656178 3686@uref{#xtensa-x-elf,,xtensa*-*-elf}
fd29f6ea 3687@item
6d656178 3688@uref{#xtensa-x-linux,,xtensa*-*-linux*}
fd29f6ea 3689@item
f42974dc
DW
3690@uref{#windows,,Microsoft Windows}
3691@item
aad416fb
AL
3692@uref{#x-x-cygwin,,*-*-cygwin}
3693@item
53e350d3 3694@uref{#x-x-mingw32,,*-*-mingw32}
aad416fb 3695@item
f42974dc
DW
3696@uref{#os2,,OS/2}
3697@item
3698@uref{#older,,Older systems}
3699@end itemize
3700
3701@itemize
3702@item
d8fcd085 3703@uref{#elf,,all ELF targets} (SVR4, Solaris 2, etc.)
f42974dc 3704@end itemize
ef88b07d 3705@end ifhtml
f42974dc
DW
3706
3707
3708@html
3709<!-- -------- host/target specific issues start here ---------------- -->
b8db17af 3710<hr />
f42974dc 3711@end html
4fb1c8f9
JG
3712@anchor{aarch64-x-x}
3713@heading aarch64*-*-*
3714Binutils pre 2.24 does not have support for selecting @option{-mabi} and
3715does not support ILP32. If it is used to build GCC 4.9 or later, GCC will
3716not support option @option{-mabi=ilp32}.
3717
3718To enable a workaround for the Cortex-A53 erratum number 835769 by default
3719(for all CPUs regardless of -mcpu option given) at configure time use the
3720@option{--enable-fix-cortex-a53-835769} option. This will enable the fix by
bf05ef76 3721default and can be explicitly disabled during compilation by passing the
4fb1c8f9
JG
3722@option{-mno-fix-cortex-a53-835769} option. Conversely,
3723@option{--disable-fix-cortex-a53-835769} will disable the workaround by
3724default. The workaround is disabled by default if neither of
3725@option{--enable-fix-cortex-a53-835769} or
3726@option{--disable-fix-cortex-a53-835769} is given at configure time.
3727
bf05ef76
YR
3728To enable a workaround for the Cortex-A53 erratum number 843419 by default
3729(for all CPUs regardless of -mcpu option given) at configure time use the
3730@option{--enable-fix-cortex-a53-843419} option. This workaround is applied at
3731link time. Enabling the workaround will cause GCC to pass the relevant option
3732to the linker. It can be explicitly disabled during compilation by passing the
3733@option{-mno-fix-cortex-a53-843419} option. Conversely,
3734@option{--disable-fix-cortex-a53-843419} will disable the workaround by default.
3735The workaround is disabled by default if neither of
3736@option{--enable-fix-cortex-a53-843419} or
3737@option{--disable-fix-cortex-a53-843419} is given at configure time.
3738
c7ff4f0f
SD
3739To enable Branch Target Identification Mechanism and Return Address Signing by
3740default at configure time use the @option{--enable-standard-branch-protection}
3741option. This is equivalent to having @option{-mbranch-protection=standard}
3742during compilation. This can be explicitly disabled during compilation by
3743passing the @option{-mbranch-protection=none} option which turns off all
3744types of branch protections. Conversely,
3745@option{--disable-standard-branch-protection} will disable both the
3746protections by default. This mechanism is turned off by default if neither
3747of the options are given at configure time.
3748
4fb1c8f9
JG
3749@html
3750<hr />
3751@end html
e2ebe1c2
UB
3752@anchor{alpha-x-x}
3753@heading alpha*-*-*
333e14b0 3754This section contains general configuration information for all
863db6b6 3755Alpha-based platforms using ELF@. In addition to reading this
f2541106 3756section, please read all other sections that match your target.
333e14b0 3757
fbdd5d87
RO
3758@html
3759<hr />
3760@end html
ccd1242e
RO
3761@anchor{amd64-x-solaris2}
3762@heading amd64-*-solaris2*
3763This is a synonym for @samp{x86_64-*-solaris2*}.
fbdd5d87 3764
1b7ee8b4
AS
3765@html
3766<hr />
3767@end html
a3586eeb
TB
3768@anchor{amdgcn-x-amdhsa}
3769@heading amdgcn-*-amdhsa
1b7ee8b4
AS
3770AMD GCN GPU target.
3771
3772Instead of GNU Binutils, you will need to install LLVM 6, or later, and copy
a3586eeb
TB
3773@file{bin/llvm-mc} to @file{amdgcn-amdhsa/bin/as},
3774@file{bin/lld} to @file{amdgcn-amdhsa/bin/ld},
3775@file{bin/llvm-nm} to @file{amdgcn-amdhsa/bin/nm}, and
3776@file{bin/llvm-ar} to both @file{bin/amdgcn-amdhsa-ar} and
3777@file{bin/amdgcn-amdhsa-ranlib}.
1b7ee8b4
AS
3778
3779Use Newlib (2019-01-16, or newer).
3780
3781To run the binaries, install the HSA Runtime from the
3782@uref{https://rocm.github.io,,ROCm Platform}, and use
a3586eeb 3783@file{libexec/gcc/amdhsa-amdhsa/@var{version}/gcn-run} to launch them
1b7ee8b4
AS
3784on the GPU.
3785
5d5f6720
JR
3786@html
3787<hr />
3788@end html
3789@anchor{arc-x-elf32}
3790@heading arc-*-elf32
3791
3792Use @samp{configure --target=arc-elf32 --with-cpu=@var{cpu} --enable-languages="c,c++"}
3793to configure GCC, with @var{cpu} being one of @samp{arc600}, @samp{arc601},
3794or @samp{arc700}@.
3795
3796@html
3797<hr />
3798@end html
3799@anchor{arc-linux-uclibc}
3800@heading arc-linux-uclibc
3801
3802Use @samp{configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"} to configure GCC@.
3803
b8df899a 3804@html
b8db17af 3805<hr />
b8df899a 3806@end html
e2ebe1c2
UB
3807@anchor{arm-x-eabi}
3808@heading arm-*-eabi
251daa19 3809ARM-family processors.
34e8290f 3810
2f7693bf
AL
3811Building the Ada frontend commonly fails (an infinite loop executing
3812@code{xsinfo}) if the host compiler is GNAT 4.8. Host compilers built from the
3813GNAT 4.6, 4.9 or 5 release branches are known to succeed.
3814
f42974dc 3815@html
b8db17af 3816<hr />
f42974dc 3817@end html
e2ebe1c2
UB
3818@anchor{avr}
3819@heading avr
b8df899a 3820ATMEL AVR-family micro controllers. These are used in embedded
ca52d046
GP
3821applications. There are no standard Unix configurations.
3822@ifnothtml
7f970b70 3823@xref{AVR Options,, AVR Options, gcc, Using the GNU Compiler
ca52d046
GP
3824Collection (GCC)},
3825@end ifnothtml
98999d8b 3826@ifhtml
ca52d046 3827See ``AVR Options'' in the main manual
98999d8b 3828@end ifhtml
ca52d046 3829for the list of supported MCU types.
b8df899a 3830
161d7b59 3831Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@.
f42974dc
DW
3832
3833Further installation notes and other useful information about AVR tools
3834can also be obtained from:
3835
3836@itemize @bullet
3837@item
1d7887ca 3838@uref{http://www.nongnu.org/avr/,,http://www.nongnu.org/avr/}
de7999ba 3839@item
d1a86812 3840@uref{http://www.amelek.gda.pl/avr/,,http://www.amelek.gda.pl/avr/}
f42974dc
DW
3841@end itemize
3842
f42974dc 3843The following error:
3ab51846 3844@smallexample
98797784 3845Error: register required
3ab51846 3846@end smallexample
f42974dc
DW
3847
3848indicates that you should upgrade to a newer version of the binutils.
3849
0d4a78eb
BS
3850@html
3851<hr />
3852@end html
e2ebe1c2
UB
3853@anchor{bfin}
3854@heading Blackfin
0d4a78eb
BS
3855The Blackfin processor, an Analog Devices DSP.
3856@ifnothtml
7f970b70
AM
3857@xref{Blackfin Options,, Blackfin Options, gcc, Using the GNU Compiler
3858Collection (GCC)},
0d4a78eb
BS
3859@end ifnothtml
3860@ifhtml
3861See ``Blackfin Options'' in the main manual
3862@end ifhtml
3863
3864More information, and a version of binutils with support for this processor,
77c64c34 3865are available at @uref{https://sourceforge.net/projects/adi-toolchain/}.
0d4a78eb 3866
b25364a0
S
3867@html
3868<hr />
3869@end html
e2ebe1c2
UB
3870@anchor{cr16}
3871@heading CR16
3872The CR16 CompactRISC architecture is a 16-bit architecture. This
3873architecture is used in embedded applications.
b25364a0
S
3874
3875@ifnothtml
3876@xref{CR16 Options,, CR16 Options, gcc, Using and Porting the GNU Compiler
3877Collection (GCC)},
3878@end ifnothtml
3879
3880@ifhtml
3881See ``CR16 Options'' in the main manual for a list of CR16-specific options.
3882@end ifhtml
3883
3884Use @samp{configure --target=cr16-elf --enable-languages=c,c++} to configure
3885GCC@ for building a CR16 elf cross-compiler.
3886
e2ebe1c2
UB
3887Use @samp{configure --target=cr16-uclinux --enable-languages=c,c++} to
3888configure GCC@ for building a CR16 uclinux cross-compiler.
b25364a0 3889
0b85d816 3890@html
b8db17af 3891<hr />
0b85d816 3892@end html
e2ebe1c2
UB
3893@anchor{cris}
3894@heading CRIS
d2a0a5d4
HPN
3895CRIS is a CPU architecture in Axis Communications systems-on-a-chip, for
3896example the ETRAX series. These are used in embedded applications.
0b85d816
HPN
3897
3898@ifnothtml
7f970b70 3899@xref{CRIS Options,, CRIS Options, gcc, Using the GNU Compiler
0b85d816
HPN
3900Collection (GCC)},
3901@end ifnothtml
3902@ifhtml
3903See ``CRIS Options'' in the main manual
3904@end ifhtml
3905for a list of CRIS-specific options.
3906
d2a0a5d4
HPN
3907Use @samp{configure --target=cris-elf} to configure GCC@ for building
3908a cross-compiler for CRIS.
f42974dc 3909@html
b8db17af 3910<hr />
f42974dc 3911@end html
e2ebe1c2
UB
3912@anchor{dos}
3913@heading DOS
962e6e00 3914Please have a look at the @uref{binaries.html,,binaries page}.
f42974dc 3915
f0523f02 3916You cannot install GCC by itself on MSDOS; it will not compile under
f85b8d1a
JM
3917any MSDOS compiler except itself. You need to get the complete
3918compilation package DJGPP, which includes binaries as well as sources,
3919and includes all the necessary compilation tools and libraries.
3920
feeeff5c
JR
3921@html
3922<hr />
3923@end html
e2ebe1c2
UB
3924@anchor{epiphany-x-elf}
3925@heading epiphany-*-elf
feeeff5c
JR
3926Adapteva Epiphany.
3927This configuration is intended for embedded systems.
3928
021c4bfd 3929@html
b8db17af 3930<hr />
021c4bfd 3931@end html
e2ebe1c2
UB
3932@anchor{x-x-freebsd}
3933@heading *-*-freebsd*
aac91b74
GP
3934In order to better utilize FreeBSD base system functionality and match
3935the configuration of the system compiler, GCC 4.5 and above as well as
3936GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
3937on FreeBSD 7 or later) and the use of @code{__cxa_atexit} by default
3938(on FreeBSD 6 or later). The use of @code{dl_iterate_phdr} inside
3939@file{libgcc_s.so.1} and boehm-gc (on FreeBSD 7 or later) is enabled
3940by GCC 4.5 and above.
27ed7478 3941
02c8b4f8
LR
3942We support FreeBSD using the ELF file format with DWARF 2 debugging
3943for all CPU architectures. You may use @option{-gstabs} instead of
3944@option{-g}, if you really want the old debugging format. There are
021c4bfd 3945no known issues with mixing object files and libraries with different
02c8b4f8
LR
3946debugging formats. Otherwise, this release of GCC should now match
3947more of the configuration used in the stock FreeBSD configuration of
3948GCC@. In particular, @option{--enable-threads} is now configured by
3949default. However, as a general user, do not attempt to replace the
3950system compiler with this release. Known to bootstrap and check with
3951good results on FreeBSD 7.2-STABLE@. In the past, known to bootstrap
3952and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
39534.5, 4.8, 4.9 and 5-CURRENT@.
3954
3955The version of binutils installed in @file{/usr/bin} probably works
3956with this release of GCC@. Bootstrapping against the latest GNU
f2431d5d 3957binutils and/or the version found in @file{/usr/ports/devel/binutils} has
02c8b4f8 3958been known to enable additional features and improve overall testsuite
97a2feb6
MK
3959results. However, it is currently known that boehm-gc may not configure
3960properly on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils
3961after 2.16.1.
bc3a44db 3962
fef939d6
JB
3963@html
3964<hr />
3965@end html
3966@anchor{ft32-x-elf}
3967@heading ft32-*-elf
3968The FT32 processor.
3969This configuration is intended for embedded systems.
3970
f42974dc 3971@html
b8db17af 3972<hr />
f42974dc 3973@end html
e2ebe1c2
UB
3974@anchor{h8300-hms}
3975@heading h8300-hms
71c6b994 3976Renesas H8/300 series of processors.
f42974dc 3977
962e6e00 3978Please have a look at the @uref{binaries.html,,binaries page}.
f42974dc 3979
b8df899a
JM
3980The calling convention and structure layout has changed in release 2.6.
3981All code must be recompiled. The calling convention now passes the
3982first three arguments in function calls in registers. Structures are no
3983longer a multiple of 2 bytes.
3984
f42974dc 3985@html
b8db17af 3986<hr />
f42974dc 3987@end html
e2ebe1c2
UB
3988@anchor{hppa-hp-hpux}
3989@heading hppa*-hp-hpux*
6a1dbbaf 3990Support for HP-UX version 9 and older was discontinued in GCC 3.4.
f42974dc 3991
be7659ba
JDA
3992We require using gas/binutils on all hppa platforms. Version 2.19 or
3993later is recommended.
f42974dc 3994
be7659ba 3995It may be helpful to configure GCC with the
38209993 3996@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
8a36672b 3997@option{--with-as=@dots{}} options to ensure that GCC can find GAS@.
f42974dc 3998
be7659ba
JDA
3999The HP assembler should not be used with GCC. It is rarely tested and may
4000not work. It shouldn't be used with any languages other than C due to its
4001many limitations.
4002
4003Specifically, @option{-g} does not work (HP-UX uses a peculiar debugging
4004format which GCC does not know about). It also inserts timestamps
4005into each object file it creates, causing the 3-stage comparison test to
4006fail during a bootstrap. You should be able to continue by saying
4007@samp{make all-host all-target} after getting the failure from @samp{make}.
4008
4009Various GCC features are not supported. For example, it does not support weak
4010symbols or alias definitions. As a result, explicit template instantiations
4011are required when using C++. This makes it difficult if not impossible to
4012build many C++ applications.
f42974dc 4013
d5355cb2
JDA
4014There are two default scheduling models for instructions. These are
4015PROCESSOR_7100LC and PROCESSOR_8000. They are selected from the pa-risc
4016architecture specified for the target machine when configuring.
4017PROCESSOR_8000 is the default. PROCESSOR_7100LC is selected when
4018the target is a @samp{hppa1*} machine.
806bf413
JDA
4019
4020The PROCESSOR_8000 model is not well suited to older processors. Thus,
4021it is important to completely specify the machine architecture when
4022configuring if you want a model other than PROCESSOR_8000. The macro
4023TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
4024default scheduling model is desired.
4025
25f710ba 4026As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
d711cf67
JDA
4027through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.
4028This namespace change might cause problems when bootstrapping with
4029an earlier version of GCC or the HP compiler as essentially the same
4030namespace is required for an entire build. This problem can be avoided
4031in a number of ways. With HP cc, @env{UNIX_STD} can be set to @samp{95}
4032or @samp{98}. Another way is to add an appropriate set of predefines
4033to @env{CC}. The description for the @option{munix=} option contains
4034a list of the predefines used with each standard.
4035
021c4bfd 4036More specific information to @samp{hppa*-hp-hpux*} targets follows.
f42974dc 4037
f42974dc 4038@html
b8db17af 4039<hr />
f42974dc 4040@end html
e2ebe1c2
UB
4041@anchor{hppa-hp-hpux10}
4042@heading hppa*-hp-hpux10
f9047ed3 4043For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
7be03a0e 4044@code{PHCO_19798} from HP@.
f42974dc 4045
25f710ba 4046The C++ ABI has changed incompatibly in GCC 4.0. COMDAT subspaces are
9a55eab3
JDA
4047used for one-only code and data. This resolves many of the previous
4048problems in using C++ on this target. However, the ABI is not compatible
4049with the one implemented under HP-UX 11 using secondary definitions.
f42974dc
DW
4050
4051@html
b8db17af 4052<hr />
f42974dc 4053@end html
e2ebe1c2
UB
4054@anchor{hppa-hp-hpux11}
4055@heading hppa*-hp-hpux11
c5124497
JDA
4056GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot
4057be used to compile GCC 3.0 and up.
f269f54f 4058
97a2feb6 4059The libffi library haven't been ported to 64-bit HP-UX@ and doesn't build.
be7659ba 4060
c5124497 4061Refer to @uref{binaries.html,,binaries} for information about obtaining
8a36672b 4062precompiled GCC binaries for HP-UX@. Precompiled binaries must be obtained
fd250f0d 4063to build the Ada language as it cannot be bootstrapped using C@. Ada is
be7659ba 4064only available for the 32-bit PA-RISC runtime.
f401d0f5 4065
02809848
PB
4066Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The
4067bundled compiler supports only traditional C; you will need either HP's
4068unbundled compiler, or a binary distribution of GCC@.
4069
c5124497
JDA
4070It is possible to build GCC 3.3 starting with the bundled HP compiler,
4071but the process requires several steps. GCC 3.3 can then be used to
97a2feb6 4072build later versions.
08b3d104 4073
c5124497
JDA
4074There are several possible approaches to building the distribution.
4075Binutils can be built first using the HP tools. Then, the GCC
4076distribution can be built. The second approach is to build GCC
8a36672b 4077first using the HP tools, then build binutils, then rebuild GCC@.
c5124497
JDA
4078There have been problems with various binary distributions, so it
4079is best not to start from a binary distribution.
4080
4081On 64-bit capable systems, there are two distinct targets. Different
4082installation prefixes must be used if both are to be installed on
4083the same system. The @samp{hppa[1-2]*-hp-hpux11*} target generates code
4084for the 32-bit PA-RISC runtime architecture and uses the HP linker.
4085The @samp{hppa64-hp-hpux11*} target generates 64-bit code for the
be7659ba 4086PA-RISC 2.0 architecture.
c5124497
JDA
4087
4088The script config.guess now selects the target type based on the compiler
4089detected during configuration. You must define @env{PATH} or @env{CC} so
4090that configure finds an appropriate compiler for the initial bootstrap.
4091When @env{CC} is used, the definition should contain the options that are
4092needed whenever @env{CC} is used.
4093
4094Specifically, options that determine the runtime architecture must be
4095in @env{CC} to correctly select the target for the build. It is also
f0eb93a8 4096convenient to place many other compiler options in @env{CC}. For example,
c5124497
JDA
4097@env{CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"}
4098can be used to bootstrap the GCC 3.3 branch with the HP compiler in
409964-bit K&R/bundled mode. The @option{+DA2.0W} option will result in
4100the automatic selection of the @samp{hppa64-hp-hpux11*} target. The
4101macro definition table of cpp needs to be increased for a successful
4102build with the HP compiler. _CLASSIC_TYPES and _HPUX_SOURCE need to
4103be defined when building with the bundled compiler, or when using the
4104@option{-Ac} option. These defines aren't necessary with @option{-Ae}.
8c085f6f 4105
c5124497
JDA
4106It is best to explicitly configure the @samp{hppa64-hp-hpux11*} target
4107with the @option{--with-ld=@dots{}} option. This overrides the standard
4108search for ld. The two linkers supported on this target require different
4109commands. The default linker is determined during configuration. As a
4110result, it's not possible to switch linkers in the middle of a GCC build.
d1facce0
RW
4111This has been reported to sometimes occur in unified builds of binutils
4112and GCC@.
c5124497 4113
c5124497
JDA
4114A recent linker patch must be installed for the correct operation of
4115GCC 3.3 and later. @code{PHSS_26559} and @code{PHSS_24304} are the
4116oldest linker patches that are known to work. They are for HP-UX
411711.00 and 11.11, respectively. @code{PHSS_24303}, the companion to
4118@code{PHSS_24304}, might be usable but it hasn't been tested. These
4119patches have been superseded. Consult the HP patch database to obtain
4120the currently recommended linker patch for your system.
4121
4122The patches are necessary for the support of weak symbols on the
412332-bit port, and for the running of initializers and finalizers. Weak
4124symbols are implemented using SOM secondary definition symbols. Prior
4125to HP-UX 11, there are bugs in the linker support for secondary symbols.
4126The patches correct a problem of linker core dumps creating shared
4127libraries containing secondary symbols, as well as various other
4128linking issues involving secondary symbols.
4129
4130GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
4131run initializers and finalizers on the 64-bit port. The 32-bit port
4132uses the linker @option{+init} and @option{+fini} options for the same
4133purpose. The patches correct various problems with the +init/+fini
4134options, including program core dumps. Binutils 2.14 corrects a
4135problem on the 64-bit port resulting from HP's non-standard use of
4136the .init and .fini sections for array initializers and finalizers.
f401d0f5 4137
be7659ba
JDA
4138Although the HP and GNU linkers are both supported for the
4139@samp{hppa64-hp-hpux11*} target, it is strongly recommended that the
4140HP linker be used for link editing on this target.
4141
4142At this time, the GNU linker does not support the creation of long
fd250f0d 4143branch stubs. As a result, it cannot successfully link binaries
be7659ba
JDA
4144containing branch offsets larger than 8 megabytes. In addition,
4145there are problems linking shared libraries, linking executables
4146with @option{-static}, and with dwarf2 unwind and exception support.
4147It also doesn't provide stubs for internal calls to global functions
fd250f0d 4148in shared libraries, so these calls cannot be overloaded.
be7659ba
JDA
4149
4150The HP dynamic loader does not support GNU symbol versioning, so symbol
4151versioning is not supported. It may be necessary to disable symbol
4152versioning with @option{--disable-symvers} when using GNU ld.
4153
4154POSIX threads are the default. The optional DCE thread library is not
4155supported, so @option{--enable-threads=dce} does not work.
08b3d104 4156
f42974dc 4157@html
b8db17af 4158<hr />
f42974dc 4159@end html
e2ebe1c2
UB
4160@anchor{x-x-linux-gnu}
4161@heading *-*-linux-gnu
13a39886
L
4162The @code{.init_array} and @code{.fini_array} sections are enabled
4163unconditionally which requires at least glibc 2.1 and binutils 2.12.
4164
b818de22 4165Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
9e80ada7
PE
4166in glibc 2.2.5 and later. More information is available in the
4167libstdc++-v3 documentation.
4168
f42974dc 4169@html
b8db17af 4170<hr />
f42974dc 4171@end html
e2ebe1c2
UB
4172@anchor{ix86-x-linux}
4173@heading i?86-*-linux*
1ea6f4c8 4174As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
786973ce 4175See @uref{https://gcc.gnu.org/PR10877,,bug 10877} for more information.
f42974dc
DW
4176
4177If you receive Signal 11 errors when building on GNU/Linux, then it is
4178possible you have a hardware problem. Further information on this can be
bcbe2809 4179found on @uref{https://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
f42974dc 4180
8f47c084
JM
4181@html
4182<hr />
4183@end html
ccd1242e
RO
4184@anchor{ix86-x-solaris2}
4185@heading i?86-*-solaris2*
f4dff765 4186Use this for Solaris 11.3 or later on x86 and x86-64 systems. Starting
ccd1242e
RO
4187with GCC 4.7, there is also a 64-bit @samp{amd64-*-solaris2*} or
4188@samp{x86_64-*-solaris2*} configuration that corresponds to
fbdd5d87 4189@samp{sparcv9-sun-solaris2*}.
8c5cfa89 4190
a8430f19 4191It is recommended that you configure GCC to use the GNU assembler. The
f4dff765
RO
4192versions included in Solaris 11.3, from GNU binutils 2.23.1 or
4193newer (available as @file{/usr/bin/gas} and
57e7db04 4194@file{/usr/gnu/bin/as}), work fine. The current version, from GNU
f4dff765
RO
4195binutils 2.34, is known to work. Recent versions of the Solaris assembler in
4196@file{/usr/bin/as} work almost as well, though.
8c5cfa89 4197
f4dff765
RO
4198For linking, the Solaris linker is preferred. If you want to use the GNU
4199linker instead, the version in Solaris 11.3, from GNU binutils 2.23.1 or
4200newer (in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}), works,
4201as does the latest version, from GNU binutils 2.34.
8c5cfa89
RO
4202
4203To use GNU @command{as}, configure with the options
ccd1242e 4204@option{--with-gnu-as --with-as=@//usr/@/gnu/@/bin/@/as}. It may be necessary
b7ae9eb5 4205to configure with @option{--without-gnu-ld --with-ld=@//usr/@/ccs/@/bin/@/ld} to
f4dff765 4206guarantee use of Solaris @command{ld}.
8c5cfa89 4207@c FIXME: why --without-gnu-ld --with-ld?
8f47c084 4208
b499d9ab 4209@html
b8db17af 4210<hr />
b499d9ab 4211@end html
e2ebe1c2
UB
4212@anchor{ia64-x-linux}
4213@heading ia64-*-linux
b499d9ab
JJ
4214IA-64 processor (also known as IPF, or Itanium Processor Family)
4215running GNU/Linux.
4216
443728bb
L
4217If you are using the installed system libunwind library with
4218@option{--with-system-libunwind}, then you must use libunwind 0.98 or
4219later.
bcd11e5e 4220
959a73a4
DH
4221@html
4222<hr />
4223@end html
e2ebe1c2
UB
4224@anchor{ia64-x-hpux}
4225@heading ia64-*-hpux*
8a36672b
JM
4226Building GCC on this target requires the GNU Assembler. The bundled HP
4227assembler will not work. To prevent GCC from using the wrong assembler,
959a73a4
DH
4228the option @option{--with-gnu-as} may be necessary.
4229
8a36672b 4230The GCC libunwind library has not been ported to HPUX@. This means that for
959a73a4 4231GCC versions 3.2.3 and earlier, @option{--enable-libunwind-exceptions}
8a36672b 4232is required to build GCC@. For GCC 3.3 and later, this is the default.
443728bb
L
4233For gcc 3.4.3 and later, @option{--enable-libunwind-exceptions} is
4234removed and the system libunwind library will always be used.
959a73a4 4235
f42974dc 4236@html
b8db17af 4237<hr />
f42974dc
DW
4238<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
4239@end html
e2ebe1c2
UB
4240@anchor{x-ibm-aix}
4241@heading *-ibm-aix*
6a1dbbaf 4242Support for AIX version 3 and older was discontinued in GCC 3.4.
52c0e446 4243Support for AIX version 4.2 and older was discontinued in GCC 4.5.
f42974dc 4244
7cc654b8
DE
4245``out of memory'' bootstrap failures may indicate a problem with
4246process resource limits (ulimit). Hard limits are configured in the
71fc0c16 4247@file{/etc/security/limits} system configuration file.
7cc654b8 4248
0682ab79
DE
4249GCC 4.9 and above require a C++ compiler for bootstrap. IBM VAC++ / xlC
4250cannot bootstrap GCC. xlc can bootstrap an older version of GCC and
4251G++ can bootstrap recent releases of GCC.
4252
c58c92f5
DE
4253GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
4254with an earlier release of GCC is recommended. Bootstrapping with XLC
4255requires a larger data segment, which can be enabled through the
4256@var{LDR_CNTRL} environment variable, e.g.,
4257
4258@smallexample
98797784
RW
4259% LDR_CNTRL=MAXDATA=0x50000000
4260% export LDR_CNTRL
c58c92f5
DE
4261@end smallexample
4262
4263One can start with a pre-compiled version of GCC to build from
4264sources. One may delete GCC's ``fixed'' header files when starting
4265with a version of GCC built for an earlier release of AIX.
4266
e8d8a034
DE
4267To speed up the configuration phases of bootstrapping and installing GCC,
4268one may use GNU Bash instead of AIX @command{/bin/sh}, e.g.,
4269
4270@smallexample
98797784
RW
4271% CONFIG_SHELL=/opt/freeware/bin/bash
4272% export CONFIG_SHELL
e8d8a034
DE
4273@end smallexample
4274
cc11cc9b
PB
4275and then proceed as described in @uref{build.html,,the build
4276instructions}, where we strongly recommend specifying an absolute path
e8d8a034
DE
4277to invoke @var{srcdir}/configure.
4278
d3a95f27
DE
4279Because GCC on AIX is built as a 32-bit executable by default,
4280(although it can generate 64-bit programs) the GMP and MPFR libraries
4281required by gfortran must be 32-bit libraries. Building GMP and MPFR
4282as static archive libraries works better than shared libraries.
4283
6cfb3f16 4284Errors involving @code{alloca} when building GCC generally are due
021c4bfd 4285to an incorrect definition of @code{CC} in the Makefile or mixing files
161d7b59 4286compiled with the native C compiler and GCC@. During the stage1 phase of
6cfb3f16
JM
4287the build, the native AIX compiler @strong{must} be invoked as @command{cc}
4288(not @command{xlc}). Once @command{configure} has been informed of
4289@command{xlc}, one needs to use @samp{make distclean} to remove the
38209993 4290configure cache files and ensure that @env{CC} environment variable
f42974dc
DW
4291does not provide a definition that will confuse @command{configure}.
4292If this error occurs during stage2 or later, then the problem most likely
4293is the version of Make (see above).
4294
a0bc8f9c
DE
4295The native @command{as} and @command{ld} are recommended for
4296bootstrapping on AIX@. The GNU Assembler, GNU Linker, and GNU
4297Binutils version 2.20 is the minimum level that supports bootstrap on
4298AIX 5@. The GNU Assembler has not been updated to support AIX 6@ or
4299AIX 7. The native AIX tools do interoperate with GCC@.
df002c7d 4300
0682ab79
DE
4301AIX 7.1 added partial support for DWARF debugging, but full support
4302requires AIX 7.1 TL03 SP7 that supports additional DWARF sections and
4303fixes a bug in the assembler. AIX 7.1 TL03 SP5 distributed a version
4304of libm.a missing important symbols; a fix for IV77796 will be
4305included in SP6.
4306
daf633ba
DE
4307AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
4308assembler change that sometimes produces corrupt assembly files
4309causing AIX linker errors. The bug breaks GCC bootstrap on AIX and
4310can cause compilation failures with existing GCC installations. An
4311AIX iFix for AIX 5.3 is available (APAR IZ98385 for AIX 5.3 TL10, APAR
a0bc8f9c
DE
4312IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8,
4313AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6,
4314AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix.
daf633ba 4315
04d2be8e 4316Building @file{libstdc++.a} requires a fix for an AIX Assembler bug
bb674cef
DE
4317APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a
4318fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
e4ae5e77 4319referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
2705baf5 4320
dd913323 4321@anchor{TransferAixShobj}
bb674cef 4322@samp{libstdc++} in GCC 3.4 increments the major version number of the
fdf68669 4323shared object and GCC installation places the @file{libstdc++.a}
bb674cef
DE
4324shared library in a common location which will overwrite the and GCC
43253.3 version of the shared library. Applications either need to be
4326re-linked against the new shared library or the GCC 3.1 and GCC 3.3
4327versions of the @samp{libstdc++} shared object needs to be available
4328to the AIX runtime loader. The GCC 3.1 @samp{libstdc++.so.4}, if
4329present, and GCC 3.3 @samp{libstdc++.so.5} shared objects can be
4330installed for runtime dynamic loading using the following steps to set
4331the @samp{F_LOADONLY} flag in the shared object for @emph{each}
fdf68669
DE
4332multilib @file{libstdc++.a} installed:
4333
bb674cef
DE
4334Extract the shared objects from the currently installed
4335@file{libstdc++.a} archive:
3ab51846 4336@smallexample
98797784 4337% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
3ab51846 4338@end smallexample
fdf68669
DE
4339
4340Enable the @samp{F_LOADONLY} flag so that the shared object will be
4341available for runtime dynamic loading, but not linking:
3ab51846 4342@smallexample
98797784 4343% strip -e libstdc++.so.4 libstdc++.so.5
3ab51846 4344@end smallexample
fdf68669 4345
bb674cef 4346Archive the runtime-only shared object in the GCC 3.4
fdf68669 4347@file{libstdc++.a} archive:
3ab51846 4348@smallexample
98797784 4349% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
3ab51846 4350@end smallexample
fdf68669 4351
dd913323
MH
4352Eventually, the
4353@uref{./configure.html#WithAixSoname,,@option{--with-aix-soname=svr4}}
4354configure option may drop the need for this procedure for libraries that
4355support it.
4356
df002c7d
DE
4357Linking executables and shared libraries may produce warnings of
4358duplicate symbols. The assembly files generated by GCC for AIX always
4359have included multiple symbol definitions for certain global variable
4360and function declarations in the original program. The warnings should
4361not prevent the linker from producing a correct library or runnable
4362executable.
4363
6cfb3f16 4364AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and
df002c7d
DE
436564-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1
4366to parse archive libraries did not handle the new format correctly.
4367These routines are used by GCC and result in error messages during
6cfb3f16 4368linking such as ``not a COFF file''. The version of the routines shipped
df002c7d
DE
4369with AIX 4.3.1 should work for a 32-bit environment. The @option{-g}
4370option of the archive command may be used to create archives of 32-bit
6cfb3f16 4371objects using the original ``small format''. A correct version of the
d5d8d540 4372routines is shipped with AIX 4.3.2 and above.
df002c7d 4373
f42974dc
DW
4374Some versions of the AIX binder (linker) can fail with a relocation
4375overflow severe error when the @option{-bbigtoc} option is used to link
161d7b59 4376GCC-produced object files into an executable that overflows the TOC@. A fix
f42974dc
DW
4377for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
4378available from IBM Customer Support and from its
786973ce 4379@uref{https://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
4380website as PTF U455193.
4381
df002c7d 4382The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
161d7b59 4383with a segmentation fault when invoked by any version of GCC@. A fix for
df002c7d 4384APAR IX87327 is available from IBM Customer Support and from its
786973ce 4385@uref{https://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
df002c7d 4386website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above.
f42974dc
DW
4387
4388The initial assembler shipped with AIX 4.3.0 generates incorrect object
4389files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
4390TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
786973ce 4391@uref{https://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
4392website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above.
4393
161d7b59 4394AIX provides National Language Support (NLS)@. Compilers and assemblers
df002c7d 4395use NLS to support locale-specific representations of various data
6cfb3f16 4396formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for
df002c7d
DE
4397separating decimal fractions). There have been problems reported where
4398GCC does not produce the same floating-point formats that the assembler
c771326b 4399expects. If one encounters this problem, set the @env{LANG}
6cfb3f16 4400environment variable to @samp{C} or @samp{En_US}.
f42974dc 4401
d5d8d540
DE
4402A default can be specified with the @option{-mcpu=@var{cpu_type}}
4403switch and using the configure option @option{--with-cpu-@var{cpu_type}}.
f42974dc 4404
6b3d1e47
SC
4405@html
4406<hr />
4407@end html
e2ebe1c2
UB
4408@anchor{iq2000-x-elf}
4409@heading iq2000-*-elf
6b3d1e47
SC
4410Vitesse IQ2000 processors. These are used in embedded
4411applications. There are no standard Unix configurations.
4412
aa4945c1
JB
4413@html
4414<hr />
4415@end html
e2ebe1c2
UB
4416@anchor{lm32-x-elf}
4417@heading lm32-*-elf
aa4945c1
JB
4418Lattice Mico32 processor.
4419This configuration is intended for embedded systems.
4420
4421@html
4422<hr />
4423@end html
e2ebe1c2
UB
4424@anchor{lm32-x-uclinux}
4425@heading lm32-*-uclinux
aa4945c1
JB
4426Lattice Mico32 processor.
4427This configuration is intended for embedded systems running uClinux.
4428
8766689a 4429@html
4430<hr />
4431@end html
4432@anchor{loongarch}
4433@heading LoongArch
4434LoongArch processor.
4435The following LoongArch targets are available:
4436@table @code
4437@item loongarch64-linux-gnu*
4438LoongArch processor running GNU/Linux. This target triplet may be coupled
4439with a small set of possible suffixes to identify their default ABI type:
4440@table @code
4441@item f64
4442Uses @code{lp64d/base} ABI by default.
4443@item f32
4444Uses @code{lp64f/base} ABI by default.
4445@item sf
4446Uses @code{lp64s/base} ABI by default.
4447@end table
4448
4449@item loongarch64-linux-gnu
4450Same as @code{loongarch64-linux-gnuf64}, but may be used with
4451@option{--with-abi=*} to configure the default ABI type.
4452@end table
4453
4454More information about LoongArch can be found at
4455@uref{https://github.com/loongson/LoongArch-Documentation}.
4456
38b2d076
DD
4457@html
4458<hr />
4459@end html
e2ebe1c2
UB
4460@anchor{m32c-x-elf}
4461@heading m32c-*-elf
38b2d076
DD
4462Renesas M32C processor.
4463This configuration is intended for embedded systems.
4464
b8df899a 4465@html
b8db17af 4466<hr />
b8df899a 4467@end html
e2ebe1c2
UB
4468@anchor{m32r-x-elf}
4469@heading m32r-*-elf
25f47a4c 4470Renesas M32R processor.
b8df899a
JM
4471This configuration is intended for embedded systems.
4472
b8df899a 4473@html
b8db17af 4474<hr />
b8df899a 4475@end html
e2ebe1c2
UB
4476@anchor{m68k-x-x}
4477@heading m68k-*-*
52c0e446 4478By default,
368b55f6
NS
4479@samp{m68k-*-elf*}, @samp{m68k-*-rtems}, @samp{m68k-*-uclinux} and
4480@samp{m68k-*-linux}
10e96df4
NS
4481build libraries for both M680x0 and ColdFire processors. If you only
4482need the M680x0 libraries, you can omit the ColdFire ones by passing
4483@option{--with-arch=m68k} to @command{configure}. Alternatively, you
4484can omit the M680x0 libraries by passing @option{--with-arch=cf} to
368b55f6
NS
4485@command{configure}. These targets default to 5206 or 5475 code as
4486appropriate for the target system when
10e96df4
NS
4487configured with @option{--with-arch=cf} and 68020 code otherwise.
4488
368b55f6 4489The @samp{m68k-*-netbsd} and
10e96df4
NS
4490@samp{m68k-*-openbsd} targets also support the @option{--with-arch}
4491option. They will generate ColdFire CFV4e code when configured with
4492@option{--with-arch=cf} and 68020 code otherwise.
4493
4494You can override the default processors listed above by configuring
4495with @option{--with-cpu=@var{target}}. This @var{target} can either
4496be a @option{-mcpu} argument or one of the following values:
4497@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
900ec02d 4498@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
59fbf3cb 4499
39e7722b
JM
4500GCC requires at least binutils version 2.17 on these targets.
4501
4529dbf1
RS
4502@html
4503<hr />
4504@end html
e2ebe1c2
UB
4505@anchor{m68k-x-uclinux}
4506@heading m68k-*-uclinux
4529dbf1
RS
4507GCC 4.3 changed the uClinux configuration so that it uses the
4508@samp{m68k-linux-gnu} ABI rather than the @samp{m68k-elf} ABI.
4509It also added improved support for C++ and flat shared libraries,
ebb9f8b0 4510both of which were ABI changes.
4529dbf1 4511
80920132
ME
4512@html
4513<hr />
4514@end html
e2ebe1c2
UB
4515@anchor{microblaze-x-elf}
4516@heading microblaze-*-elf
80920132
ME
4517Xilinx MicroBlaze processor.
4518This configuration is intended for embedded systems.
4519
b8df899a 4520@html
b8db17af 4521<hr />
b8df899a 4522@end html
e2ebe1c2
UB
4523@anchor{mips-x-x}
4524@heading mips-*-*
b8df899a
JM
4525If on a MIPS system you get an error message saying ``does not have gp
4526sections for all it's [sic] sectons [sic]'', don't worry about it. This
4527happens whenever you use GAS with the MIPS linker, but there is not
4528really anything wrong, and it is okay to use the output file. You can
4529stop such warnings by installing the GNU linker.
4530
4531It would be nice to extend GAS to produce the gp tables, but they are
4532optional, and there should not be a warning about their absence.
4533
26979a17
PE
4534The libstdc++ atomic locking routines for MIPS targets requires MIPS II
4535and later. A patch went in just after the GCC 3.3 release to
4536make @samp{mips*-*-*} use the generic implementation instead. You can also
4537configure for @samp{mipsel-elf} as a workaround. The
4538@samp{mips*-*-linux*} target continues to use the MIPS II routines. More
4539work on this is expected in future releases.
4540
66471b47
DD
4541@c If you make --with-llsc the default for another target, please also
4542@c update the description of the --with-llsc option.
4543
4544The built-in @code{__sync_*} functions are available on MIPS II and
4545later systems and others that support the @samp{ll}, @samp{sc} and
4546@samp{sync} instructions. This can be overridden by passing
4547@option{--with-llsc} or @option{--without-llsc} when configuring GCC.
4548Since the Linux kernel emulates these instructions if they are
4549missing, the default for @samp{mips*-*-linux*} targets is
4550@option{--with-llsc}. The @option{--with-llsc} and
4551@option{--without-llsc} configure options may be overridden at compile
4552time by passing the @option{-mllsc} or @option{-mno-llsc} options to
4553the compiler.
4554
9f0df97a
DD
4555MIPS systems check for division by zero (unless
4556@option{-mno-check-zero-division} is passed to the compiler) by
4557generating either a conditional trap or a break instruction. Using
4558trap results in smaller code, but is only supported on MIPS II and
4559later. Also, some versions of the Linux kernel have a bug that
8a36672b 4560prevents trap from generating the proper signal (@code{SIGFPE}). To enable
9f0df97a 4561the use of break, use the @option{--with-divide=breaks}
8a36672b 4562@command{configure} option when configuring GCC@. The default is to
9f0df97a
DD
4563use traps on systems that support them.
4564
cceb575c
AG
4565@html
4566<hr />
4567@end html
e2ebe1c2
UB
4568@anchor{moxie-x-elf}
4569@heading moxie-*-elf
0cd6f755 4570The moxie processor.
cceb575c 4571
f6a83b4a
DD
4572@html
4573<hr />
4574@end html
e2ebe1c2 4575@anchor{msp430-x-elf}
e8aa9f55 4576@heading msp430-*-elf*
f6a83b4a
DD
4577TI MSP430 processor.
4578This configuration is intended for embedded systems.
4579
e8aa9f55
JL
4580@samp{msp430-*-elf} is the standard configuration with most GCC
4581features enabled by default.
4582
4583@samp{msp430-*-elfbare} is tuned for a bare-metal environment, and disables
4584features related to shared libraries and other functionality not used for
4585this device. This reduces code and data usage of the GCC libraries, resulting
4586in a minimal run-time environment by default.
4587
4588Features disabled by default include:
4589@itemize
4590@item transactional memory
4591@item __cxa_atexit
4592@end itemize
4593
d4fbc3ae
CJW
4594@html
4595<hr />
4596@end html
4597@anchor{nds32le-x-elf}
4598@heading nds32le-*-elf
4599Andes NDS32 target in little endian mode.
4600
4601@html
4602<hr />
4603@end html
4604@anchor{nds32be-x-elf}
4605@heading nds32be-*-elf
4606Andes NDS32 target in big endian mode.
4607
d7705288
TS
4608@html
4609<hr />
4610@end html
4611@anchor{nvptx-x-none}
4612@heading nvptx-*-none
4613Nvidia PTX target.
4614
4615Instead of GNU binutils, you will need to install
4616@uref{https://github.com/MentorEmbedded/nvptx-tools/,,nvptx-tools}.
4617Tell GCC where to find it:
4618@option{--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin}.
4619
8ff02f96
CP
4620You will need newlib 3.0 git revision
4621cd31fbb2aea25f94d7ecedc9db16dfc87ab0c316 or later. It can be
4622automatically built together with GCC@. For this, add a symbolic link
4623to nvptx-newlib's @file{newlib} directory to the directory containing
4624the GCC sources.
d7705288
TS
4625
4626Use the @option{--disable-sjlj-exceptions} and
4627@option{--enable-newlib-io-long-long} options when configuring.
4628
3965b35f
SH
4629@html
4630<hr />
4631@end html
4632@anchor{or1k-x-elf}
4633@heading or1k-*-elf
4634The OpenRISC 1000 32-bit processor with delay slots.
4635This configuration is intended for embedded systems.
4636
4637@html
4638<hr />
4639@end html
4640@anchor{or1k-x-linux}
4641@heading or1k-*-linux
4642The OpenRISC 1000 32-bit processor with delay slots.
4643
b8df899a 4644@html
b8db17af 4645<hr />
b8df899a 4646@end html
e2ebe1c2
UB
4647@anchor{powerpc-x-x}
4648@heading powerpc-*-*
6cfb3f16
JM
4649You can specify a default version for the @option{-mcpu=@var{cpu_type}}
4650switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
b8df899a 4651
ed2181fc 4652You will need GNU binutils 2.20 or newer.
1590a115 4653
4f2b1139 4654@html
b8db17af 4655<hr />
4f2b1139 4656@end html
e2ebe1c2
UB
4657@anchor{powerpc-x-darwin}
4658@heading powerpc-*-darwin*
4f2b1139
SS
4659PowerPC running Darwin (Mac OS X kernel).
4660
4f2b1139
SS
4661Pre-installed versions of Mac OS X may not include any developer tools,
4662meaning that you will not be able to build GCC from source. Tool
4663binaries are available at
b99d68f5 4664@uref{https://opensource.apple.com}.
4f2b1139 4665
80c85ca2
MS
4666This version of GCC requires at least cctools-590.36. The
4667cctools-590.36 package referenced from
786973ce 4668@uref{https://gcc.gnu.org/ml/gcc/2006-03/msg00507.html} will not work
80c85ca2 4669on systems older than 10.3.9 (aka darwin7.9.0).
4f2b1139 4670
021c4bfd 4671@html
b8db17af 4672<hr />
021c4bfd 4673@end html
e2ebe1c2
UB
4674@anchor{powerpc-x-elf}
4675@heading powerpc-*-elf
021c4bfd
RO
4676PowerPC system in big endian mode, running System V.4.
4677
f42974dc 4678@html
b8db17af 4679<hr />
f42974dc 4680@end html
e2ebe1c2
UB
4681@anchor{powerpc-x-linux-gnu}
4682@heading powerpc*-*-linux-gnu*
1590a115 4683PowerPC system in big endian mode running Linux.
f42974dc 4684
edf1b3f3 4685@html
b8db17af 4686<hr />
edf1b3f3 4687@end html
e2ebe1c2
UB
4688@anchor{powerpc-x-netbsd}
4689@heading powerpc-*-netbsd*
f0947430 4690PowerPC system in big endian mode running NetBSD@.
edf1b3f3 4691
b8df899a 4692@html
b8db17af 4693<hr />
b8df899a 4694@end html
e2ebe1c2
UB
4695@anchor{powerpc-x-eabisim}
4696@heading powerpc-*-eabisim
b8df899a
JM
4697Embedded PowerPC system in big endian mode for use in running under the
4698PSIM simulator.
4699
b8df899a 4700@html
b8db17af 4701<hr />
b8df899a 4702@end html
e2ebe1c2
UB
4703@anchor{powerpc-x-eabi}
4704@heading powerpc-*-eabi
b8df899a
JM
4705Embedded PowerPC system in big endian mode.
4706
b8df899a 4707@html
b8db17af 4708<hr />
b8df899a 4709@end html
e2ebe1c2
UB
4710@anchor{powerpcle-x-elf}
4711@heading powerpcle-*-elf
b8df899a
JM
4712PowerPC system in little endian mode, running System V.4.
4713
b8df899a 4714@html
b8db17af 4715<hr />
b8df899a 4716@end html
e2ebe1c2
UB
4717@anchor{powerpcle-x-eabisim}
4718@heading powerpcle-*-eabisim
b8df899a
JM
4719Embedded PowerPC system in little endian mode for use in running under
4720the PSIM simulator.
4721
4722@html
b8db17af 4723<hr />
b8df899a 4724@end html
e2ebe1c2
UB
4725@anchor{powerpcle-x-eabi}
4726@heading powerpcle-*-eabi
b8df899a
JM
4727Embedded PowerPC system in little endian mode.
4728
85b8555e
DD
4729@html
4730<hr />
4731@end html
e2ebe1c2
UB
4732@anchor{rl78-x-elf}
4733@heading rl78-*-elf
85b8555e
DD
4734The Renesas RL78 processor.
4735This configuration is intended for embedded systems.
4736
09cae750
PD
4737@html
4738<hr />
4739@end html
4740@anchor{riscv32-x-elf}
4741@heading riscv32-*-elf
4742The RISC-V RV32 instruction set.
4743This configuration is intended for embedded systems.
879bc686 4744This (and all other RISC-V) targets require the binutils 2.30 release.
09cae750
PD
4745
4746@html
4747<hr />
4748@end html
3b82a32c
PD
4749@anchor{riscv32-x-linux}
4750@heading riscv32-*-linux
4751The RISC-V RV32 instruction set running GNU/Linux.
879bc686 4752This (and all other RISC-V) targets require the binutils 2.30 release.
09cae750
PD
4753
4754@html
4755<hr />
4756@end html
3b82a32c
PD
4757@anchor{riscv64-x-elf}
4758@heading riscv64-*-elf
4759The RISC-V RV64 instruction set.
4760This configuration is intended for embedded systems.
879bc686 4761This (and all other RISC-V) targets require the binutils 2.30 release.
09cae750
PD
4762
4763@html
4764<hr />
4765@end html
4766@anchor{riscv64-x-linux}
4767@heading riscv64-*-linux
4768The RISC-V RV64 instruction set running GNU/Linux.
879bc686 4769This (and all other RISC-V) targets require the binutils 2.30 release.
09cae750 4770
65a324b4
NC
4771@html
4772<hr />
4773@end html
e2ebe1c2
UB
4774@anchor{rx-x-elf}
4775@heading rx-*-elf
67afc9a6 4776The Renesas RX processor.
65a324b4 4777
91abf72d 4778@html
b8db17af 4779<hr />
91abf72d 4780@end html
e2ebe1c2
UB
4781@anchor{s390-x-linux}
4782@heading s390-*-linux*
95fef11f 4783S/390 system running GNU/Linux for S/390@.
91abf72d
HP
4784
4785@html
b8db17af 4786<hr />
91abf72d 4787@end html
e2ebe1c2
UB
4788@anchor{s390x-x-linux}
4789@heading s390x-*-linux*
95fef11f 4790zSeries system (64-bit) running GNU/Linux for zSeries@.
91abf72d 4791
8bf06993
UW
4792@html
4793<hr />
4794@end html
e2ebe1c2
UB
4795@anchor{s390x-ibm-tpf}
4796@heading s390x-ibm-tpf*
8a36672b 4797zSeries system (64-bit) running TPF@. This platform is
8bf06993
UW
4798supported as cross-compilation target only.
4799
f42974dc 4800@html
b8db17af 4801<hr />
f42974dc 4802@end html
250d5688 4803@c Please use Solaris 2 to refer to all release of Solaris, starting
1460af95 4804@c with 2.0 until 2.6, 7, 8, etc. Solaris 1 was a marketing name for
250d5688
RO
4805@c SunOS 4 releases which we don't use to avoid confusion. Solaris
4806@c alone is too unspecific and must be avoided.
e2ebe1c2
UB
4807@anchor{x-x-solaris2}
4808@heading *-*-solaris2*
ccd1242e
RO
4809Support for Solaris 10 has been removed in GCC 10. Support for Solaris
48109 has been removed in GCC 5. Support for Solaris 8 has been removed in
4811GCC 4.8. Support for Solaris 7 has been removed in GCC 4.6.
4812
f4dff765
RO
4813Solaris 11.3 provides GCC 4.5.2, 4.7.3, and 4.8.2 as
4814@command{/usr/gcc/4.5/bin/gcc} or similar. Newer Solaris versions
4815provide one or more of GCC 5, 7, and 9. Alternatively,
8c5cfa89 4816you can install a pre-built GCC to bootstrap and install GCC. See the
dbd210ef 4817@uref{binaries.html,,binaries page} for details.
f42974dc 4818
250d5688 4819The Solaris 2 @command{/bin/sh} will often fail to configure
f4dff765 4820@samp{libstdc++-v3}. We therefore recommend using the
97a2feb6 4821following initial sequence of commands
bc890961
EB
4822
4823@smallexample
98797784
RW
4824% CONFIG_SHELL=/bin/ksh
4825% export CONFIG_SHELL
bc890961
EB
4826@end smallexample
4827
8c5cfa89 4828@noindent
1da1ce3f 4829and proceed as described in @uref{configure.html,,the configure instructions}.
37de1373 4830In addition we strongly recommend specifying an absolute path to invoke
8c5cfa89 4831@command{@var{srcdir}/configure}.
e6855a2d 4832
ccd1242e
RO
4833In Solaris 11, you need to check for @code{system/header},
4834@code{system/linker}, and @code{developer/assembler} packages.
a8430f19 4835
250d5688 4836Trying to use the linker and other tools in
b8df899a
JM
4837@file{/usr/ucb} to install GCC has been observed to cause trouble.
4838For example, the linker may hang indefinitely. The fix is to remove
250d5688 4839@file{/usr/ucb} from your @env{PATH}.
f42974dc 4840
f4dff765 4841The build process works more smoothly with the legacy Solaris tools so, if you
bc890961
EB
4842have @file{/usr/xpg4/bin} in your @env{PATH}, we recommend that you place
4843@file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build.
4844
a8430f19
RO
4845We recommend the use of the Solaris assembler or the GNU assembler, in
4846conjunction with the Solaris linker. The GNU @command{as}
f4dff765
RO
4847versions included in Solaris 11.3,
4848from GNU binutils 2.23.1 or newer (in @file{/usr/bin/gas} and
a8430f19 4849@file{/usr/gnu/bin/as}), are known to work.
f4dff765 4850The current version, from GNU binutils 2.34,
57e7db04 4851is known to work as well. Note that your mileage may vary
a8430f19 4852if you use a combination of the GNU tools and the Solaris tools: while the
f4dff765
RO
4853combination GNU @command{as} + Solaris @command{ld} should reasonably work,
4854the reverse combination Solaris @command{as} + GNU @command{ld} may fail to
493dd43c 4855build or cause memory corruption at runtime in some cases for C++ programs.
8c5cfa89 4856@c FIXME: still?
ccd1242e 4857GNU @command{ld} usually works as well. Again, the current
f4dff765 4858version (2.34) is known to work, but generally lacks platform specific
a8430f19 4859features, so better stay with Solaris @command{ld}. To use the LTO linker
493dd43c
RO
4860plugin (@option{-fuse-linker-plugin}) with GNU @command{ld}, GNU
4861binutils @emph{must} be configured with @option{--enable-largefile}.
2c00bd42 4862
f5ea1d38 4863To enable symbol versioning in @samp{libstdc++} with the Solaris linker,
c18dc5cc
RO
4864you need to have any version of GNU @command{c++filt}, which is part of
4865GNU binutils. @samp{libstdc++} symbol versioning will be disabled if no
f5ea1d38
EB
4866appropriate version is found. Solaris @command{c++filt} from the Solaris
4867Studio compilers does @emph{not} work.
4868
4e4f550a
RO
4869In order to build the GNU D compiler, GDC, a working @samp{libphobos} is
4870needed. That library wasn't built by default in GCC 9--11 on SPARC, or
4871on x86 when the Solaris assembler is used, but can be enabled by
4872configuring with @option{--enable-libphobos}. Also, GDC 9.4.0 is
4873required on x86, while GDC 9.3.0 is known to work on SPARC.
4874
f4dff765
RO
4875The versions of the GNU Multiple Precision Library (GMP), the MPFR
4876library and the MPC library bundled with Solaris 11.3 and later are
4877usually recent enough to match GCC's requirements. There are two
4878caveats:
4879
4880@itemize @bullet
4881@item
4882While the version of the GMP library in Solaris 11.3 works with GCC, you
4883need to configure with @option{--with-gmp-include=/usr/include/gmp}.
4884
4885@item
4886The version of the MPFR libary included in Solaris 11.3 is too old; you
4887need to provide a more recent one.
4e4f550a 4888
f4dff765
RO
4889@end itemize
4890
d191cd06
EB
4891@html
4892<hr />
4893@end html
e2ebe1c2
UB
4894@anchor{sparc-x-x}
4895@heading sparc*-*-*
d191cd06
EB
4896This section contains general configuration information for all
4897SPARC-based platforms. In addition to reading this section, please
4898read all other sections that match your target.
4899
4900Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
4901library and the MPC library are known to be miscompiled by earlier
4902versions of GCC on these platforms. We therefore recommend the use
4903of the exact versions of these libraries listed as minimal versions
4904in @uref{prerequisites.html,,the prerequisites}.
4905
dbd210ef 4906@html
b8db17af 4907<hr />
dbd210ef 4908@end html
e2ebe1c2
UB
4909@anchor{sparc-sun-solaris2}
4910@heading sparc-sun-solaris2*
8c5cfa89 4911When GCC is configured to use GNU binutils 2.14 or later, the binaries
f4dff765 4912produced are smaller than the ones produced using Solaris native tools;
1405141b
DN
4913this difference is quite significant for binaries containing debugging
4914information.
4915
03b272d2 4916Starting with Solaris 7, the operating system is capable of executing
975c6e4e
RO
491764-bit SPARC V9 binaries. GCC 3.1 and later properly supports
4918this; the @option{-m64} option enables 64-bit code generation.
4919However, if all you want is code tuned for the UltraSPARC CPU, you
4920should try the @option{-mtune=ultrasparc} option instead, which produces
4921code that, unlike full 64-bit code, can still run on non-UltraSPARC
edf1c8df 4922machines.
03b272d2 4923
d191cd06
EB
4924When configuring the GNU Multiple Precision Library (GMP), the MPFR
4925library or the MPC library on a Solaris 7 or later system, the canonical
4926target triplet must be specified as the @command{build} parameter on the
4927configure line. This target triplet can be obtained by invoking @command{./config.guess} in the toplevel source directory of GCC (and
f4dff765 4928not that of GMP or MPFR or MPC). For example on a Solaris 11 system:
fdbf04c8
EB
4929
4930@smallexample
f4dff765 4931% ./configure --build=sparc-sun-solaris2.11 --prefix=xxx
fdbf04c8
EB
4932@end smallexample
4933
c6fa9728 4934@html
b8db17af 4935<hr />
c6fa9728 4936@end html
e2ebe1c2
UB
4937@anchor{sparc-x-linux}
4938@heading sparc-*-linux*
c6fa9728 4939
f42974dc 4940@html
b8db17af 4941<hr />
f42974dc 4942@end html
e2ebe1c2
UB
4943@anchor{sparc64-x-solaris2}
4944@heading sparc64-*-solaris2*
f4dff765
RO
4945When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
4946build compiler that generates 64-bit code, either by default or by
4947specifying @samp{CC='gcc -m64' CXX='gcc-m64'} to @command{configure}.
4948Additionally, you @emph{must} pass @option{--build=sparc64-sun-solaris2.11}
4949or @option{--build=sparcv9-sun-solaris2.11} because @file{config.guess}
4950misdetects this situation, which can cause build failures.
4951
97996ede
EB
4952When configuring the GNU Multiple Precision Library (GMP), the MPFR
4953library or the MPC library, the canonical target triplet must be specified
4954as the @command{build} parameter on the configure line. For example
f4dff765 4955on a Solaris 11 system:
b3c9881c
EB
4956
4957@smallexample
f4dff765 4958% ./configure --build=sparc64-sun-solaris2.11 --prefix=xxx
b3c9881c
EB
4959@end smallexample
4960
0dc7ee3c
EB
4961@html
4962<hr />
4963@end html
e2ebe1c2
UB
4964@anchor{sparcv9-x-solaris2}
4965@heading sparcv9-*-solaris2*
8c5cfa89 4966This is a synonym for @samp{sparc64-*-solaris2*}.
f42974dc 4967
bcead286
BS
4968@html
4969<hr />
4970@end html
e2ebe1c2
UB
4971@anchor{c6x-x-x}
4972@heading c6x-*-*
bcead286 4973The C6X family of processors. This port requires binutils-2.22 or newer.
dd552284 4974
0969ec7d
EB
4975@html
4976<hr />
4977@end html
4978@anchor{visium-x-elf}
4979@heading visium-*-elf
4980CDS VISIUMcore processor.
4981This configuration is intended for embedded systems.
4982
4977bab6
ZW
4983@html
4984<hr />
4985@end html
e2ebe1c2
UB
4986@anchor{x-x-vxworks}
4987@heading *-*-vxworks*
4977bab6 4988Support for VxWorks is in flux. At present GCC supports @emph{only} the
8a36672b 4989very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC@.
4977bab6
ZW
4990We welcome patches for other architectures supported by VxWorks 5.5.
4991Support for VxWorks AE would also be welcome; we believe this is merely
4992a matter of writing an appropriate ``configlette'' (see below). We are
4993not interested in supporting older, a.out or COFF-based, versions of
4994VxWorks in GCC 3.
4995
4996VxWorks comes with an older version of GCC installed in
4997@file{@var{$WIND_BASE}/host}; we recommend you do not overwrite it.
4998Choose an installation @var{prefix} entirely outside @var{$WIND_BASE}.
4999Before running @command{configure}, create the directories @file{@var{prefix}}
5000and @file{@var{prefix}/bin}. Link or copy the appropriate assembler,
8a36672b 5001linker, etc.@: into @file{@var{prefix}/bin}, and set your @var{PATH} to
4977bab6
ZW
5002include that directory while running both @command{configure} and
5003@command{make}.
5004
5005You must give @command{configure} the
5006@option{--with-headers=@var{$WIND_BASE}/target/h} switch so that it can
5007find the VxWorks system headers. Since VxWorks is a cross compilation
5008target only, you must also specify @option{--target=@var{target}}.
5009@command{configure} will attempt to create the directory
5010@file{@var{prefix}/@var{target}/sys-include} and copy files into it;
5011make sure the user running @command{configure} has sufficient privilege
5012to do so.
5013
5014GCC's exception handling runtime requires a special ``configlette''
5015module, @file{contrib/gthr_supp_vxw_5x.c}. Follow the instructions in
5016that file to add the module to your kernel build. (Future versions of
daf2f129 5017VxWorks will incorporate this module.)
4977bab6 5018
7e081a0c
AJ
5019@html
5020<hr />
5021@end html
e2ebe1c2
UB
5022@anchor{x86-64-x-x}
5023@heading x86_64-*-*, amd64-*-*
7e081a0c 5024GCC supports the x86-64 architecture implemented by the AMD64 processor
8a36672b 5025(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD@.
7e081a0c
AJ
5026On GNU/Linux the default is a bi-arch compiler which is able to generate
5027both 64-bit x86-64 and 32-bit x86 code (via the @option{-m32} switch).
5028
fbdd5d87
RO
5029@html
5030<hr />
5031@end html
ccd1242e
RO
5032@anchor{x86-64-x-solaris2}
5033@heading x86_64-*-solaris2*
fbdd5d87
RO
5034GCC also supports the x86-64 architecture implemented by the AMD64
5035processor (@samp{amd64-*-*} is an alias for @samp{x86_64-*-*}) on
5036Solaris 10 or later. Unlike other systems, without special options a
5037bi-arch compiler is built which generates 32-bit code by default, but
5038can generate 64-bit x86-64 code with the @option{-m64} switch. Since
a8430f19 5039GCC 4.7, there is also a configuration that defaults to 64-bit code, but
fbdd5d87
RO
5040can generate 32-bit code with @option{-m32}. To configure and build
5041this way, you have to provide all support libraries like @file{libgmp}
f4dff765 5042as 64-bit code, configure with @option{--target=x86_64-pc-solaris2.11}
fbdd5d87
RO
5043and @samp{CC=gcc -m64}.
5044
fd29f6ea 5045@html
b8db17af 5046<hr />
fd29f6ea 5047@end html
e2ebe1c2
UB
5048@anchor{xtensa-x-elf}
5049@heading xtensa*-*-elf
fd29f6ea
BW
5050This target is intended for embedded Xtensa systems using the
5051@samp{newlib} C library. It uses ELF but does not support shared
5052objects. Designed-defined instructions specified via the
5053Tensilica Instruction Extension (TIE) language are only supported
5054through inline assembly.
5055
5056The Xtensa configuration information must be specified prior to
e677f70c 5057building GCC@. The @file{include/xtensa-config.h} header
fd29f6ea
BW
5058file contains the configuration information. If you created your
5059own Xtensa configuration with the Xtensa Processor Generator, the
5060downloaded files include a customized copy of this header file,
5061which you can use to replace the default header file.
5062
5063@html
b8db17af 5064<hr />
fd29f6ea 5065@end html
e2ebe1c2
UB
5066@anchor{xtensa-x-linux}
5067@heading xtensa*-*-linux*
fd29f6ea
BW
5068This target is for Xtensa systems running GNU/Linux. It supports ELF
5069shared objects and the GNU C library (glibc). It also generates
5070position-independent code (PIC) regardless of whether the
5071@option{-fpic} or @option{-fPIC} options are used. In other
f282ffb3 5072respects, this target is the same as the
6d656178 5073@uref{#xtensa*-*-elf,,@samp{xtensa*-*-elf}} target.
fd29f6ea 5074
f42974dc 5075@html
b8db17af 5076<hr />
f42974dc 5077@end html
e2ebe1c2
UB
5078@anchor{windows}
5079@heading Microsoft Windows
aad416fb
AL
5080
5081@subheading Intel 16-bit versions
ff2ce160 5082The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
aad416fb
AL
5083supported.
5084
ff2ce160 5085However, the 32-bit port has limited support for Microsoft
aad416fb
AL
5086Windows 3.11 in the Win32s environment, as a target only. See below.
5087
5088@subheading Intel 32-bit versions
ff2ce160
MS
5089The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
5090XP, and Windows Vista, are supported by several different target
5091platforms. These targets differ in which Windows subsystem they target
aad416fb
AL
5092and which C libraries are used.
5093
5094@itemize
ff2ce160 5095@item Cygwin @uref{#x-x-cygwin,,*-*-cygwin}: Cygwin provides a user-space
aad416fb 5096Linux API emulation layer in the Win32 subsystem.
ff2ce160 5097@item MinGW @uref{#x-x-mingw32,,*-*-mingw32}: MinGW is a native GCC port for
aad416fb 5098the Win32 subsystem that provides a subset of POSIX.
ff2ce160 5099@item MKS i386-pc-mks: NuTCracker from MKS. See
b769d06e 5100@uref{https://www.mkssoftware.com} for more information.
aad416fb
AL
5101@end itemize
5102
5103@subheading Intel 64-bit versions
aad416fb 5104GCC contains support for x86-64 using the mingw-w64
b642a44f 5105runtime library, available from @uref{https://www.mingw-w64.org/downloads/}.
aad416fb
AL
5106This library should be used with the target triple x86_64-pc-mingw32.
5107
aad416fb 5108@subheading Windows CE
9094e001 5109Windows CE is supported as a target only on Hitachi
aad416fb
AL
5110SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
5111
5112@subheading Other Windows Platforms
aad416fb
AL
5113GCC no longer supports Windows NT on the Alpha or PowerPC.
5114
ff2ce160 5115GCC no longer supports the Windows POSIX subsystem. However, it does
aad416fb
AL
5116support the Interix subsystem. See above.
5117
5118Old target names including *-*-winnt and *-*-windowsnt are no longer used.
5119
ff2ce160 5120PW32 (i386-pc-pw32) support was never completed, and the project seems to
aad416fb
AL
5121be inactive. See @uref{http://pw32.sourceforge.net/} for more information.
5122
5123UWIN support has been removed due to a lack of maintenance.
5124
5125@html
5126<hr />
5127@end html
e2ebe1c2
UB
5128@anchor{x-x-cygwin}
5129@heading *-*-cygwin
5b65d351 5130Ports of GCC are included with the
f42974dc
DW
5131@uref{http://www.cygwin.com/,,Cygwin environment}.
5132
5b65d351
GP
5133GCC will build under Cygwin without modification; it does not build
5134with Microsoft's C++ compiler and there are no plans to make it do so.
ccc1ce6e 5135
977f7997
DK
5136The Cygwin native compiler can be configured to target any 32-bit x86
5137cpu architecture desired; the default is i686-pc-cygwin. It should be
5138used with as up-to-date a version of binutils as possible; use either
5139the latest official GNU binutils release in the Cygwin distribution,
5140or version 2.20 or above if building your own.
aad416fb 5141
aad416fb
AL
5142@html
5143<hr />
5144@end html
e2ebe1c2
UB
5145@anchor{x-x-mingw32}
5146@heading *-*-mingw32
aad416fb 5147GCC will build with and support only MinGW runtime 3.12 and later.
fa692084
JJ
5148Earlier versions of headers are incompatible with the new default semantics
5149of @code{extern inline} in @code{-std=c99} and @code{-std=gnu99} modes.
5150
2ebb6f6e
RB
5151To support emitting DWARF debugging info you need to use GNU binutils
5152version 2.16 or above containing support for the @code{.secrel32}
5153assembler pseudo-op.
5154
f42974dc 5155@html
b8db17af 5156<hr />
f42974dc 5157@end html
e2ebe1c2
UB
5158@anchor{older}
5159@heading Older systems
f9047ed3
JM
5160GCC contains support files for many older (1980s and early
51611990s) Unix variants. For the most part, support for these systems
5162has not been deliberately removed, but it has not been maintained for
c7bdf0a6 5163several years and may suffer from bitrot.
f9047ed3 5164
c7bdf0a6 5165Starting with GCC 3.1, each release has a list of ``obsoleted'' systems.
9340544b
ZW
5166Support for these systems is still present in that release, but
5167@command{configure} will fail unless the @option{--enable-obsolete}
c7bdf0a6
ZW
5168option is given. Unless a maintainer steps forward, support for these
5169systems will be removed from the next release of GCC@.
f9047ed3
JM
5170
5171Support for old systems as hosts for GCC can cause problems if the
5172workarounds for compiler, library and operating system bugs affect the
161d7b59 5173cleanliness or maintainability of the rest of GCC@. In some cases, to
f9047ed3
JM
5174bring GCC up on such a system, if still possible with current GCC, may
5175require first installing an old version of GCC which did work on that
c7bdf0a6
ZW
5176system, and using it to compile a more recent GCC, to avoid bugs in the
5177vendor compiler. Old releases of GCC 1 and GCC 2 are available in the
5178@file{old-releases} directory on the @uref{../mirrors.html,,GCC mirror
5179sites}. Header bugs may generally be avoided using
5180@command{fixincludes}, but bugs or deficiencies in libraries and the
5181operating system may still cause problems.
5182
5183Support for older systems as targets for cross-compilation is less
5184problematic than support for them as hosts for GCC; if an enthusiast
5185wishes to make such a target work again (including resurrecting any of
80521187 5186the targets that never worked with GCC 2, starting from the last
c7bdf0a6
ZW
5187version before they were removed), patches
5188@uref{../contribute.html,,following the usual requirements} would be
5189likely to be accepted, since they should not affect the support for more
5190modern targets.
f9047ed3
JM
5191
5192For some systems, old versions of GNU binutils may also be useful,
021c4bfd 5193and are available from @file{pub/binutils/old-releases} on
2139a88a 5194@uref{https://sourceware.org/mirrors.html,,sourceware.org mirror sites}.
f9047ed3
JM
5195
5196Some of the information on specific systems above relates to
5197such older systems, but much of the information
5198about GCC on such systems (which may no longer be applicable to
f42974dc 5199current GCC) is to be found in the GCC texinfo manual.
f9047ed3 5200
f42974dc 5201@html
b8db17af 5202<hr />
f42974dc 5203@end html
e2ebe1c2
UB
5204@anchor{elf}
5205@heading all ELF targets (SVR4, Solaris 2, etc.)
38209993
LG
5206C++ support is significantly better on ELF targets if you use the
5207@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of
5208inlines, vtables and template instantiations will be discarded
5209automatically.
f42974dc
DW
5210
5211
5212@html
b8db17af 5213<hr />
f42974dc
DW
5214<p>
5215@end html
5216@ifhtml
5217@uref{./index.html,,Return to the GCC Installation page}
5218@end ifhtml
5219@end ifset
5220
aed5964b
JM
5221@c ***GFDL********************************************************************
5222@ifset gfdlhtml
5223@include fdl.texi
5224@html
b8db17af 5225<hr />
aed5964b
JM
5226<p>
5227@end html
5228@ifhtml
5229@uref{./index.html,,Return to the GCC Installation page}
5230@end ifhtml
5231@end ifset
5232
f42974dc
DW
5233@c ***************************************************************************
5234@c Part 6 The End of the Document
5235@ifinfo
5236@comment node-name, next, previous, up
aed5964b 5237@node Concept Index, , GNU Free Documentation License, Top
f42974dc
DW
5238@end ifinfo
5239
5240@ifinfo
5241@unnumbered Concept Index
5242
5243@printindex cp
5244
5245@contents
5246@end ifinfo
5247@bye