2006-12-19 Paolo Bonzini <bonzini@gnu.org>

Sync with gcc:

	2006-12-19  Paolo Bonzini  <bonzini@gnu.org>

	* configure.in: Remove "$build" case for powerpc-*-darwin* since
	it only affects bootstrap and could be tested on "$host" as well.
	* configure: Regenerate.
	* config/mh-ppc-darwin: Add to the stage1 cflags here.

	2006-12-19  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/29544
	* Makefile.def (flags_to_pass): Add STAGE1_CHECKING.
	(bootstrap_stage): Add STAGE1_CHECKING to stage1 configure flags,
	move here comment from Makefile.tpl.
	* Makefile.tpl: Move some definitions higher in the file.
	(STAGE1_CHECKING): New.
	* configure.in: Add --enable-stage1-checking.
	* configure: Regenerate.
	* Makefile.in: Regenerate.

	2006-12-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Update error message for missing GMP/MPFR.

	* configure: Regenerate.

	2006-12-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Update MPFR version in error message.

	* configure: Regenerate.

	2006-11-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (--with-mpfr-dir, --with-gmp-dir): Remove flags.
	(--with-mpfr-include, --with-mpfr-lib, --with-gmp-include,
	--with-gmp-lib): New flags.

	* configure: Regenerate.

config:
2006-12-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* tls.m4 (GCC_CHECK_TLS): Do not test TLS with static linking
	if static linking doesn't even work.
This commit is contained in:
Paolo Bonzini 2006-12-19 12:52:58 +00:00
parent 94f3d96815
commit 14a1406e83
10 changed files with 460 additions and 441 deletions

View File

@ -1,3 +1,46 @@
2006-12-19 Paolo Bonzini <bonzini@gnu.org>
Sync with gcc:
2006-12-19 Paolo Bonzini <bonzini@gnu.org>
* configure.in: Remove "$build" case for powerpc-*-darwin* since
it only affects bootstrap and could be tested on "$host" as well.
* configure: Regenerate.
* config/mh-ppc-darwin: Add to the stage1 cflags here.
2006-12-19 Paolo Bonzini <bonzini@gnu.org>
PR bootstrap/29544
* Makefile.def (flags_to_pass): Add STAGE1_CHECKING.
(bootstrap_stage): Add STAGE1_CHECKING to stage1 configure flags,
move here comment from Makefile.tpl.
* Makefile.tpl: Move some definitions higher in the file.
(STAGE1_CHECKING): New.
* configure.in: Add --enable-stage1-checking.
* configure: Regenerate.
* Makefile.in: Regenerate.
2006-12-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* configure.in: Update error message for missing GMP/MPFR.
* configure: Regenerate.
2006-12-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* configure.in: Update MPFR version in error message.
* configure: Regenerate.
2006-11-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* configure.in (--with-mpfr-dir, --with-gmp-dir): Remove flags.
(--with-mpfr-include, --with-mpfr-lib, --with-gmp-include,
--with-gmp-lib): New flags.
* configure: Regenerate.
2006-12-12 Andreas Tobler <a.tobler@schweiz.org>
PR bootstrap/30134

View File

@ -226,6 +226,7 @@ flags_to_pass = { flag= LDFLAGS ; };
flags_to_pass = { flag= LIBCFLAGS ; };
flags_to_pass = { flag= LIBCXXFLAGS ; };
flags_to_pass = { flag= STAGE1_CFLAGS ; };
flags_to_pass = { flag= STAGE1_CHECKING ; };
flags_to_pass = { flag= STAGE1_LANGUAGES ; };
// Target tools
@ -487,7 +488,14 @@ dependencies = { module=all-target-winsup; on=all-target-libtermcap; };
// Toplevel bootstrap
bootstrap_stage = {
id=1 ;
stage_configure_flags='--disable-intermodule \
// * We force-disable intermodule optimizations, even if
// --enable-intermodule was passed, since the installed compiler
// probably can't handle them. Luckily, autoconf always respects
// the last argument when conflicting --enable arguments are passed.
// * Likewise, we force-disable coverage flags, since the installed
// compiler probably has never heard of them.
stage_configure_flags='--disable-intermodule $(STAGE1_CHECKING) \
--disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ;
stage_make_flags='CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)"' ; };
bootstrap_stage = {

View File

@ -297,6 +297,16 @@ CXXFLAGS = @CXXFLAGS@
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
PICFLAG =
# Only build the C compiler for stage1, because that is the only one that
# we can guarantee will build with the native compiler, and also it is the
# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
# overrideable (for a bootstrap build stage1 also builds gcc.info).
STAGE1_CFLAGS=@stage1_cflags@
STAGE1_CHECKING=@stage1_checking@
STAGE1_LANGUAGES=@stage1_languages@
# -----------------------------------------------
# Programs producing files for the TARGET machine
# -----------------------------------------------
@ -454,6 +464,7 @@ BASE_FLAGS_TO_PASS = \
"LIBCFLAGS=$(LIBCFLAGS)" \
"LIBCXXFLAGS=$(LIBCXXFLAGS)" \
"STAGE1_CFLAGS=$(STAGE1_CFLAGS)" \
"STAGE1_CHECKING=$(STAGE1_CHECKING)" \
"STAGE1_LANGUAGES=$(STAGE1_LANGUAGES)" \
"AR_FOR_TARGET=$(AR_FOR_TARGET)" \
"AS_FOR_TARGET=$(AS_FOR_TARGET)" \
@ -513,6 +524,16 @@ X11_FLAGS_TO_PASS = \
'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \
'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)'
# Flags to pass to stage2 and later makes.
POSTSTAGE1_FLAGS_TO_PASS = \
CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
STAGE_PREFIX="$$r/$(HOST_SUBDIR)/prev-gcc/" \
CFLAGS="$(BOOT_CFLAGS)" \
LIBCFLAGS="$(BOOT_CFLAGS)" \
LDFLAGS="$(BOOT_LDFLAGS)" \
"`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
# Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables
# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The
@ -4473,7 +4494,7 @@ configure-stage1-bfd:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif bfd-bootstrap
.PHONY: configure-stage2-bfd maybe-configure-stage2-bfd
@ -5228,7 +5249,7 @@ configure-stage1-opcodes:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif opcodes-bootstrap
.PHONY: configure-stage2-opcodes maybe-configure-stage2-opcodes
@ -5983,7 +6004,7 @@ configure-stage1-binutils:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif binutils-bootstrap
.PHONY: configure-stage2-binutils maybe-configure-stage2-binutils
@ -11795,7 +11816,7 @@ configure-stage1-gas:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif gas-bootstrap
.PHONY: configure-stage2-gas maybe-configure-stage2-gas
@ -12550,7 +12571,7 @@ configure-stage1-gcc:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif gcc-bootstrap
.PHONY: configure-stage2-gcc maybe-configure-stage2-gcc
@ -16077,7 +16098,7 @@ configure-stage1-intl:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif intl-bootstrap
.PHONY: configure-stage2-intl maybe-configure-stage2-intl
@ -17609,7 +17630,7 @@ configure-stage1-ld:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif ld-bootstrap
.PHONY: configure-stage2-ld maybe-configure-stage2-ld
@ -18364,7 +18385,7 @@ configure-stage1-libcpp:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif libcpp-bootstrap
.PHONY: configure-stage2-libcpp maybe-configure-stage2-libcpp
@ -19119,7 +19140,7 @@ configure-stage1-libdecnumber:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif libdecnumber-bootstrap
.PHONY: configure-stage2-libdecnumber maybe-configure-stage2-libdecnumber
@ -20270,7 +20291,7 @@ configure-stage1-libiberty:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif libiberty-bootstrap
.PHONY: configure-stage2-libiberty maybe-configure-stage2-libiberty
@ -30112,7 +30133,7 @@ configure-stage1-zlib:
$(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \
\
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
--disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif zlib-bootstrap
.PHONY: configure-stage2-zlib maybe-configure-stage2-zlib
@ -41843,36 +41864,9 @@ LEAN = false
# 'touch' doesn't work right on some platforms.
STAMP = echo timestamp >
# Only build the C compiler for stage1, because that is the only one that
# we can guarantee will build with the native compiler, and also it is the
# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
# overrideable (for a bootstrap build stage1 also builds gcc.info).
STAGE1_CFLAGS=@stage1_cflags@
STAGE1_LANGUAGES=@stage1_languages@
# We only want to compare .o files, so set this!
objext = .o
# Flags to pass to stage2 and later makes.
POSTSTAGE1_FLAGS_TO_PASS = \
CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
STAGE_PREFIX="$$r/$(HOST_SUBDIR)/prev-gcc/" \
CFLAGS="$(BOOT_CFLAGS)" \
LIBCFLAGS="$(BOOT_CFLAGS)" \
LDFLAGS="$(BOOT_LDFLAGS)" \
"`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
# For stage 1:
# * We force-disable intermodule optimizations, even if
# --enable-intermodule was passed, since the installed compiler probably
# can't handle them. Luckily, autoconf always respects
# the last argument when conflicting --enable arguments are passed.
# * Likewise, we force-disable coverage flags, since the installed compiler
# probably has never heard of them.
# * We build only C (and possibly Ada).
.PHONY: stage1-start stage1-end

View File

@ -300,6 +300,16 @@ CXXFLAGS = @CXXFLAGS@
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
PICFLAG =
# Only build the C compiler for stage1, because that is the only one that
# we can guarantee will build with the native compiler, and also it is the
# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
# overrideable (for a bootstrap build stage1 also builds gcc.info).
STAGE1_CFLAGS=@stage1_cflags@
STAGE1_CHECKING=@stage1_checking@
STAGE1_LANGUAGES=@stage1_languages@
# -----------------------------------------------
# Programs producing files for the TARGET machine
# -----------------------------------------------
@ -431,6 +441,16 @@ X11_FLAGS_TO_PASS = \
'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \
'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)'
# Flags to pass to stage2 and later makes.
POSTSTAGE1_FLAGS_TO_PASS = \
CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
STAGE_PREFIX="$$r/$(HOST_SUBDIR)/prev-gcc/" \
CFLAGS="$(BOOT_CFLAGS)" \
LIBCFLAGS="$(BOOT_CFLAGS)" \
LDFLAGS="$(BOOT_LDFLAGS)" \
"`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
# Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables
# are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The
@ -1246,36 +1266,9 @@ LEAN = false
# 'touch' doesn't work right on some platforms.
STAMP = echo timestamp >
# Only build the C compiler for stage1, because that is the only one that
# we can guarantee will build with the native compiler, and also it is the
# only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS),
# MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them
# overrideable (for a bootstrap build stage1 also builds gcc.info).
STAGE1_CFLAGS=@stage1_cflags@
STAGE1_LANGUAGES=@stage1_languages@
# We only want to compare .o files, so set this!
objext = .o
# Flags to pass to stage2 and later makes.
POSTSTAGE1_FLAGS_TO_PASS = \
CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
STAGE_PREFIX="$$r/$(HOST_SUBDIR)/prev-gcc/" \
CFLAGS="$(BOOT_CFLAGS)" \
LIBCFLAGS="$(BOOT_CFLAGS)" \
LDFLAGS="$(BOOT_LDFLAGS)" \
"`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
# For stage 1:
# * We force-disable intermodule optimizations, even if
# --enable-intermodule was passed, since the installed compiler probably
# can't handle them. Luckily, autoconf always respects
# the last argument when conflicting --enable arguments are passed.
# * Likewise, we force-disable coverage flags, since the installed compiler
# probably has never heard of them.
# * We build only C (and possibly Ada).
[+ FOR bootstrap-stage +]
.PHONY: stage[+id+]-start stage[+id+]-end

View File

@ -1,3 +1,8 @@
2006-12-04 Eric Botcazou <ebotcazou@libertysurf.fr>
* tls.m4 (GCC_CHECK_TLS): Do not test TLS with static linking
if static linking doesn't even work.
2006-11-13 Daniel Jacobowitz <dan@codesourcery.com>
* tls.m4 (GCC_CHECK_TLS): Fall back to a link test.

View File

@ -4,3 +4,8 @@
BOOT_CFLAGS=-g -O2 -mdynamic-no-pic
# The spiffy cpp-precomp chokes on some legitimate constructs in GCC
# sources; use -no-cpp-precomp to get to GNU cpp.
# Apple's GCC has bugs in designated initializer handling, so disable
# that too.
STAGE1_CFLAGS += -no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0

View File

@ -5,12 +5,14 @@ AC_DEFUN([GCC_CHECK_TLS], [
have_tls, [
AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }],
[dnl If the test case passed with dynamic linking, try again with
dnl static linking. This fails at least with some older Red Hat
dnl releases.
dnl static linking, but only if static linking is supported (not
dnl on Solaris 10). This fails with some older Red Hat releases.
save_LDFLAGS="$LDFLAGS"
LDFLAGS="-static $LDFLAGS"
AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }],
[have_tls=yes], [have_tls=no], [])
AC_LINK_IFELSE([int main() { return 0; }],
AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }],
[have_tls=yes], [have_tls=no],[]),
[have_tls=yes])
LDFLAGS="$save_LDFLAGS"],
[have_tls=no],
[AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }],

400
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1052,48 +1052,57 @@ ACX_PROG_GNAT
ACX_PROG_CMP_IGNORE_INITIAL
# Check for GMP and MPFR
gmplibs=
gmplibs="-lmpfr"
gmpinc=
have_gmp=yes
# Specify a location for mpfr
# check for this first so it ends up on the link line before gmp.
AC_ARG_WITH(mpfr-dir, [ --with-mpfr-dir=PATH Specify source directory for MPFR library])
AC_ARG_WITH(mpfr-dir, [ --with-mpfr-dir=PATH This option has been REMOVED],
AC_MSG_ERROR([The --with-mpfr-dir=PATH option has been removed.
Use --with-mpfr=PATH or --with-mpfr-include=PATH plus --with-mpfr-lib=PATH]))
if test "x$with_mpfr_dir" != x; then
gmpinc="-I$with_mpfr_dir"
gmplibs="$with_mpfr_dir/libmpfr.a"
else
gmplibs="-lmpfr"
fi
AC_ARG_WITH(mpfr, [ --with-mpfr=PATH Specify directory for installed MPFR library])
AC_ARG_WITH(mpfr, [ --with-mpfr=PATH Specify prefix directory for installed MPFR package
Equivalent to --with-mpfr-include=PATH/include
plus --with-mpfr-lib=PATH/lib])
AC_ARG_WITH(mpfr_include, [ --with-mpfr-include=PATH
Specify directory for installed MPFR include files])
AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH Specify the directory for the installed MPFR library])
if test "x$with_mpfr" != x; then
gmplibs="-L$with_mpfr/lib $gmplibs"
gmpinc="-I$with_mpfr/include"
fi
# Specify a location for gmp
AC_ARG_WITH(gmp-dir, [ --with-gmp-dir=PATH Specify source directory for GMP library])
if test "x$with_gmp_dir" != x; then
gmpinc="$gmpinc -I$with_gmp_dir"
if test -f "$with_gmp_dir/.libs/libgmp.a"; then
gmplibs="$gmplibs $with_gmp_dir/.libs/libgmp.a"
elif test -f "$with_gmp_dir/_libs/libgmp.a"; then
gmplibs="$gmplibs $with_gmp_dir/_libs/libgmp.a"
fi
# One of the later tests will catch the error if neither library is present.
else
gmplibs="$gmplibs -lgmp"
if test "x$with_mpfr_include" != x; then
gmpinc="-I$with_mpfr_include"
fi
if test "x$with_mpfr_lib" != x; then
gmplibs="-L$with_mpfr_lib $gmplibs"
fi
AC_ARG_WITH(gmp, [ --with-gmp=PATH Specify directory for installed GMP library])
# Specify a location for gmp
AC_ARG_WITH(gmp-dir, [ --with-gmp-dir=PATH This option has been REMOVED],
AC_MSG_ERROR([The --with-gmp-dir=PATH option has been removed.
Use --with-gmp=PATH or --with-gmp-include=PATH plus --with-gmp-lib=PATH]))
gmplibs="$gmplibs -lgmp"
AC_ARG_WITH(gmp, [ --with-gmp=PATH Specify prefix directory for the installed GMP package
Equivalent to --with-gmp-include=PATH/include
plus --with-gmp-lib=PATH/lib])
AC_ARG_WITH(gmp_include, [ --with-gmp-include=PATH Specify directory for installed GMP include files])
AC_ARG_WITH(gmp_lib, [ --with-gmp-lib=PATH Specify the directory for the installed GMP library])
if test "x$with_gmp" != x; then
gmplibs="-L$with_gmp/lib $gmplibs"
gmpinc="-I$with_gmp/include $gmpinc"
fi
if test "x$with_gmp_include" != x; then
gmpinc="-I$with_gmp_include $gmpinc"
fi
if test "x$with_gmp_lib" != x; then
gmplibs="-L$with_gmp_lib $gmplibs"
fi
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $gmpinc"
@ -1121,11 +1130,14 @@ fi
CFLAGS="$saved_CFLAGS"
if test -d ${srcdir}/gcc && test x$have_gmp != xyes; then
AC_MSG_ERROR([Building GCC requires GMP 4.1+ and MPFR 2.2+.
AC_MSG_ERROR([Building GCC requires GMP 4.1+ and MPFR 2.2.1+.
Try the --with-gmp and/or --with-mpfr options to specify their locations.
Copies of these libraries' source code can be found at their respective
hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
See also http://gcc.gnu.org/install/prerequisites.html for additional info.])
See also http://gcc.gnu.org/install/prerequisites.html for additional info.
If you obtained GMP and/or MPFR from a vendor distribution package, make
sure that you have installed both the libraries and the header files.
They may be located in separate packages.])
fi
# Flags needed for both GMP and/or MPFR
@ -2391,13 +2403,6 @@ case $build in
yes) stage1_cflags="-g -Wa,-J" ;;
*) stage1_cflags="-g -J" ;;
esac ;;
powerpc-*-darwin*)
# The spiffy cpp-precomp chokes on some legitimate constructs in GCC
# sources; use -no-cpp-precomp to get to GNU cpp.
# Apple's GCC has bugs in designated initializer handling, so disable
# that too.
stage1_cflags="-g -no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
;;
esac
# This is aimed to mimic bootstrap with a non-GCC compiler to catch problems.
@ -2416,6 +2421,18 @@ fi
AC_SUBST(stage1_cflags)
# Enable --enable-checking in stage1 of the compiler.
AC_ARG_ENABLE(stage1-checking,
[ --enable-stage1-checking[=all] choose additional checking for stage1
of the compiler.],
[stage1_checking=--enable-checking=${enable_stage1_checking}],
[if test "x$enable_checking" = xno; then
stage1_checking=--enable-checking
else
stage1_checking=--enable-checking${enable_checking+=}$enable_checking
fi])
AC_SUBST(stage1_checking)
# Enable -Werror in bootstrap stage2 and later.
# Change the default to "no" on release branches.
AC_ARG_ENABLE(werror,

View File

@ -300,12 +300,6 @@ machine dependent files such as executables.
The default for @samp{--prefix} is @file{/usr/local}. The default for
@samp{--exec-prefix} is the value used for @samp{--prefix}.
The convention used in Cygnus releases is to use a @samp{--prefix}
option of @file{/usr/cygnus/@var{release}}, where @var{release} is the
name of the release, and to use a @samp{--exec-prefix} option of
@file{/usr/cygnus/@var{release}/H-@var{host}}, where @var{host} is the
configuration name of the host system (@pxref{Configuration Names}).
Do not use either the source or the object directory as the installation
directory. That will just lead to confusion.
@ -1676,12 +1670,9 @@ the autoconf documentation for @samp{AC_ARG_PROGRAM}.
@section Cross Tools in the Cygnus Tree
The Cygnus tree is used for various packages including gdb, the GNU
binutils, and egcs. It is also, of course, used for Cygnus releases.
In the Cygnus tree, the top level @file{configure} script uses the old
Cygnus configure system, not autoconf. The top level @file{Makefile.in}
binutils, and egcs. In the Cygnus tree, the top level @file{Makefile.in}
is written to build packages based on what is in the source tree, and
supports building a large number of tools in a single
supports building and bootstrapping a large number of tools in a single
@samp{configure}/@samp{make} step.
The Cygnus tree may be configured with a @samp{--target} option. The
@ -2132,27 +2123,26 @@ lines with a trailing backslash as a continuation character).
@example
mkdir linux-x-cygwin32
cd linux-x-cygwin32
@var{srcdir}/configure --target i386-cygwin32 --prefix=@var{installdir} \
--exec-prefix=@var{installdir}/H-i386-linux
@var{srcdir}/configure --target i386-cygwin32 --prefix=@var{installdir}
make
make install
cd ..
mkdir linux-x-mips-elf
cd linux-x-mips-elf
@var{srcdir}/configure --target mips-elf --prefix=@var{installdir} \
--exec-prefix=@var{installdir}/H-i386-linux
@var{srcdir}/configure --target mips-elf --prefix=@var{installdir}
make
make install
cd ..
mkdir cygwin32-x-mips-elf
cd cygwin32-x-mips-elf
@var{srcdir}/configure --build=i386-linux-gnu --host=i386-cygwin32 \
--target=mips-elf --prefix=@var{wininstalldir} \
--exec-prefix=@var{wininstalldir}/H-i386-cygwin32
--target=mips-elf --prefix=@var{wininstalldir}
make
make install
@end example
Note that we specify a different prefix in the last build, because this
does not contain Linux executables, but rather Windows executables.
You would then copy the contents of @var{wininstalldir} over to the
Windows machine, and run the resulting programs.
@ -2263,152 +2253,63 @@ crucial.
The gcc @file{Makefile.in} shows a complex situation in which certain
files, such as @file{rtl.c}, must be compiled into both subsidiary
programs run on the build system and into the final program. This
approach may be of interest for advanced build system hackers. Note
that the build system compiler is rather confusingly called
@samp{HOST_CC}.
approach may be of interest for advanced build system hackers.
@node Cygnus Configure
@chapter Cygnus Configure
@cindex cygnus configure
@node Top level Configure
@chapter Top level Configure
@cindex top level configure
The Cygnus configure script predates autoconf. All of its interesting
features have been incorporated into autoconf. No new programs should
be written to use the Cygnus configure script.
The top level configure script detects the tools that are used in the
Cygnus tree. This script is a rewrite of the Cygnus configure script,
which predated autoconf.
However, the Cygnus configure script is still used in a few places: at
the top of the Cygnus tree and in a few target libraries in the Cygnus
tree. Until those uses have been replaced with autoconf, some brief
notes are appropriate here. This is not complete documentation, but it
should be possible to use this as a guide while examining the scripts
themselves.
The script includes all the logic to detect the host and target tools,
and to customize the @file{Makefile} to support the special needs of
some systems.
@menu
* Cygnus Configure Basics:: Cygnus Configure Basics.
* Cygnus Configure in C++ Libraries:: Cygnus Configure in C++ Libraries.
@end menu
A particularly delicate point is finding the target tools--these include
the assembler, the linker, and the other @command{binutils} such as
@command{nm} or @command{ar}. Some of these need to be invoked by GCC;
others, such as @command{objdump}, are necessary during configuration, in
order to detect the set of features supported by the assembler and linker.
@node Cygnus Configure Basics
@section Cygnus Configure Basics
In general, the top level configure tries to follow these lines in order
to detect the target tools:
Cygnus configure does not use any generated files; there is no program
corresponding to @samp{autoconf}. Instead, there is a single shell
script named @samp{configure} which may be found at the top of the
Cygnus tree. This shell script was written by hand; it was not
generated by autoconf, and it is incorrect, and indeed harmful, to run
@samp{autoconf} in the top level of a Cygnus tree.
@table @itemize
@item try to detect a consistent set of tools
Cygnus configure works in a particular directory by examining the file
@file{configure.in} in that directory. That file is broken into four
separate shell scripts.
@item try to detect the same tools that the installed GCC will use
@end table
The first is the contents of @file{configure.in} up to a line that
starts with @samp{# per-host:}. This is the common part.
To achieve the first goal, we use the same search criterion for all tools,
even those that the compiler never invokes.
The second is the rest of @file{configure.in} up to a line that starts
with @samp{# per-target:}. This is the per host part.
To achieve the second goal when the @samp{build} and @samp{host} systems
are the same, we search the same directories that the installed compiler
will search. This is overridden if the assembler and linker are being
compiled together with GCC, because after installation GCC
will find the tools that were just compiled.
The third is the rest of @file{configure.in} up to a line that starts
with @samp{# post-target:}. This is the per target part.
To achieve the second goal when cross compiling (the @samp{build} and
the @samp{host} systems are different, we ask the installed GCC for the
name of the tool it uses. This is because the only good choice for a
compiler is the same GCC version that is being installed (@pxref{Cross
Cygnus CCross: Building a Cross Program}), and we assume that on the
host system we'll have not only the same GCC version, but also the same
binutils version.
The fourth is the remainder of @file{configure.in}. This is the post
target part.
If any of these comment lines are missing, the corresponding shell
script is empty.
Cygnus configure will first execute the common part. This must set the
shell variable @samp{srctrigger} to the name of a source file, to
confirm that Cygnus configure is looking at the right directory. This
may set the shell variables @samp{package_makefile_frag} and
@samp{package_makefile_rules_frag}.
Cygnus configure will next set the @samp{build} and @samp{host} shell
variables, and execute the per host part. This may set the shell
variable @samp{host_makefile_frag}.
Cygnus configure will next set the @samp{target} variable, and execute
the per target part. This may set the shell variable
@samp{target_makefile_frag}.
Any of these scripts may set the @samp{subdirs} shell variable. This
variable is a list of subdirectories where a @file{Makefile.in} file may
be found. Cygnus configure will automatically look for a
@file{Makefile.in} file in the current directory. The @samp{subdirs}
shell variable is not normally used, and I believe that the only
directory which uses it at present is @file{newlib}.
For each @file{Makefile.in}, Cygnus configure will automatically create
a @file{Makefile} by adding definitions for @samp{make} variables such
as @samp{host} and @samp{target}, and automatically editing the values
of @samp{make} variables such as @samp{prefix} if they are present.
Also, if any of the @samp{makefile_frag} shell variables are set, Cygnus
configure will interpret them as file names relative to either the
working directory or the source directory, and will read the contents of
the file into the generated @file{Makefile}. The file contents will be
read in after the first line in @file{Makefile.in} which starts with
@samp{####}.
These @file{Makefile} fragments are used to customize behaviour for a
particular host or target. They serve to select particular files to
compile, and to define particular preprocessor macros by providing
values for @samp{make} variables which are then used during compilation.
Cygnus configure, unlike autoconf, normally does not do feature tests,
and normally requires support to be added manually for each new host.
The @file{Makefile} fragment support is similar to the autoconf
@samp{AC_SUBST_FILE} macro.
After creating each @file{Makefile}, the post target script will be run
(i.e., it may be run several times). This script may further customize
the @file{Makefile}. When it is run, the shell variable @samp{Makefile}
will hold the name of the @file{Makefile}, including the appropriate
directory component.
Like an autoconf generated @file{configure} script, Cygnus configure
will create a file named @file{config.status} which, when run, will
automatically recreate the configuration. The @file{config.status} file
will simply execute the Cygnus configure script again with the
appropriate arguments.
Any of the parts of @file{configure.in} may set the shell variables
@samp{files} and @samp{links}. Cygnus configure will set up symlinks
from the names in @samp{links} to the files named in @samp{files}. This
is similar to the autoconf @samp{AC_LINK_FILES} macro.
Finally, any of the parts of @file{configure.in} may set the shell
variable @samp{configdirs} to a set of subdirectories. If it is set,
Cygnus configure will recursively run the configure process in each
subdirectory. If the subdirectory uses Cygnus configure, it will
contain a @file{configure.in} file but no @file{configure} file, in
which case Cygnus configure will invoke itself recursively. If the
subdirectory has a @file{configure} file, Cygnus configure assumes that
it is an autoconf generated @file{configure} script, and simply invokes
it directly.
@node Cygnus Configure in C++ Libraries
@section Cygnus Configure in C++ Libraries
@cindex @file{libstdc++} configure
@cindex @file{libio} configure
@cindex @file{libg++} configure
The C++ library configure system, written by Per Bothner, deserves
special mention. It uses Cygnus configure, but it does feature testing
like that done by autoconf generated @file{configure} scripts. This
approach is used in the libraries @file{libio}, @file{libstdc++}, and
@file{libg++}.
Most of the @file{Makefile} information is written out by the shell
script @file{libio/config.shared}. Each @file{configure.in} file sets
certain shell variables, and then invokes @file{config.shared} to create
two package @file{Makefile} fragments. These fragments are then
incorporated into the resulting @file{Makefile} by the Cygnus configure
The location of the target tools can also be specified using the
@option{--with-build-time-tools} option to the top level configure
script.
The file @file{_G_config.h} is created in the @file{libio} object
directory by running the shell script @file{libio/gen-params}. This
shell script uses feature tests to define macros and typedefs in
@file{_G_config.h}.
If no target-specific tools are found, the top level configure script
will try to use the host tools if suitable.
The script and the accompanying Makefile support building programs
and libraries for either the build, the host or the target system.
The target libraries, however, need to help in order to support
@samp{multilibs}.
@node Multilibs
@chapter Multilibs
@ -2428,7 +2329,9 @@ called @dfn{multilibs}.
Multilibs are not really part of the GNU configure and build system, but
we discuss them here since they require support in the @file{configure}
scripts and @file{Makefile}s used for target libraries.
scripts and @file{Makefile}s used for target libraries. It is expected
that in the future the toplevel will coordinate the building of the
various multilibs, but this has not been implemented yet.
@menu
* Multilibs in gcc:: Multilibs in gcc.
@ -2576,17 +2479,16 @@ not defined by @samp{autoconf}. You may be using an old version of
newly installled @samp{autoconf} is first on your @samp{PATH}. Also,
see the next question.
@cindex @samp{CY_GNU_GETTEXT} in @file{configure}
@cindex @samp{AM_GNU_GETTEXT} in @file{configure}
@cindex @samp{AM_PROG_LIBTOOL} in @file{configure}
@item My @file{configure} script has stuff like @samp{CY_GNU_GETTEXT} in it.
@item My @file{configure} script has stuff like @samp{AM_GNU_GETTEXT} in it.
This means that you have macros in your @file{configure.in} which should
be defined in your @file{aclocal.m4} file, but aren't. This usually
means that @samp{aclocal} was not able to appropriate definitions of the
macros. Make sure that you have installed all the packages you need.
In particular, make sure that you have installed libtool (this is where
@samp{AM_PROG_LIBTOOL} is defined) and gettext (this is where
@samp{CY_GNU_GETTEXT} is defined, at least in the Cygnus version of
gettext).
@samp{AM_GNU_GETTEXT} is defined).
@cindex @file{Makefile}, garbage characters
@item My @file{Makefile} has @samp{@@} characters in it.
@ -2611,16 +2513,16 @@ regenerate all files (@file{Makefile}, @file{config.h}, etc.) based on
the results of the configure script. The two cases are separate because
it isn't always necessary to regenerate all the files after running
@samp{config.status --recheck}. The @file{Makefile} targets generated
by automake will use the environment variables @samp{CONFIG_FILES} and
@samp{CONFIG_HEADERS} to only regenerate files as they are needed.
by automake will use command-line arguments to only regenerate files
as they are needed.
@item What is the Cygnus tree?
The Cygnus tree is used for various packages including gdb, the GNU
binutils, and egcs. It is also, of course, used for Cygnus releases.
It is the build system which was developed at Cygnus, using the Cygnus
configure script. It permits building many different packages with a
single configure and make. The configure scripts in the tree are being
converted to autoconf, but the general build structure remains intact.
binutils, and egcs. It is a derivative of the build system which was
developed at Cygnus, using the Cygnus configure script. It permits
building and bootstrapping many different packages with a single configure
and make. The configure scripts in the tree have been converted to
autoconf, but the general build structure remains intact.
@item Why do I have to keep rebuilding and reinstalling the tools?
I know, it's a pain. Unfortunately, there are bugs in the tools