mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-20 07:51:35 +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:
parent
94f3d96815
commit
14a1406e83
43
ChangeLog
43
ChangeLog
@ -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
|
||||
|
10
Makefile.def
10
Makefile.def
@ -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 = {
|
||||
|
70
Makefile.in
70
Makefile.in
@ -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
|
||||
|
||||
|
47
Makefile.tpl
47
Makefile.tpl
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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; }],
|
||||
|
85
configure.in
85
configure.in
@ -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,
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user