Necessary to build libgcj, the GCJ runtime.
-@end table
+@item MPC Library version 0.6.0 (or later)
+
+Optional when building GCC@. Having this library will enable
+additional optimizations on complex numbers. It can be downloaded
+from @uref{http://www.multiprecision.org/mpc/}. The
+@option{--with-mpc} configure option should be used if your MPC
+Library is not installed in your default library search path. See
+also @option{--with-mpc-lib} and @option{--with-mpc-include}.
+Alternatively, if an MPC source distribution is found in a
+subdirectory of your GCC sources named @file{mpc}, it will be built
+together with GCC@.
+@end table
@heading Tools/packages necessary for modifying GCC
@table @asis
-@item autoconf version 2.59
-@itemx GNU m4 version 1.4 (or later)
+@item autoconf version 2.64
+@itemx GNU m4 version 1.4.6 (or later)
Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@:
to regenerate @file{configure} and @file{config.in} files.
-@item automake version 1.9.6
+@item automake version 1.11
Necessary when modifying a @file{Makefile.am} file to regenerate its
associated @file{Makefile.in}.
as any of their subdirectories.
For directories that use automake, GCC requires the latest release in
-the 1.9.x series, which is currently 1.9.6. When regenerating a directory
-to a newer version, please update all the directories using an older 1.9.x
+the 1.11 series, which is currently 1.11. When regenerating a directory
+to a newer version, please update all the directories using an older 1.11
to the latest released version.
@item gettext version 0.14.5 (or later)
@itemx antlr binary
If you wish to build the @command{gjdoc} binary in libjava, you will
-need to have a @file{antlr.jar} library available. The library is
+need to have an @file{antlr.jar} library available. The library is
searched in system locations but can be configured with
@option{--with-antlr-jar=} instead. When configuring with
@option{--enable-java-maintainer-mode}, you will need to have one of
(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld},
@file{opcodes}, @dots{}) to the directory containing the GCC sources.
-Likewise, the GMP and MPFR libraries can be automatically built together
-with GCC. Unpack the GMP and/or MPFR source distributions in the
-directory containing the GCC sources and rename their directories to
-@file{gmp} and @file{mpfr}, respectively (or use symbolic links with the
-same name).
+Likewise the GMP, MPFR and MPC libraries can be automatically built
+together with GCC. Unpack the GMP, MPFR and/or MPC source
+distributions in the directory containing the GCC sources and rename
+their directories to @file{gmp}, @file{mpfr} and @file{mpc},
+respectively (or use symbolic links with the same name).
@html
<hr />
Specify the installation directory for the shared libgcc library. The
default is @file{@var{libdir}}.
+@item --datarootdir=@var{dirname}
+Specify the root of the directory tree for read-only architecture-independent
+data files referenced by GCC@. The default is @file{@var{prefix}/share}.
+
@item --infodir=@var{dirname}
Specify the installation directory for documentation in info format.
-The default is @file{@var{prefix}/info}.
+The default is @file{@var{datarootdir}/info}.
@item --datadir=@var{dirname}
Specify the installation directory for some architecture-independent
-data files referenced by GCC@. The default is @file{@var{prefix}/share}.
+data files referenced by GCC@. The default is @file{@var{datarootdir}}.
+
+@item --docdir=@var{dirname}
+Specify the installation directory for documentation files (other
+than Info) for GCC@. The default is @file{@var{datarootdir}/doc}.
+
+@item --htmldir=@var{dirname}
+Specify the installation directory for HTML documentation files.
+The default is @file{@var{docdir}}.
+
+@item --pdfdir=@var{dirname}
+Specify the installation directory for PDF documentation files.
+The default is @file{@var{docdir}}.
@item --mandir=@var{dirname}
Specify the installation directory for manual pages. The default is
-@file{@var{prefix}/man}. (Note that the manual pages are only extracts from
-the full GCC manuals, which are provided in Texinfo format. The manpages
+@file{@var{datarootdir}/man}. (Note that the manual pages are only extracts
+from the full GCC manuals, which are provided in Texinfo format. The manpages
are derived by an automatic conversion process from parts of the full
manual.)
@item --with-gxx-include-dir=@var{dirname}
Specify
-the installation directory for G++ header files. The default is
-@file{@var{prefix}/include/c++/@var{version}}.
+the installation directory for G++ header files. The default depends
+on other configuration options, and differs between cross and native
+configurations.
@end table
@end table
+@item --with-multilib-list=@var{list}
+@itemx --without-multilib-list
+Specify what multilibs to build.
+Currently only implemented for sh*-*-*.
+
+@var{list} is a comma separated list of CPU names. These must be of the
+form @code{sh*} or @code{m*} (in which case they match the compiler option
+for that processor). The list should not contain any endian options -
+these are handled by @option{--with-endian}.
+
+If @var{list} is empty, then there will be no multilibs for extra
+processors. The multilib for the secondary endian remains enabled.
+
+As a special case, if an entry in the list starts with a @code{!}
+(exclamation point), then it is added to the list of excluded multilibs.
+Entries of this sort should be compatible with @samp{MULTILIB_EXCLUDES}
+(once the leading @code{!} has been stripped).
+
+If @option{--with-multilib-list} is not given, then a default set of
+multilibs is selected based on the value of @option{--target}. This is
+usually the complete set of libraries, but some targets imply a more
+specialized subset.
+
+Example 1: to configure a compiler for SH4A only, but supporting both
+endians, with little endian being the default:
+@smallexample
+--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
+@end smallexample
+
+Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
+only little endian SH4AL:
+@smallexample
+--with-cpu=sh4a --with-endian=little,big --with-multilib-list=sh4al,!mb/m4al
+@end smallexample
+
+@item --with-endian=@var{endians}
+Specify what endians to use.
+Currently only implemented for sh*-*-*.
+
+@var{endians} may be one of the following:
+@table @code
+@item big
+Use big endian exclusively.
+@item little
+Use little endian exclusively.
+@item big,little
+Use big endian by default. Provide a multilib for little endian.
+@item little,big
+Use little endian by default. Provide a multilib for big endian.
+@end table
+
@item --enable-threads
Specify that the target
supports threads. This affects the Objective-C compiler and runtime
This option is only supported on some targets, including ARM, i386, M68k,
PowerPC, and SPARC@. The @option{--with-cpu-32} and
@option{--with-cpu-64} options specify separate default CPUs for
-32-bit and 64-bit modes; these options are only supported for i386 and
-x86-64.
+32-bit and 64-bit modes; these options are only supported for i386,
+x86-64 and PowerPC.
@item --with-schedule=@var{cpu}
@itemx --with-arch=@var{cpu}
On MIPS targets, make @option{-mno-llsc} the default when no
@option{-mllsc} option is passed.
+@item --with-synci
+On MIPS targets, make @option{-msynci} the default when no
+@option{-mno-synci} option is passed.
+
+@item --without-synci
+On MIPS targets, make @option{-mno-synci} the default when no
+@option{-msynci} option is passed. This is the default.
+
@item --with-mips-plt
On MIPS targets, make use of copy relocations and PLTs.
These features are extensions to the traditional
will try to guess whether the @code{.init_array} and
@code{.fini_array} sections are supported and, if they are, use them.
+@item --enable-build-with-cxx
+Build GCC using a C++ compiler rather than a C compiler. This is an
+experimental option which may become the default in a later release.
+
@item --enable-maintainer-mode
The build rules that
regenerate the GCC master message catalog @file{gcc.pot} are normally
@itemx --with-mpfr=@var{pathname}
@itemx --with-mpfr-include=@var{pathname}
@itemx --with-mpfr-lib=@var{pathname}
-If you do not have GMP (the GNU Multiple Precision library) and the
-MPFR Libraries installed in a standard location and you want to build
-GCC, you can explicitly specify the directory where they are installed
-(@samp{--with-gmp=@var{gmpinstalldir}},
-@samp{--with-mpfr=@var{mpfrinstalldir}}). The
+@itemx --with-mpc=@var{pathname}
+@itemx --with-mpc-include=@var{pathname}
+@itemx --with-mpc-lib=@var{pathname}
+If you do not have GMP (the GNU Multiple Precision library), the MPFR
+library and/or the MPC library installed in a standard location and
+you want to build GCC, you can explicitly specify the directory where
+they are installed (@samp{--with-gmp=@var{gmpinstalldir}},
+@samp{--with-mpfr=@var{mpfrinstalldir}},
+@samp{--with-mpc=@var{mpcinstalldir}}). The
@option{--with-gmp=@var{gmpinstalldir}} option is shorthand for
@option{--with-gmp-lib=@var{gmpinstalldir}/lib} and
@option{--with-gmp-include=@var{gmpinstalldir}/include}. Likewise the
@option{--with-mpfr=@var{mpfrinstalldir}} option is shorthand for
@option{--with-mpfr-lib=@var{mpfrinstalldir}/lib} and
-@option{--with-mpfr-include=@var{mpfrinstalldir}/include}. If these
+@option{--with-mpfr-include=@var{mpfrinstalldir}/include}, also the
+@option{--with-mpc=@var{mpcinstalldir}} option is shorthand for
+@option{--with-mpc-lib=@var{mpcinstalldir}/lib} and
+@option{--with-mpc-include=@var{mpcinstalldir}/include}. If these
shorthand assumptions are not correct, you can use the explicit
include and lib options directly.
option; shared library dependencies will cause the linker to search
for the standard C++ library automatically.
+@item --with-stage1-ldflags=@var{flags}
+This option may be used to set linker flags to be used when linking
+stage 1 of GCC. These are also used when linking GCC if configured with
+@option{--disable-bootstrap}. By default no special flags are used.
+
+@item --with-stage1-libs=@var{libs}
+This option may be used to set libraries to be used when linking stage 1
+of GCC. These are also used when linking GCC if configured with
+@option{--disable-bootstrap}. The default is the argument to
+@option{--with-host-libstdcxx}, if specified.
+
+@item --with-boot-ldflags=@var{flags}
+This option may be used to set linker flags to be used when linking
+stage 2 and later when bootstrapping GCC. By default no special flags
+are used.
+
+@item --with-boot-libs=@var{libs}
+This option may be used to set libraries to be used when linking stage 2
+and later when bootstrapping GCC. The default is the argument to
+@option{--with-host-libstdcxx}, if specified.
+
@item --with-debug-prefix-map=@var{map}
Convert source directory names using @option{-fdebug-prefix-map} when
building runtime libraries. @samp{@var{map}} is a space-separated
list of maps of the form @samp{@var{old}=@var{new}}.
+@item --enable-linker-build-id
+Tells GCC to pass @option{--build-id} option to the linker for all final
+links (links performed without the @option{-r} or @option{--relocatable}
+option), if the linker supports it. If you specify
+@option{--enable-linker-build-id}, but your linker does not
+support @option{--build-id} option, a warning is issued and the
+@option{--enable-linker-build-id} option is ignored. The default is off.
+
+@item --enable-gnu-unique-object
+@itemx --disable-gnu-unique-object
+Tells GCC to use the gnu_unique_object relocation for C++ template
+static data members and inline function local statics. Enabled by
+default for a native toolchain with an assembler that accepts it and
+GLIBC 2.11 or above, otherwise disabled.
+
@end table
@subheading Cross-Compiler-Specific Options
if the directory layouts are different between the system you are building
GCC on, and the system where you will deploy it.
-For example, on a @option{ia64-hp-hpux} system, you may have the GNU
+For example, on an @samp{ia64-hp-hpux} system, you may have the GNU
assembler and linker in @file{/usr/bin}, and the native tools in a
different path, and build a toolchain that expects to find the
native tools in @file{/usr/bin}.
compilation flags, as for non-bootstrapped target libraries.
Again, if the native compiler miscompiles the stage1 compiler, you may
need to work around this by avoiding non-working parts of the stage1
-compiler. Use @code{STAGE1_LIBCFLAGS} to this end.
+compiler. Use @code{STAGE1_TFLAGS} to this end.
If you used the flag @option{--enable-languages=@dots{}} to restrict
the compilers to be built, only those you've actually enabled will be
@code{powerpc64-unknown-linux-gnu} host. In this case, pass
@option{--enable-bootstrap} to the configure script.
+@code{BUILD_CONFIG} can be used to bring in additional customization
+to the build. It can be set to a whitespace-separated list of names.
+For each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will
+be included by the top-level @file{Makefile}, bringing in any settings
+it contains. The default @code{BUILD_CONFIG} can be set using the
+configure option @option{--with-build-config=@code{NAME}...}. Some
+examples of supported build configurations are:
+
+@table @asis
+@item @samp{bootstrap-O1}
+Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds
+@option{-O1} to it. @samp{BUILD_CONFIG=bootstrap-O1} is equivalent to
+@samp{BOOT_CFLAGS='-g -O1'}.
+
+@item @samp{bootstrap-O3}
+Analogous to @code{bootstrap-O1}.
+
+@item @samp{bootstrap-debug}
+Verifies that the compiler generates the same executable code, whether
+or not it is asked to emit debug information. To this end, this
+option builds stage2 host programs without debug information, and uses
+@file{contrib/compare-debug} to compare them with the stripped stage3
+object files. If @code{BOOT_CFLAGS} is overridden so as to not enable
+debug information, stage2 will have it, and stage3 won't. This option
+is enabled by default when GCC bootstrapping is enabled, if
+@code{strip} can turn object files compiled with and without debug
+info into identical object files. In addition to better test
+coverage, this option makes default bootstraps faster and leaner.
+
+@item @samp{bootstrap-debug-big}
+Rather than comparing stripped object files, as in
+@code{bootstrap-debug}, this option saves internal compiler dumps
+during stage2 and stage3 and compares them as well, which helps catch
+additional potential problems, but at a great cost in terms of disk
+space. It can be specified in addition to @samp{bootstrap-debug}.
+
+@item @samp{bootstrap-debug-lean}
+This option saves disk space compared with @code{bootstrap-debug-big},
+but at the expense of some recompilation. Instead of saving the dumps
+of stage2 and stage3 until the final compare, it uses
+@option{-fcompare-debug} to generate, compare and remove the dumps
+during stage3, repeating the compilation that already took place in
+stage2, whose dumps were not saved.
+
+@item @samp{bootstrap-debug-lib}
+This option tests executable code invariance over debug information
+generation on target libraries, just like @code{bootstrap-debug-lean}
+tests it on host programs. It builds stage3 libraries with
+@option{-fcompare-debug}, and it can be used along with any of the
+@code{bootstrap-debug} options above.
+
+There aren't @code{-lean} or @code{-big} counterparts to this option
+because most libraries are only build in stage3, so bootstrap compares
+would not get significant coverage. Moreover, the few libraries built
+in stage2 are used in stage3 host programs, so we wouldn't want to
+compile stage2 libraries with different options for comparison purposes.
+
+@item @samp{bootstrap-debug-ckovw}
+Arranges for error messages to be issued if the compiler built on any
+stage is run without the option @option{-fcompare-debug}. This is
+useful to verify the full @option{-fcompare-debug} testing coverage. It
+must be used along with @code{bootstrap-debug-lean} and
+@code{bootstrap-debug-lib}.
+
+@item @samp{bootstrap-time}
+Arranges for the run time of each program started by the GCC driver,
+built in any stage, to be logged to @file{time.log}, in the top level of
+the build tree.
+
+@end table
@section Building a cross compiler
@samp{make pdf} in place of @samp{make dvi}, you can create documentation
in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
is included with Texinfo version 4.8 and later. You can also
-@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
+@uref{http://shop.fsf.org/,,buy printed manuals from the
Free Software Foundation}, though such manuals may not be for the most
recent version of GCC@.
@uref{http://pware.hvcc.edu,,Hudson Valley Community College Open Source Software for IBM System p};
@item
-@uref{http://www.perzl.org/aix,,AIX 5L and 6 Open Source Packages}.
+@uref{http://www.perzl.org/aix/,,AIX 5L and 6 Open Source Packages}.
@end itemize
@item
@item
@uref{#m68k-uclinux,,m68k-uclinux}
@item
+@uref{#mep-x-elf,,mep-*-elf}
+@item
@uref{#mips-x-x,,mips-*-*}
@item
@uref{#mips-sgi-irix5,,mips-sgi-irix5}
@item
@uref{http://www.nongnu.org/avr/,,http://www.nongnu.org/avr/}
@item
-@uref{http://home.overta.ru/users/denisc/,,http://home.overta.ru/users/denisc/}
-@item
@uref{http://www.amelek.gda.pl/avr/,,http://www.amelek.gda.pl/avr/}
@end itemize
@end html
@heading @anchor{x-x-freebsd}*-*-freebsd*
-The version of binutils installed in @file{/usr/bin} probably works with
-this release of GCC@. However, on FreeBSD 4, bootstrapping against the
-latest FSF binutils is known to improve overall testsuite results; and,
-on FreeBSD/alpha, using binutils 2.14 or later is required to build libjava.
-
-Support for FreeBSD 1 was discontinued in GCC 3.2.
-
-Support for FreeBSD 2 will be discontinued after GCC 3.4. The
-following was true for GCC 3.1 but the current status is unknown.
-For FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
-configuration support and files as shipped with GCC 2.95 are still in
-place. FreeBSD 2.2.7 has been known to bootstrap completely; however,
-it is unknown which version of binutils was used (it is assumed that it
-was the system copy in @file{/usr/bin}) and C++ EH failures were noted.
-
-For FreeBSD using the ELF file format: DWARF 2 debugging is now the
-default for all CPU architectures. It had been the default on
-FreeBSD/alpha since its inception. You may use @option{-gstabs} instead
-of @option{-g}, if you really want the old debugging format. There are
+Support for FreeBSD 1 was discontinued in GCC 3.2. Support for
+FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was
+discontinued in GCC 4.0.
+
+We support FreeBSD using the ELF file format with DWARF 2 debugging
+for all CPU architectures. You may use @option{-gstabs} instead of
+@option{-g}, if you really want the old debugging format. There are
no known issues with mixing object files and libraries with different
-debugging formats. Otherwise, this release of GCC should now match more
-of the configuration used in the stock FreeBSD configuration of GCC@. In
-particular, @option{--enable-threads} is now configured by default.
-However, as a general user, do not attempt to replace the system
-compiler with this release. Known to bootstrap and check with good
-results on FreeBSD 4.9-STABLE and 5-CURRENT@. In the past, known to
-bootstrap and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2,
-4.3, 4.4, 4.5, 4.8-STABLE@.
-
-In principle, @option{--enable-threads} is now compatible with
-@option{--enable-libgcj} on FreeBSD@. However, it has only been built
-and tested on @samp{i386-*-freebsd[45]} and @samp{alpha-*-freebsd[45]}.
-The static
-library may be incorrectly built (symbols are missing at link time).
-There is a rare timing-based startup hang (probably involves an
-assumption about the thread library). Multi-threaded boehm-gc (required for
-libjava) exposes severe threaded signal-handling bugs on FreeBSD before
-4.5-RELEASE@. Other CPU architectures
-supported by FreeBSD will require additional configuration tuning in, at
-the very least, both boehm-gc and libffi.
-
-Shared @file{libgcc_s.so} is now built and installed by default.
+debugging formats. Otherwise, this release of GCC should now match
+more of the configuration used in the stock FreeBSD configuration of
+GCC@. In particular, @option{--enable-threads} is now configured by
+default. However, as a general user, do not attempt to replace the
+system compiler with this release. Known to bootstrap and check with
+good results on FreeBSD 7.2-STABLE@. In the past, known to bootstrap
+and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4,
+4.5, 4.8, 4.9 and 5-CURRENT@.
+
+The version of binutils installed in @file{/usr/bin} probably works
+with this release of GCC@. Bootstrapping against the latest GNU
+binutils and/or the version found in /usr/ports/devel/binutils has
+been known to enable additional features and improve overall testsuite
+results. However, it is currently known that boehm-gc (which itself
+is required for java) may not configure properly on FreeBSD prior to
+the FreeBSD 7.0 release with GNU binutils after 2.16.1.
@html
<hr />
process resource limits (ulimit). Hard limits are configured in the
@file{/etc/security/limits} system configuration file.
+GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
+with an earlier release of GCC is recommended. Bootstrapping with XLC
+requires a larger data segment, which can be enabled through the
+@var{LDR_CNTRL} environment variable, e.g.,
+
+@smallexample
+ % LDR_CNTRL=MAXDATA=0x50000000
+ % export LDR_CNTRL
+@end smallexample
+
+One can start with a pre-compiled version of GCC to build from
+sources. One may delete GCC's ``fixed'' header files when starting
+with a version of GCC built for an earlier release of AIX.
+
To speed up the configuration phases of bootstrapping and installing GCC,
one may use GNU Bash instead of AIX @command{/bin/sh}, e.g.,
is the version of Make (see above).
The native @command{as} and @command{ld} are recommended for bootstrapping
-on AIX 4 and required for bootstrapping on AIX 5L@. The GNU Assembler
-reports that it supports WEAK symbols on AIX 4, which causes GCC to try to
-utilize weak symbol functionality although it is not supported. The GNU
-Assembler and Linker do not support AIX 5L sufficiently to bootstrap GCC@.
-The native AIX tools do interoperate with GCC@.
+on AIX@. The GNU Assembler, GNU Linker, and GNU Binutils version 2.20
+is required to bootstrap on AIX 5@. The native AIX tools do
+interoperate with GCC@.
Building @file{libstdc++.a} requires a fix for an AIX Assembler bug
APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a
fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
-referenced as APAR IY53606 (AIX 5.2) or a APAR IY54774 (AIX 5.1)
+referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
@samp{libstdc++} in GCC 3.4 increments the major version number of the
shared object and GCC installation places the @file{libstdc++.a}
original ABI by configuring for @samp{m68k-uclinuxoldabi} or
@samp{m68k-@var{vendor}-uclinuxoldabi}.
+
+@html
+<hr />
+@end html
+@heading @anchor{mep-x-elf}mep-*-elf
+Toshiba Media embedded Processor.
+This configuration is intended for embedded systems.
+
@html
<hr />
@end html
See @uref{http://freeware.sgi.com/} for more
information about using GCC on IRIX platforms.
+@html
+<hr />
+@end html
+@heading @anchor{moxie-x-elf}moxie-*-elf
+The moxie processor. See @uref{http://moxielogic.org/} for more
+information about this processor.
+
@html
<hr />
@end html
GCC 3.4 changed the default debugging format from STABS to DWARF-2 for
32-bit code on Solaris 7 and later. If you use the Sun assembler, this
change apparently runs afoul of Sun bug 4910101 (which is referenced as
-a x86-only problem by Sun, probably because they do not use DWARF-2).
+an x86-only problem by Sun, probably because they do not use DWARF-2).
A symptom of the problem is that you cannot compile C++ programs like
@command{groff} 1.19.1 without getting messages similar to the following:
Earlier versions of headers are incompatible with the new default semantics
of @code{extern inline} in @code{-std=c99} and @code{-std=gnu99} modes.
-@html
-<hr />
-@end html
-@heading @anchor{os2}OS/2
-
-GCC does not currently support OS/2. However, Andrew Zabolotny has been
-working on a generic OS/2 port with pgcc. The current code can be found
-at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}.
-
@html
<hr />
@end html