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