To make 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.
configure because some
/bin/sh shells have bugs and may crash when configuring the
target libraries. In other cases, /bin/sh or even some
ksh have disastrous corner-case performance problems. This
can cause target configure runs to literally take days to
complete in some cases.
So on some platforms /bin/ksh is sufficient, on others it
isn't. See the host/target specific instructions for your platform, or
use bash to be sure. Then set CONFIG_SHELL in your
environment to your "good" shell prior to running
configure/make.
zsh is not a fully compliant POSIX shell and will not
work when configuring GCC.
tar files when source code is
obtained via FTP mirror sites.
tar programs will also work, only try GNU
tar if you have problems.
configure.in, aclocal.m4, etc.
to regenerate configure and config.in files. Most
directories require autoconf 2.13 (exactly), but libiberty,
fastjar, libstdc++-v3, libjava/libltdl, and gcc
require autoconf 2.57 (exactly).
Makefile.am file to regenerate its
associated Makefile.in.
Much of GCC does not use automake, so directly edit the Makefile.in
file. Specifically this applies to the gcc, intl,
libf2c, libiberty, libobjc directories as well as any
of their subdirectories.
The libstdc++-v3, libjava/libltdl, and fastjar
directories require automake 1.7.9. However, the Java directories, which
include boehm-gc, libffi, libjava, and zlib,
require a modified version of automake 1.4 downloadable from
ftp://gcc.gnu.org/pub/java/automake-gcj-1.4.tar.gz.
gcc.pot.
gperf input files, e.g.
gcc/cp/cfns.gperf to regenerate its associated header file, e.g.
gcc/cp/cfns.h.
fixinc/fixincl.x from
fixinc/inclhack.def and fixinc/*.tpl.
Necessary to run the fixinc make check.
Necessary to regenerate the top level Makefile.in file from
Makefile.tpl and Makefile.def.
yacc (byacc) is also reported to work other
than for java.
Necessary when modifying *.y files.
Necessary to build GCC during development because the generated output
files are not included in the CVS repository. They are included in
releases.
*.l files.
Necessary to build GCC during development because the generated output
files are not included in the CVS repository. They are included in
releases.
makeinfo when modifying *.texi
files to test your changes.
Necessary to build GCC documentation during development because the
generated output files are not included in the CVS repository. They are
included in releases.
texi2dvi, used when running
make dvi to create DVI files.
Makefile dependencies in libiberty.
Necessary when regenerating libiberty/functions.texi.
Necessary when generating manpages from Texinfo manuals.
Used by various scripts to generate some files included in CVS (mainly
Unicode-related and rarely changing) from source tables.
diff, to one's
own sources.