OSDN Git Service

* doc/contrib.texi, doc/install.texi, doc/standards.texi:
[pf3gnuchains/gcc-fork.git] / gcc / doc / install.texi
index 9ac21ee..072436a 100644 (file)
@@ -92,7 +92,7 @@ Free Documentation License}''.
 @ifinfo
 @insertcopying
 @end ifinfo
-@dircategory Programming
+@dircategory Software development
 @direntry
 * gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
 @end direntry
@@ -235,10 +235,10 @@ described below.
 @heading Tools/packages necessary for building GCC
 @table @asis
 @item ISO C90 compiler
-Necessary to bootstrap the GCC package, although versions of GCC prior
+Necessary to bootstrap GCC, although versions of GCC prior
 to 3.4 also allow bootstrapping with a traditional (K&R) C compiler.
 
-To make all languages in a cross-compiler or other configuration where
+To build all languages in a cross-compiler or other configuration where
 3-stage bootstrap is not performed, you need to start with an existing
 GCC binary (version 2.95 or later) because source code for language
 frontends other than C might use GCC extensions.
@@ -254,8 +254,8 @@ specific information.
 
 Necessary when running @command{configure} because some
 @command{/bin/sh} shells have bugs and may crash when configuring the
-target libraries.  In other cases, @command{/bin/sh} or even some
-@command{ksh} have disastrous corner-case performance problems.  This
+target libraries.  In other cases, @command{/bin/sh} or @command{ksh}
+have disastrous corner-case performance problems.  This
 can cause target @command{configure} runs to literally take days to
 complete in some cases.
 
@@ -284,27 +284,34 @@ obtained via FTP mirror sites.
 
 You must have GNU make installed to build GCC@.
 
-@item GNU tar version 1.12 (or later)
+@item GNU tar version 1.14 (or later)
 
 Necessary (only on some platforms) to untar the source code.  Many
 systems' @command{tar} programs will also work, only try GNU
 @command{tar} if you have problems.
 
-@item GNU Multiple Precision Library (GMP) version 4.0 (or later)
+@item GNU Multiple Precision Library (GMP) version 4.1 (or later)
 
-Necessary to build the Fortran frontend.  If you don't have it
+Necessary to build the Fortran frontend.  If you do not have it
 installed in your library search path, you will have to configure with
 the @option{--with-gmp} or @option{--with-gmp-dir} configure option.
 
-@item MPFR Library
+@item MPFR Library version 2.2 (or later)
 
 Necessary to build the Fortran frontend.  It can be downloaded from
-@uref{http://www.mpfr.org/}.  It is also included in the current GMP
-release (4.1.3) when configured with @option{--enable-mpfr}.
+@uref{http://www.mpfr.org/}.  The version of MPFR that is bundled with
+GMP 4.1.x contains numerous bugs.  Although GNU Fortran will appear
+to function with the buggy versions of MPFR, there are a few GNU Fortran
+bugs that will not be fixed when using this version.  It is strongly
+recommended to upgrade to at least MPFR version 2.2.
 
 The @option{--with-mpfr} or @option{--with-mpfr-dir} configure option should
 be used if your MPFR Library is not installed in your library search path.
 
+@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
+
+Necessary to build libgcj, the GCJ runtime.
+
 @end table
 
 
@@ -343,11 +350,11 @@ Necessary when modifying @command{gperf} input files, e.g.@:
 @file{gcc/cp/cfns.gperf} to regenerate its associated header file, e.g.@:
 @file{gcc/cp/cfns.h}.
 
-@item expect version ???
-@itemx tcl version ???
-@itemx dejagnu version 1.4.4 (or later)
+@item DejaGnu 1.4.4
+@itemx Expect
+@itemx Tcl
 
-Necessary to run the GCC testsuite.
+Necessary to run the GCC testsuite; see the section on testing for details.
 
 @item autogen version 5.5.4 (or later) and
 @itemx guile version 1.4.1 (or later)
@@ -355,19 +362,19 @@ Necessary to run the GCC testsuite.
 Necessary to regenerate @file{fixinc/fixincl.x} from
 @file{fixinc/inclhack.def} and @file{fixinc/*.tpl}.
 
-Necessary to run the @file{fixinc} @command{make check}.
+Necessary to run @samp{make check} for @file{fixinc}.
 
 Necessary to regenerate the top level @file{Makefile.in} file from
 @file{Makefile.tpl} and @file{Makefile.def}.
 
 @item GNU Bison version 1.28 (or later)
 Berkeley @command{yacc} (@command{byacc}) is also reported to work other
-than for java.
+than for GCJ.
 
 Necessary when modifying @file{*.y} files.
 
 Necessary to build GCC during development because the generated output
-files are not included in the CVS repository.  They are included in
+files are not included in the SVN repository.  They are included in
 releases.
 
 @item Flex version 2.5.4 (or later)
@@ -375,7 +382,7 @@ releases.
 Necessary when modifying @file{*.l} files.
 
 Necessary to build GCC during development because the generated output
-files are not included in the CVS repository.  They are included in
+files are not included in the SVN repository.  They are included in
 releases.
 
 @item Texinfo version 4.4 (or later)
@@ -383,34 +390,39 @@ releases.
 Necessary for running @command{makeinfo} when modifying @file{*.texi}
 files to test your changes.
 
+Necessary for running @command{make dvi} or @command{make pdf} to
+create printable documentation in DVI or PDF format.  Texinfo version
+4.8 or later is required for @command{make pdf}.
+
 Necessary to build GCC documentation during development because the
-generated output files are not included in the CVS repository.  They are
+generated output files are not included in the SVN repository.  They are
 included in releases.
 
 @item @TeX{} (any working version)
 
-Necessary for running @command{texi2dvi}, used when running
-@command{make dvi} to create DVI files.
+Necessary for running @command{texi2dvi} and @command{texi2pdf}, which 
+are used when running @command{make dvi} or @command{make pdf} to create
+DVI or PDF files, respectively.
 
-@item cvs version 1.10 (or later)
-@itemx ssh (any version)
+@item SVN (any version)
+@itemx SSH (any version)
 
-Necessary to access the CVS repository.  Public releases and weekly
+Necessary to access the SVN repository.  Public releases and weekly
 snapshots of the development sources are also available via FTP@.
 
-@item perl version 5.6.1 (or later)
+@item Perl version 5.6.1 (or later)
 
 Necessary when regenerating @file{Makefile} dependencies in libiberty.
 Necessary when regenerating @file{libiberty/functions.texi}.
 Necessary when generating manpages from Texinfo manuals.
 Necessary when targetting Darwin, building libstdc++,
 and not using @option{--disable-symvers}.
-Used by various scripts to generate some files included in CVS (mainly
+Used by various scripts to generate some files included in SVN (mainly
 Unicode-related and rarely changing) from source tables.
 
 @item GNU diffutils version 2.7 (or later)
 
-Necessary when creating changes to GCC source code to submit for review.
+Useful when submitting patches for the GCC source code.
 
 @item patch version 2.5.4 (or later)
 
@@ -440,7 +452,7 @@ own sources.
 @cindex Downloading GCC
 @cindex Downloading the Source
 
-GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP
+GCC is distributed via @uref{http://gcc.gnu.org/svn.html,,SVN} and FTP
 tarballs compressed with @command{gzip} or
 @command{bzip2}.  It is possible to download a full distribution or specific
 components.
@@ -499,7 +511,7 @@ for both native and cross targets.
 We use @var{srcdir} to refer to the toplevel source directory for
 GCC; we use @var{objdir} to refer to the toplevel build/object directory.
 
-If you obtained the sources via CVS, @var{srcdir} must refer to the top
+If you obtained the sources via SVN, @var{srcdir} must refer to the top
 @file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
 and not its @file{gcc} subdirectory, otherwise the build will fail.
 
@@ -995,6 +1007,10 @@ options and for @option{-mhard-float} or @option{-msoft-float}.  As with
 @option{--with-cpu}, which switches will be accepted and acceptable values
 of the arguments depend on the target.
 
+@item --with-mode=@var{mode}
+Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
+This option is only supported on ARM targets.
+
 @item --with-divide=@var{type}
 Specify how the compiler should generate code for checking for
 division by zero.  This option is only supported on the MIPS target.
@@ -1044,19 +1060,33 @@ catalog, configuring with @option{--enable-maintainer-mode} will enable
 this.  Note that you need a recent version of the @code{gettext} tools
 to do so.
 
+@item --disable-bootstrap
+For a native build, the default configuration is to perform
+a 3-stage bootstrap of the compiler when @samp{make} is invoked,
+testing that GCC can compile itself correctly.  If you want to disable
+this process, you can configure with @option{--disable-bootstrap}.
+
+@item --enable-bootstrap
+In special cases, you may want to perform a 3-stage build
+even if the target and host triplets are different.
+This could happen when the host can run code compiled for
+the target (e.g.@: host is i686-linux, target is i486-linux).
+Starting from GCC 4.2, to do this you have to configure explicitly
+with @option{--enable-bootstrap}.
+
 @item --enable-generated-files-in-srcdir
-Neither the .c and .h files that are generated from bison and flex nor the
+Neither the .c and .h files that are generated from Bison and flex nor the
 info manuals and man pages that are built from the .texi files are present
-in the CVS development tree.  When building GCC from that development tree,
-or from a snapshot which are created from CVS, then those generated files
-are placed in your build directory, which allows for the source to be in a
-readonly directory.
+in the SVN development tree.  When building GCC from that development tree,
+or from one of our snapshots, those generated files are placed in your
+build directory, which allows for the source to be in a readonly
+directory.
 
 If you configure with @option{--enable-generated-files-in-srcdir} then those
 generated files will go into the source directory.  This is mainly intended
 for generating release or prerelease tarballs of the GCC sources, since it
-is not a requirement that the users of source releases to have flex, bison, or
-makeinfo.
+is not a requirement that the users of source releases to have flex, Bison,
+or makeinfo.
 
 @item --enable-version-specific-runtime-libs
 Specify
@@ -1106,10 +1136,6 @@ do a @samp{make -C gcc gnatlib_and_tools}.
 Specify that the run-time libraries for stack smashing protection
 should not be built.
 
-@item --disable-libgcc-math
-Specify that the run-time libraries for arch and gcc specific math
-functions should not be built.
-
 @item --disable-libgomp
 Specify that the run-time libraries used by GOMP should not be built.
 
@@ -1179,7 +1205,7 @@ consistency checks of the requested complexity.  This does not change the
 generated code, but adds error checking within the compiler.  This will
 slow down the compiler and may only work properly if you are building
 the compiler with GCC@.  This is @samp{yes} by default when building
-from CVS or snapshots, but @samp{release} for releases.  More control
+from SVN or snapshots, but @samp{release} for releases.  More control
 over the checks may be had by specifying @var{list}.  The categories of
 checks available are @samp{yes} (most common checks
 @samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at
@@ -1259,6 +1285,14 @@ extension.  This is enabled by default only on PowerPC GNU/Linux
 systems.  Other systems may also support it, but require the user to
 specifically enable it.
 
+@item --with-long-double-128
+Specify if @code{long double} type should be 128-bit by default on selected
+GNU/Linux architectures.  If using @code{--without-long-double-128},
+@code{long double} will be by default 64-bit, the same as @code{double} type.
+When neither of these configure options are used, the default will be
+128-bit @code{long double} when built against GNU C Library 2.4 and later,
+64-bit @code{long double} otherwise.
+
 @end table
 
 @subheading Cross-Compiler-Specific Options
@@ -1307,8 +1341,6 @@ will be run on these files to make them compatible with GCC@.
 Tells GCC not use any target headers from a libc when building a cross
 compiler.  When crossing to GNU/Linux, you need the headers so GCC
 can build the exception handling for libgcc.
-See @uref{http://www.objsw.com/CrossGCC/,,CrossGCC} for more information
-on this option.
 
 @item --with-libs
 @itemx --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
@@ -1429,9 +1461,9 @@ file to compile into a @file{.class} file.
 Search for libiconv in @file{DIR/include} and @file{DIR/lib}.
 
 @item --enable-sjlj-exceptions
-Force use of @code{builtin_setjmp} for exceptions.  @samp{configure}
-ordinarily picks the correct value based on the platform.  Only use
-this option if you are sure you need a different setting.
+Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
+@samp{configure} ordinarily picks the correct value based on the platform.
+Only use this option if you are sure you need a different setting.
 
 @item --with-system-zlib
 Use installed @samp{zlib} rather than that included with GCC@.
@@ -1549,28 +1581,31 @@ that type mismatches occur, this could be the cause.
 
 The solution is not to use such a directory for building GCC@.
 
-When building from CVS or snapshots, or if you modify parser sources,
-you need the Bison parser generator installed.  Any version 1.25 or
-later should work; older versions may also work.  If you do not modify
+When building from SVN or snapshots, or if you modify parser sources,
+you need the Bison parser generator installed.  If you do not modify
 parser sources, releases contain the Bison-generated files and you do
 not need Bison installed to build them.
 
-When building from CVS or snapshots, or if you modify Texinfo
+When building from SVN or snapshots, or if you modify Texinfo
 documentation, you need version 4.4 or later of Texinfo installed if you
 want Info documentation to be regenerated.  Releases contain Info
 documentation pre-built for the unmodified documentation in the release.
 
 @section Building a native compiler
 
-For a native build, the command @samp{make} will trigger a 3-stage
-bootstrap of the compiler.  This will build the entire GCC system
-and ensure that it compiles itself correctly, by doing the
-following steps:
+For a native build, the default configuration is to perform
+a 3-stage bootstrap of the compiler when @samp{make} is invoked.
+This will build the entire GCC system and ensure that it compiles
+itself correctly.  It can be disabled with the @option{--disable-bootstrap}
+parameter to @samp{configure}, but bootstrapping is suggested because
+the compiler will be tested more completely and could also have
+better performance.
+
+The bootstrapping process will complete the following steps:
 
 @itemize @bullet
 @item
-Build tools necessary to build the compiler such as texinfo, bison,
-gperf.
+Build tools necessary to build the compiler.
 
 @item
 Perform a 3-stage bootstrap of the compiler.  This includes building
@@ -1646,10 +1681,6 @@ the one you are building on: for example, you could build a
 
 @section Building a cross compiler
 
-We recommend reading the
-@uref{http://www.objsw.com/CrossGCC/,,crossgcc FAQ}
-for information about building cross compilers.
-
 When building a cross compiler, it is not generally possible to do a
 3-stage bootstrap of the compiler.  This makes for an interesting problem
 as parts of GCC can only be built with GCC@.
@@ -1665,8 +1696,7 @@ following steps:
 
 @itemize @bullet
 @item
-Build host tools necessary to build the compiler such as texinfo, bison,
-gperf.
+Build host tools necessary to build the compiler.
 
 @item
 Build target tools for use by the compiler such as binutils (bfd,
@@ -1810,8 +1840,8 @@ These are part of the full distribution, but if you downloaded the
 separately.
 
 Second, you must have the testing tools installed.  This includes
-@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu} 1.4.4 and later,
-Tcl, and Expect; the DejaGnu site has links to these.
+@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu}, Tcl, and Expect;
+the DejaGnu site has links to these.
 
 If the directories where @command{runtest} and @command{expect} were
 installed are not in the @env{PATH}, you may need to set the following
@@ -2141,7 +2171,10 @@ If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
 dvi}.  You will need to have @command{texi2dvi} (version at least 4.4)
 and @TeX{} installed.  This creates a number of @file{.dvi} files in
 subdirectories of @file{@var{objdir}}; these may be converted for
-printing with programs such as @command{dvips}.  You can also
+printing with programs such as @command{dvips}.  Alternately, by using
+@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
 Free Software Foundation}, though such manuals may not be for the most
 recent version of GCC@.
@@ -2247,7 +2280,7 @@ number of platforms.
 
 @item
 The @uref{http://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has
-links to gfortran binaries for several platforms.
+links to GNU Fortran binaries for several platforms.
 @end itemize
 
 In addition to those specific offerings, you can get a binary
@@ -2286,6 +2319,11 @@ works.
 Please read this document carefully @emph{before} installing the
 GNU Compiler Collection on your machine.
 
+Note that this list of install notes is @emph{not} a list of supported
+hosts or targets.  Not all supported hosts and targets are listed
+here, only the ones that require host-specific or target-specific
+information are.
+
 @ifhtml
 @itemize
 @item
@@ -2903,6 +2941,10 @@ to build the Ada language as it can't be bootstrapped using C@.  Ada is
 only available for the 32-bit PA-RISC runtime.  The libffi and libjava
 haven't been ported to HP-UX and don't build.
 
+Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
+bundled compiler supports only traditional C; you will need either HP's
+unbundled compiler, or a binary distribution of GCC@.
+
 It is possible to build GCC 3.3 starting with the bundled HP compiler,
 but the process requires several steps.  GCC 3.3 can then be used to
 build later versions.  The fastjar program contains ISO C code and
@@ -2911,10 +2953,6 @@ avoided by not building the Java language.  For example, use the
 @option{--enable-languages="c,c++,f77,objc"} option in your configure
 command.
 
-Starting with GCC 3.4 an ISO C compiler is required to bootstrap.  The
-bundled compiler supports only traditional C; you will need either HP's
-unbundled compiler, or a binary distribution of GCC@.
-
 There are several possible approaches to building the distribution.
 Binutils can be built first using the HP tools.  Then, the GCC
 distribution can be built.  The second approach is to build GCC
@@ -3198,6 +3236,11 @@ and then proceed as described in @uref{build.html,,the build
 instructions}, where we strongly recommend specifying an absolute path
 to invoke @var{srcdir}/configure.
 
+Because GCC on AIX is built as a 32-bit executable by default,
+(although it can generate 64-bit programs) the GMP and MPFR libraries
+required by gfortran must be 32-bit libraries.  Building GMP and MPFR
+as static archive libraries works better than shared libraries.
+
 Errors involving @code{alloca} when building GCC generally are due
 to an incorrect definition of @code{CC} in the Makefile or mixing files
 compiled with the native C compiler and GCC@.  During the stage1 phase of
@@ -3426,6 +3469,11 @@ currently do not work, because the auxiliary programs
 anything but a MIPS.  It does work to cross compile for a MIPS
 if you use the GNU assembler and linker.
 
+The linker from GNU binutils versions prior to 2.17 has a bug which
+causes the runtime linker stubs in @file{libgcj.so} to be incorrectly
+generated.  If you want to use libgcj, either use binutils 2.17 or
+later to build it or export @samp{LD_BIND_NOW=1} in your runtime environment.
+
 @html
 <hr />
 @end html
@@ -3533,6 +3581,11 @@ to build despite this, running into an internal error of the native
 its maximum of 262144 bytes.  If you have root access, you can use the
 @command{systune} command to do this.
 
+@code{wchar_t} support in @samp{libstdc++} is not available for old
+IRIX 6.5.x releases, @math{x < 19}.  The problem cannot be autodetected
+and in order to build GCC for such targets you need to configure with
+@option{--disable-wchar_t}.
+
 See @uref{http://freeware.sgi.com/} for more
 information about using GCC on IRIX platforms.
 
@@ -3651,15 +3704,14 @@ GCC you first have to install a pre-built compiler, see the
 
 The Solaris 2 @command{/bin/sh} will often fail to configure
 @file{libstdc++-v3}, @file{boehm-gc} or @file{libjava}.  We therefore
-recommend to use the following sequence of commands to bootstrap and
-install GCC:
+recommend using the following initial sequence of commands
 
 @smallexample
    % CONFIG_SHELL=/bin/ksh
    % export CONFIG_SHELL
 @end smallexample
 
-and then proceed as described in @uref{build.html,,the build instructions}.
+and proceed as described in @uref{configure.html,,the configure instructions}.
 In addition we strongly recommend specifying an absolute path to invoke
 @var{srcdir}/configure.
 
@@ -3796,9 +3848,9 @@ ld: warning: relocation error: R_SPARC_UA32: @dots{}
 To work around this problem, compile with @option{-gstabs+} instead of
 plain @option{-g}.
 
-When configuring the GNU Multiple Precision Library (GMP) on a Solaris 7
-or later system, the canonical target triplet must be specified as the
-@command{build} parameter on the configure line:
+When configuring the GNU Multiple Precision Library (GMP) version 4.1.x
+on a Solaris 7 or later system, the canonical target triplet must be
+specified as the @command{build} parameter on the configure line:
 
 @smallexample
 ./configure --build=sparc-sun-solaris2.7 --prefix=xxx --enable-mpfr
@@ -4065,7 +4117,7 @@ operating system may still cause problems.
 Support for older systems as targets for cross-compilation is less
 problematic than support for them as hosts for GCC; if an enthusiast
 wishes to make such a target work again (including resurrecting any of
-the targets that never worked with GCC 2, starting from the last CVS
+the targets that never worked with GCC 2, starting from the last
 version before they were removed), patches
 @uref{../contribute.html,,following the usual requirements} would be
 likely to be accepted, since they should not affect the support for more