Necessary to build libgcj, the GCJ runtime.
-@item libelf version 0.8.12 (or later)
-
-Necessary to build link-time optimization (LTO) support. It can be
-downloaded from @uref{http://www.mr511.de/software/libelf-0.8.12.tar.gz},
-though it is commonly available in several systems. The version in
-IRIX 6.5 doesn't work since it lacks @file{gelf.h}. The version in
-Solaris 2 does work.
-
-The @option{--with-libelf} configure option should be used if libelf is
-not installed in your default library search patch.
-
@end table
@heading Tools/packages necessary for modifying GCC
Necessary when targetting Solaris 2 with Sun @command{ld}, building
@samp{libstdc++}, and not using @option{--disable-symvers}. A helper
scripts needs @samp{Glob.pm}, which is missing from @command{perl} 5.005
-included in Solaris~8. The bundled @command{perl} in Solaris~9 and up
+included in Solaris@tie{}8. The bundled @command{perl} in Solaris@tie{}9 and up
works.
Used by various scripts to generate some files included in SVN (mainly
Unicode-related and rarely changing) from source tables.
To configure GCC:
@smallexample
- % mkdir @var{objdir}
- % cd @var{objdir}
- % @var{srcdir}/configure [@var{options}] [@var{target}]
+% mkdir @var{objdir}
+% cd @var{objdir}
+% @var{srcdir}/configure [@var{options}] [@var{target}]
@end smallexample
@heading Distributor options
will be built. Package names currently recognized in the GCC tree are
@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc},
-@samp{ada}, @samp{libada}, @samp{libjava} and @samp{libobjc}.
+@samp{ada}, @samp{libada}, @samp{libjava}, @samp{libgo}, and @samp{libobjc}.
Note @samp{libiberty} does not support shared libraries at all.
Use @option{--disable-shared} to build only static libraries. Note that
Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
This option is only supported on ARM targets.
-@item --with-fpmath=sse
-Specify if the compiler should default to @option{-msse2} and
-@option{-mfpmath=sse}. This option is only supported on i386 and
-x86-64 targets.
+@item --with-fpmath=@var{isa}
+This options sets @option{-mfpmath=sse} by default and specifies the default
+ISA for floating-point arithmetics. You can select either @samp{sse} which
+enables @option{-msse2} or @samp{avx} which enables @option{-mavx} by default.
+This option is only supported on i386 and x86-64 targets.
@item --with-divide=@var{type}
Specify how the compiler should generate code for checking for
grep language= */config-lang.in
@end smallexample
Currently, you can use any of the following:
-@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran}, @code{java},
-@code{objc}, @code{obj-c++}.
+@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran},
+@code{go}, @code{java}, @code{objc}, @code{obj-c++}.
Building the Ada compiler has special requirements, see below.
If you do not pass this flag, or specify the option @code{all}, then all
default languages available in the @file{gcc} sub-tree will be configured.
-Ada and Objective-C++ are not default languages; the rest are.
-Re-defining @code{LANGUAGES} when calling @samp{make} @strong{does not}
-work anymore, as those language sub-directories might not have been
-configured!
+Ada, Go and Objective-C++ are not default languages; the rest are.
@item --enable-stage1-languages=@var{lang1},@var{lang2},@dots{}
Specify that a particular subset of compilers and their runtime
Specify that the run-time libraries for stack smashing protection
should not be built.
+@item --disable-libquadmath
+Specify that the GCC quad-precision math library should not be built.
+On some systems, the library is required to be linkable when building
+the Fortran front end, unless @option{--disable-libquadmath-support}
+is used.
+
+@item --disable-libquadmath-support
+Specify that the Fortran front end and @code{libgfortran} do not add
+support for @code{libquadmath} on systems supporting it.
+
@item --disable-libgomp
Specify that the run-time libraries used by GOMP should not be built.
@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.
+stage 2 and later when bootstrapping GCC. If neither --with-boot-libs
+nor --with-host-libstdcxx is set to a value, then the default is
+@samp{-static-libstdc++ -static-libgcc}.
@item --with-boot-libs=@var{libs}
This option may be used to set libraries to be used when linking stage 2
GLIBC 2.11 or above, otherwise disabled.
@item --enable-lto
+@itemx --disable-lto
Enable support for link-time optimization (LTO). This is enabled by
-default if a working libelf implementation is found (see
-@option{--with-libelf}).
-
-@item --with-libelf=@var{pathname}
-@itemx --with-libelf-include=@var{pathname}
-@itemx --with-libelf-lib=@var{pathname}
-If you do not have libelf installed in a standard location and you
-want to enable support for link-time optimization (LTO), you can
-explicitly specify the directory where libelf is installed
-(@samp{--with-libelf=@var{libelfinstalldir}}). The
-@option{--with-libelf=@var{libelfinstalldir}} option is shorthand for
-@option{--with-libelf-include=@var{libelfinstalldir}/include}
-@option{--with-libelf-lib=@var{libelfinstalldir}/lib}.
+default, and may be disabled using @option{--disable-lto}.
@item --enable-gold
Enable support for using @command{gold} as the linker. If gold support is
@table @code
@item --with-sysroot
@itemx --with-sysroot=@var{dir}
-Tells GCC to consider @var{dir} as the root of a tree that contains a
-(subset of) the root filesystem of the target operating system.
+Tells GCC to consider @var{dir} as the root of a tree that contains
+(a subset of) the root filesystem of the target operating system.
Target system headers, libraries and run-time object files will be
searched in there. More specifically, this acts as if
@option{--sysroot=@var{dir}} was added to the default options of the built
@end table
+@subsubheading Overriding @command{configure} test results
+
+Sometimes, it might be necessary to override the result of some
+@command{configure} test, for example in order to ease porting to a new
+system or work around a bug in a test. The toplevel @command{configure}
+script provides three variables for this:
+
+@table @code
+
+@item build_configargs
+@cindex @code{build_configargs}
+The contents of this variable is passed to all build @command{configure}
+scripts.
+
+@item host_configargs
+@cindex @code{host_configargs}
+The contents of this variable is passed to all host @command{configure}
+scripts.
+
+@item target_configargs
+@cindex @code{target_configargs}
+The contents of this variable is passed to all target @command{configure}
+scripts.
+
+@end table
+
+In order to avoid shell and @command{make} quoting issues for complex
+overrides, you can pass a setting for @env{CONFIG_SITE} and set
+variables in the site file.
+
@html
<hr />
<p>
debugging information.)
@smallexample
- make BOOT_CFLAGS='-O' bootstrap
+make BOOT_CFLAGS='-O' bootstrap
@end smallexample
You can place non-default optimization flags into @code{BOOT_CFLAGS}; they
assumes that DejaGnu has been installed under @file{/usr/local}):
@smallexample
- TCL_LIBRARY = /usr/local/share/tcl8.0
- DEJAGNULIBS = /usr/local/share/dejagnu
+TCL_LIBRARY = /usr/local/share/tcl8.0
+DEJAGNULIBS = /usr/local/share/dejagnu
@end smallexample
(On systems such as Cygwin, these paths are required to be actual
Finally, you can run the testsuite (which may take a long time):
@smallexample
- cd @var{objdir}; make -k check
+cd @var{objdir}; make -k check
@end smallexample
This will test various components of GCC, such as compiler
testsuite is to use
@smallexample
- make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
+make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
@end smallexample
Likewise, in order to run only the @command{g++} ``old-deja'' tests in
the testsuite with filenames matching @samp{9805*}, you would use
@smallexample
- make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
+make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
@end smallexample
The @file{*.exp} files are located in the testsuite directories of the GCC
work outside the makefiles. For example,
@smallexample
- make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
+make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
@end smallexample
will run the standard @command{g++} testsuites (``unix'' is the target name
with a syntax similar to the brace expansion of popular shells:
@smallexample
- @dots{}"--target_board=arm-sim\@{-mhard-float,-msoft-float\@}\@{-O1,-O2,-O3,\@}"
+@dots{}"--target_board=arm-sim\@{-mhard-float,-msoft-float\@}\@{-O1,-O2,-O3,\@}"
@end smallexample
(Note the empty option caused by the trailing comma in the final group.)
target, as if you had specified all possible combinations yourself:
@smallexample
- --target_board=arm-sim/-mhard-float/-O1
- --target_board=arm-sim/-mhard-float/-O2
- --target_board=arm-sim/-mhard-float/-O3
- --target_board=arm-sim/-mhard-float
- --target_board=arm-sim/-msoft-float/-O1
- --target_board=arm-sim/-msoft-float/-O2
- --target_board=arm-sim/-msoft-float/-O3
- --target_board=arm-sim/-msoft-float
+--target_board=arm-sim/-mhard-float/-O1
+--target_board=arm-sim/-mhard-float/-O2
+--target_board=arm-sim/-mhard-float/-O3
+--target_board=arm-sim/-mhard-float
+--target_board=arm-sim/-msoft-float/-O1
+--target_board=arm-sim/-msoft-float/-O2
+--target_board=arm-sim/-msoft-float/-O3
+--target_board=arm-sim/-msoft-float
@end smallexample
They can be combined as many times as you wish, in arbitrary ways. This
list:
@smallexample
- @dots{}"--target_board=unix/-Wextra\@{-O3,-fno-strength\@}\@{-fomit-frame,\@}"
+@dots{}"--target_board=unix/-Wextra\@{-O3,-fno-strength\@}\@{-fomit-frame,\@}"
@end smallexample
will generate four combinations, all involving @samp{-Wextra}.
special makefile target:
@smallexample
- make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
+make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
@end smallexample
For example,
@smallexample
- make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
+make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
@end smallexample
will run three concurrent ``make-gcc'' testsuites, eventually testing all
@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
@smallexample
- @var{srcdir}/contrib/test_summary -p your_commentary.txt \
- -m gcc-testresults@@gcc.gnu.org |sh
+@var{srcdir}/contrib/test_summary -p your_commentary.txt \
+ -m gcc-testresults@@gcc.gnu.org |sh
@end smallexample
This script uses the @command{Mail} program to send the results, so
Now that GCC has been built (and optionally tested), you can install it with
@smallexample
-cd @var{objdir}; make install
+cd @var{objdir} && make install
@end smallexample
We strongly recommend to install into a target directory where there is
make DESTDIR=@var{path-to-rootdir} install
@end smallexample
-@noindent where @var{path-to-rootdir} is the absolute path of
+@noindent
+where @var{path-to-rootdir} is the absolute path of
a directory relative to which all installation paths will be
interpreted. Note that the directory specified by @code{DESTDIR}
need not exist yet; it will be created if necessary.
not as a bug, because it gives slightly more control to the packagers
using the @code{DESTDIR} feature.
+You can install stripped programs and libraries with
+
+@smallexample
+make install-strip
+@end smallexample
+
If you are bootstrapping a released version of GCC then please
quickly review the build status page for your release, available from
@uref{http://gcc.gnu.org/buildstat.html}.
The following error:
@smallexample
- Error: register required
+Error: register required
@end smallexample
indicates that you should upgrade to a newer version of the binutils.
version, but the current version, from GNU binutils 2.20.1, is known to
work.
-Solaris~2/x86 doesn't support the execution of SSE/SSE2 instructions
-before Solaris~9 4/04, even if the CPU supports them. Programs will
+Solaris@tie{}2/x86 doesn't support the execution of SSE/SSE2 instructions
+before Solaris@tie{}9 4/04, even if the CPU supports them. Programs will
receive @code{SIGILL} if they try. The fix is available both in
-Solaris~9 Update~6 and kernel patch 112234-12 or newer. There is no
+Solaris@tie{}9 Update@tie{}6 and kernel patch 112234-12 or newer. There is no
corresponding patch for Solaris 8. To avoid this problem,
@option{-march} defaults to @samp{pentiumpro} on Solaris 8 and 9. If
you have the patch installed, you can configure GCC with an appropriate
@var{LDR_CNTRL} environment variable, e.g.,
@smallexample
- % LDR_CNTRL=MAXDATA=0x50000000
- % export LDR_CNTRL
+% LDR_CNTRL=MAXDATA=0x50000000
+% export LDR_CNTRL
@end smallexample
One can start with a pre-compiled version of GCC to build from
one may use GNU Bash instead of AIX @command{/bin/sh}, e.g.,
@smallexample
- % CONFIG_SHELL=/opt/freeware/bin/bash
- % export CONFIG_SHELL
+% CONFIG_SHELL=/opt/freeware/bin/bash
+% export CONFIG_SHELL
@end smallexample
and then proceed as described in @uref{build.html,,the build
Extract the shared objects from the currently installed
@file{libstdc++.a} archive:
@smallexample
- % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
+% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
@end smallexample
Enable the @samp{F_LOADONLY} flag so that the shared object will be
available for runtime dynamic loading, but not linking:
@smallexample
- % strip -e libstdc++.so.4 libstdc++.so.5
+% strip -e libstdc++.so.4 libstdc++.so.5
@end smallexample
Archive the runtime-only shared object in the GCC 3.4
@file{libstdc++.a} archive:
@smallexample
- % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
+% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
@end smallexample
Linking executables and shared libraries may produce warnings of
recommend using the following initial sequence of commands
@smallexample
- % CONFIG_SHELL=/bin/ksh
- % export CONFIG_SHELL
+% CONFIG_SHELL=/bin/ksh
+% export CONFIG_SHELL
@end smallexample
@noindent
117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for
SPARC, 117172-11 or newer for Intel) that address this problem.
-Solaris~8 provides an alternate implementation of the thread libraries,
+Solaris@tie{}8 provides an alternate implementation of the thread libraries,
@samp{libpthread} and @samp{libthread}. They are required for TLS
-support and have been made the default in Solaris~9, so they are always
-used on Solaris~8.
+support and have been made the default in Solaris@tie{}9, so they are always
+used on Solaris@tie{}8.
-Thread-local storage (TLS) is supported in Solaris~8 and 9, but requires
+Thread-local storage (TLS) is supported in Solaris@tie{}8 and 9, but requires
some patches. The @samp{libthread} patches provide the
@code{__tls_get_addr} (SPARC, 64-bit x86) resp.@ @code{___tls_get_addr}
-(32-bit x86) functions. On Solaris~8, you need 108993-26 or newer on
-SPARC, 108994-26 or newer on Intel. On Solaris~9, the necessary support
-on SPARC is present since FCS, while 114432-05 or newer is reqired on
-Intel. Additionally, on Solaris~8, patch 109147-14 or newer on SPARC or
+(32-bit x86) functions. On Solaris@tie{}8, you need 108993-26 or newer on
+SPARC, 108994-26 or newer on Intel. On Solaris@tie{}9, the necessary support
+on SPARC is present since FCS, while 114432-05 or newer is required on
+Intel. Additionally, on Solaris@tie{}8, patch 109147-14 or newer on SPARC or
109148-22 or newer on Intel are required for the Sun @command{ld} and
-runtime linker (@command{ld.so.1}) support. Again, Solaris~9/SPARC
+runtime linker (@command{ld.so.1}) support. Again, Solaris@tie{}9/SPARC
works since FCS, while 113986-02 is required on Intel. The linker
patches must be installed even if GNU @command{ld} is used. Sun
-@command{as} in Solaris~8 and 9 doesn't support the necessary
+@command{as} in Solaris@tie{}8 and 9 doesn't support the necessary
relocations, so GNU @command{as} must be used. The @command{configure}
script checks for those prerequisites and automatically enables TLS
support if they are met. Although those minimal patch versions should
not that of GMP or MPFR or MPC). For example on a Solaris 9 system:
@smallexample
- % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
+% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
@end smallexample
@html
on a Solaris 9 system:
@smallexample
- % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
+% ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
@end smallexample
The following compiler flags must be specified in the configure
step in order to bootstrap this target with the Sun compiler:
@smallexample
- % CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}]
+% CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}]
@end smallexample
@noindent