4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-21 16:26:12 +08:00

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> 2006-12-12 Andreas Tobler <a.tobler@schweiz.org>
PR bootstrap/30134 PR bootstrap/30134

View File

@ -226,6 +226,7 @@ flags_to_pass = { flag= LDFLAGS ; };
flags_to_pass = { flag= LIBCFLAGS ; }; flags_to_pass = { flag= LIBCFLAGS ; };
flags_to_pass = { flag= LIBCXXFLAGS ; }; flags_to_pass = { flag= LIBCXXFLAGS ; };
flags_to_pass = { flag= STAGE1_CFLAGS ; }; flags_to_pass = { flag= STAGE1_CFLAGS ; };
flags_to_pass = { flag= STAGE1_CHECKING ; };
flags_to_pass = { flag= STAGE1_LANGUAGES ; }; flags_to_pass = { flag= STAGE1_LANGUAGES ; };
// Target tools // Target tools
@ -487,7 +488,14 @@ dependencies = { module=all-target-winsup; on=all-target-libtermcap; };
// Toplevel bootstrap // Toplevel bootstrap
bootstrap_stage = { bootstrap_stage = {
id=1 ; 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)"' ; --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ;
stage_make_flags='CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)"' ; }; stage_make_flags='CFLAGS="$(STAGE1_CFLAGS)" LIBCFLAGS="$(STAGE1_CFLAGS)"' ; };
bootstrap_stage = { bootstrap_stage = {

View File

@ -297,6 +297,16 @@ CXXFLAGS = @CXXFLAGS@
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
PICFLAG = 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 # Programs producing files for the TARGET machine
# ----------------------------------------------- # -----------------------------------------------
@ -454,6 +464,7 @@ BASE_FLAGS_TO_PASS = \
"LIBCFLAGS=$(LIBCFLAGS)" \ "LIBCFLAGS=$(LIBCFLAGS)" \
"LIBCXXFLAGS=$(LIBCXXFLAGS)" \ "LIBCXXFLAGS=$(LIBCXXFLAGS)" \
"STAGE1_CFLAGS=$(STAGE1_CFLAGS)" \ "STAGE1_CFLAGS=$(STAGE1_CFLAGS)" \
"STAGE1_CHECKING=$(STAGE1_CHECKING)" \
"STAGE1_LANGUAGES=$(STAGE1_LANGUAGES)" \ "STAGE1_LANGUAGES=$(STAGE1_LANGUAGES)" \
"AR_FOR_TARGET=$(AR_FOR_TARGET)" \ "AR_FOR_TARGET=$(AR_FOR_TARGET)" \
"AS_FOR_TARGET=$(AS_FOR_TARGET)" \ "AS_FOR_TARGET=$(AS_FOR_TARGET)" \
@ -513,6 +524,16 @@ X11_FLAGS_TO_PASS = \
'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \ 'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \
'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)' '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. # Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables # 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 # 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 \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif bfd-bootstrap @endif bfd-bootstrap
.PHONY: configure-stage2-bfd maybe-configure-stage2-bfd .PHONY: configure-stage2-bfd maybe-configure-stage2-bfd
@ -5228,7 +5249,7 @@ configure-stage1-opcodes:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif opcodes-bootstrap @endif opcodes-bootstrap
.PHONY: configure-stage2-opcodes maybe-configure-stage2-opcodes .PHONY: configure-stage2-opcodes maybe-configure-stage2-opcodes
@ -5983,7 +6004,7 @@ configure-stage1-binutils:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif binutils-bootstrap @endif binutils-bootstrap
.PHONY: configure-stage2-binutils maybe-configure-stage2-binutils .PHONY: configure-stage2-binutils maybe-configure-stage2-binutils
@ -11795,7 +11816,7 @@ configure-stage1-gas:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif gas-bootstrap @endif gas-bootstrap
.PHONY: configure-stage2-gas maybe-configure-stage2-gas .PHONY: configure-stage2-gas maybe-configure-stage2-gas
@ -12550,7 +12571,7 @@ configure-stage1-gcc:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif gcc-bootstrap @endif gcc-bootstrap
.PHONY: configure-stage2-gcc maybe-configure-stage2-gcc .PHONY: configure-stage2-gcc maybe-configure-stage2-gcc
@ -16077,7 +16098,7 @@ configure-stage1-intl:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif intl-bootstrap @endif intl-bootstrap
.PHONY: configure-stage2-intl maybe-configure-stage2-intl .PHONY: configure-stage2-intl maybe-configure-stage2-intl
@ -17609,7 +17630,7 @@ configure-stage1-ld:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif ld-bootstrap @endif ld-bootstrap
.PHONY: configure-stage2-ld maybe-configure-stage2-ld .PHONY: configure-stage2-ld maybe-configure-stage2-ld
@ -18364,7 +18385,7 @@ configure-stage1-libcpp:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif libcpp-bootstrap @endif libcpp-bootstrap
.PHONY: configure-stage2-libcpp maybe-configure-stage2-libcpp .PHONY: configure-stage2-libcpp maybe-configure-stage2-libcpp
@ -19119,7 +19140,7 @@ configure-stage1-libdecnumber:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif libdecnumber-bootstrap @endif libdecnumber-bootstrap
.PHONY: configure-stage2-libdecnumber maybe-configure-stage2-libdecnumber .PHONY: configure-stage2-libdecnumber maybe-configure-stage2-libdecnumber
@ -20270,7 +20291,7 @@ configure-stage1-libiberty:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif libiberty-bootstrap @endif libiberty-bootstrap
.PHONY: configure-stage2-libiberty maybe-configure-stage2-libiberty .PHONY: configure-stage2-libiberty maybe-configure-stage2-libiberty
@ -30112,7 +30133,7 @@ configure-stage1-zlib:
$(SHELL) $${libsrcdir}/configure \ $(SHELL) $${libsrcdir}/configure \
$(HOST_CONFIGARGS) $${srcdiroption} \ $(HOST_CONFIGARGS) $${srcdiroption} \
\ \
--disable-intermodule --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-intermodule $(STAGE1_CHECKING) --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"
@endif zlib-bootstrap @endif zlib-bootstrap
.PHONY: configure-stage2-zlib maybe-configure-stage2-zlib .PHONY: configure-stage2-zlib maybe-configure-stage2-zlib
@ -41843,36 +41864,9 @@ LEAN = false
# 'touch' doesn't work right on some platforms. # 'touch' doesn't work right on some platforms.
STAMP = echo timestamp > 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! # We only want to compare .o files, so set this!
objext = .o 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 .PHONY: stage1-start stage1-end

View File

@ -300,6 +300,16 @@ CXXFLAGS = @CXXFLAGS@
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
PICFLAG = 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 # Programs producing files for the TARGET machine
# ----------------------------------------------- # -----------------------------------------------
@ -431,6 +441,16 @@ X11_FLAGS_TO_PASS = \
'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \ 'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \
'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)' '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. # Flags to pass down to makes which are built with the target environment.
# The double $ decreases the length of the command line; those variables # 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 # 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. # 'touch' doesn't work right on some platforms.
STAMP = echo timestamp > 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! # We only want to compare .o files, so set this!
objext = .o 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 +] [+ FOR bootstrap-stage +]
.PHONY: stage[+id+]-start stage[+id+]-end .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> 2006-11-13 Daniel Jacobowitz <dan@codesourcery.com>
* tls.m4 (GCC_CHECK_TLS): Fall back to a link test. * tls.m4 (GCC_CHECK_TLS): Fall back to a link test.

View File

@ -4,3 +4,8 @@
BOOT_CFLAGS=-g -O2 -mdynamic-no-pic 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, [ have_tls, [
AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }], 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 If the test case passed with dynamic linking, try again with
dnl static linking. This fails at least with some older Red Hat dnl static linking, but only if static linking is supported (not
dnl releases. dnl on Solaris 10). This fails with some older Red Hat releases.
save_LDFLAGS="$LDFLAGS" save_LDFLAGS="$LDFLAGS"
LDFLAGS="-static $LDFLAGS" LDFLAGS="-static $LDFLAGS"
AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }], AC_LINK_IFELSE([int main() { return 0; }],
[have_tls=yes], [have_tls=no], []) 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"], LDFLAGS="$save_LDFLAGS"],
[have_tls=no], [have_tls=no],
[AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }], [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 ACX_PROG_CMP_IGNORE_INITIAL
# Check for GMP and MPFR # Check for GMP and MPFR
gmplibs= gmplibs="-lmpfr"
gmpinc= gmpinc=
have_gmp=yes have_gmp=yes
# Specify a location for mpfr # Specify a location for mpfr
# check for this first so it ends up on the link line before gmp. # 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 AC_ARG_WITH(mpfr, [ --with-mpfr=PATH Specify prefix directory for installed MPFR package
gmpinc="-I$with_mpfr_dir" Equivalent to --with-mpfr-include=PATH/include
gmplibs="$with_mpfr_dir/libmpfr.a" plus --with-mpfr-lib=PATH/lib])
else AC_ARG_WITH(mpfr_include, [ --with-mpfr-include=PATH
gmplibs="-lmpfr" Specify directory for installed MPFR include files])
fi AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH Specify the directory for the installed MPFR library])
AC_ARG_WITH(mpfr, [ --with-mpfr=PATH Specify directory for installed MPFR library])
if test "x$with_mpfr" != x; then if test "x$with_mpfr" != x; then
gmplibs="-L$with_mpfr/lib $gmplibs" gmplibs="-L$with_mpfr/lib $gmplibs"
gmpinc="-I$with_mpfr/include" gmpinc="-I$with_mpfr/include"
fi fi
if test "x$with_mpfr_include" != x; then
# Specify a location for gmp gmpinc="-I$with_mpfr_include"
AC_ARG_WITH(gmp-dir, [ --with-gmp-dir=PATH Specify source directory for GMP library]) fi
if test "x$with_mpfr_lib" != x; then
if test "x$with_gmp_dir" != x; then gmplibs="-L$with_mpfr_lib $gmplibs"
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"
fi 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 if test "x$with_gmp" != x; then
gmplibs="-L$with_gmp/lib $gmplibs" gmplibs="-L$with_gmp/lib $gmplibs"
gmpinc="-I$with_gmp/include $gmpinc" gmpinc="-I$with_gmp/include $gmpinc"
fi 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" saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $gmpinc" CFLAGS="$CFLAGS $gmpinc"
@ -1121,11 +1130,14 @@ fi
CFLAGS="$saved_CFLAGS" CFLAGS="$saved_CFLAGS"
if test -d ${srcdir}/gcc && test x$have_gmp != xyes; then 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. 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 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/. 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 fi
# Flags needed for both GMP and/or MPFR # Flags needed for both GMP and/or MPFR
@ -2391,13 +2403,6 @@ case $build in
yes) stage1_cflags="-g -Wa,-J" ;; yes) stage1_cflags="-g -Wa,-J" ;;
*) stage1_cflags="-g -J" ;; *) stage1_cflags="-g -J" ;;
esac ;; 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 esac
# This is aimed to mimic bootstrap with a non-GCC compiler to catch problems. # This is aimed to mimic bootstrap with a non-GCC compiler to catch problems.
@ -2416,6 +2421,18 @@ fi
AC_SUBST(stage1_cflags) 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. # Enable -Werror in bootstrap stage2 and later.
# Change the default to "no" on release branches. # Change the default to "no" on release branches.
AC_ARG_ENABLE(werror, 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 The default for @samp{--prefix} is @file{/usr/local}. The default for
@samp{--exec-prefix} is the value used for @samp{--prefix}. @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 Do not use either the source or the object directory as the installation
directory. That will just lead to confusion. 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 @section Cross Tools in the Cygnus Tree
The Cygnus tree is used for various packages including gdb, the GNU The Cygnus tree is used for various packages including gdb, the GNU
binutils, and egcs. It is also, of course, used for Cygnus releases. binutils, and egcs. In the Cygnus tree, the top level @file{Makefile.in}
In the Cygnus tree, the top level @file{configure} script uses the old
Cygnus configure system, not autoconf. The top level @file{Makefile.in}
is written to build packages based on what is in the source tree, and 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. @samp{configure}/@samp{make} step.
The Cygnus tree may be configured with a @samp{--target} option. The 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 @example
mkdir linux-x-cygwin32 mkdir linux-x-cygwin32
cd linux-x-cygwin32 cd linux-x-cygwin32
@var{srcdir}/configure --target i386-cygwin32 --prefix=@var{installdir} \ @var{srcdir}/configure --target i386-cygwin32 --prefix=@var{installdir}
--exec-prefix=@var{installdir}/H-i386-linux
make make
make install make install
cd .. cd ..
mkdir linux-x-mips-elf mkdir linux-x-mips-elf
cd linux-x-mips-elf cd linux-x-mips-elf
@var{srcdir}/configure --target mips-elf --prefix=@var{installdir} \ @var{srcdir}/configure --target mips-elf --prefix=@var{installdir}
--exec-prefix=@var{installdir}/H-i386-linux
make make
make install make install
cd .. cd ..
mkdir cygwin32-x-mips-elf mkdir cygwin32-x-mips-elf
cd cygwin32-x-mips-elf cd cygwin32-x-mips-elf
@var{srcdir}/configure --build=i386-linux-gnu --host=i386-cygwin32 \ @var{srcdir}/configure --build=i386-linux-gnu --host=i386-cygwin32 \
--target=mips-elf --prefix=@var{wininstalldir} \ --target=mips-elf --prefix=@var{wininstalldir}
--exec-prefix=@var{wininstalldir}/H-i386-cygwin32
make make
make install make install
@end example @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 You would then copy the contents of @var{wininstalldir} over to the
Windows machine, and run the resulting programs. Windows machine, and run the resulting programs.
@ -2263,152 +2253,63 @@ crucial.
The gcc @file{Makefile.in} shows a complex situation in which certain The gcc @file{Makefile.in} shows a complex situation in which certain
files, such as @file{rtl.c}, must be compiled into both subsidiary files, such as @file{rtl.c}, must be compiled into both subsidiary
programs run on the build system and into the final program. This programs run on the build system and into the final program. This
approach may be of interest for advanced build system hackers. Note approach may be of interest for advanced build system hackers.
that the build system compiler is rather confusingly called
@samp{HOST_CC}.
@node Cygnus Configure @node Top level Configure
@chapter Cygnus Configure @chapter Top level Configure
@cindex cygnus configure @cindex top level configure
The Cygnus configure script predates autoconf. All of its interesting The top level configure script detects the tools that are used in the
features have been incorporated into autoconf. No new programs should Cygnus tree. This script is a rewrite of the Cygnus configure script,
be written to use the Cygnus configure script. which predated autoconf.
However, the Cygnus configure script is still used in a few places: at The script includes all the logic to detect the host and target tools,
the top of the Cygnus tree and in a few target libraries in the Cygnus and to customize the @file{Makefile} to support the special needs of
tree. Until those uses have been replaced with autoconf, some brief some systems.
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.
@menu A particularly delicate point is finding the target tools--these include
* Cygnus Configure Basics:: Cygnus Configure Basics. the assembler, the linker, and the other @command{binutils} such as
* Cygnus Configure in C++ Libraries:: Cygnus Configure in C++ Libraries. @command{nm} or @command{ar}. Some of these need to be invoked by GCC;
@end menu 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 In general, the top level configure tries to follow these lines in order
@section Cygnus Configure Basics to detect the target tools:
Cygnus configure does not use any generated files; there is no program @table @itemize
corresponding to @samp{autoconf}. Instead, there is a single shell @item try to detect a consistent set of tools
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.
Cygnus configure works in a particular directory by examining the file @item try to detect the same tools that the installed GCC will use
@file{configure.in} in that directory. That file is broken into four @end table
separate shell scripts.
The first is the contents of @file{configure.in} up to a line that To achieve the first goal, we use the same search criterion for all tools,
starts with @samp{# per-host:}. This is the common part. even those that the compiler never invokes.
The second is the rest of @file{configure.in} up to a line that starts To achieve the second goal when the @samp{build} and @samp{host} systems
with @samp{# per-target:}. This is the per host part. 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 To achieve the second goal when cross compiling (the @samp{build} and
with @samp{# post-target:}. This is the per target part. 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 The location of the target tools can also be specified using the
target part. @option{--with-build-time-tools} option to the top level configure
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
script. script.
The file @file{_G_config.h} is created in the @file{libio} object If no target-specific tools are found, the top level configure script
directory by running the shell script @file{libio/gen-params}. This will try to use the host tools if suitable.
shell script uses feature tests to define macros and typedefs in
@file{_G_config.h}. 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 @node Multilibs
@chapter Multilibs @chapter Multilibs
@ -2428,7 +2329,9 @@ called @dfn{multilibs}.
Multilibs are not really part of the GNU configure and build system, but 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} 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 @menu
* Multilibs in gcc:: Multilibs in gcc. * 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, newly installled @samp{autoconf} is first on your @samp{PATH}. Also,
see the next question. 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} @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 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 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 means that @samp{aclocal} was not able to appropriate definitions of the
macros. Make sure that you have installed all the packages you need. macros. Make sure that you have installed all the packages you need.
In particular, make sure that you have installed libtool (this is where In particular, make sure that you have installed libtool (this is where
@samp{AM_PROG_LIBTOOL} is defined) and gettext (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 @samp{AM_GNU_GETTEXT} is defined).
gettext).
@cindex @file{Makefile}, garbage characters @cindex @file{Makefile}, garbage characters
@item My @file{Makefile} has @samp{@@} characters in it. @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 the results of the configure script. The two cases are separate because
it isn't always necessary to regenerate all the files after running it isn't always necessary to regenerate all the files after running
@samp{config.status --recheck}. The @file{Makefile} targets generated @samp{config.status --recheck}. The @file{Makefile} targets generated
by automake will use the environment variables @samp{CONFIG_FILES} and by automake will use command-line arguments to only regenerate files
@samp{CONFIG_HEADERS} to only regenerate files as they are needed. as they are needed.
@item What is the Cygnus tree? @item What is the Cygnus tree?
The Cygnus tree is used for various packages including gdb, the GNU The Cygnus tree is used for various packages including gdb, the GNU
binutils, and egcs. It is also, of course, used for Cygnus releases. binutils, and egcs. It is a derivative of the build system which was
It is the build system which was developed at Cygnus, using the Cygnus developed at Cygnus, using the Cygnus configure script. It permits
configure script. It permits building many different packages with a building and bootstrapping many different packages with a single configure
single configure and make. The configure scripts in the tree are being and make. The configure scripts in the tree have been converted to
converted to autoconf, but the general build structure remains intact. autoconf, but the general build structure remains intact.
@item Why do I have to keep rebuilding and reinstalling the tools? @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 I know, it's a pain. Unfortunately, there are bugs in the tools