configure.ac: Add --enable-build-poststage1-with-cxx.

./:	* configure.ac: Add --enable-build-poststage1-with-cxx.  If set,
	make C++ a boot_language.  Set and substitute
	POSTSTAGE1_CONFIGURE_FLAGS.
	* Makefile.tpl (POSTSTAGE1_CONFIGURE_FLAGS): New variable.
	(STAGE[+id+]_CONFIGURE_FLAGS): Add $(POSTSTAGE1_CONFIGURE_FLAGS).
	* configure, Makefile.in: Rebuild.
gcc/:
	* doc/install.texi (Configuration): Document
	--enable-build-poststage1-with-cxx.

From-SVN: r176480
This commit is contained in:
Ian Lance Taylor 2011-07-19 18:33:25 +00:00 committed by Ian Lance Taylor
parent 0baeec1b09
commit 78767fd9cf
7 changed files with 113 additions and 21 deletions

View File

@ -1,3 +1,12 @@
2011-07-19 Ian Lance Taylor <iant@google.com>
* configure.ac: Add --enable-build-poststage1-with-cxx. If set,
make C++ a boot_language. Set and substitute
POSTSTAGE1_CONFIGURE_FLAGS.
* Makefile.tpl (POSTSTAGE1_CONFIGURE_FLAGS): New variable.
(STAGE[+id+]_CONFIGURE_FLAGS): Add $(POSTSTAGE1_CONFIGURE_FLAGS).
* configure, Makefile.in: Rebuild.
2011-07-19 Vladimir Makarov <vmakarov@redhat.com> 2011-07-19 Vladimir Makarov <vmakarov@redhat.com>
* MAINTAINERS (Register Allocation): Move myself from reviewers to * MAINTAINERS (Register Allocation): Move myself from reviewers to

View File

@ -415,6 +415,7 @@ TFLAGS =
STAGE_CFLAGS = $(BOOT_CFLAGS) STAGE_CFLAGS = $(BOOT_CFLAGS)
STAGE_TFLAGS = $(TFLAGS) STAGE_TFLAGS = $(TFLAGS)
STAGE_CONFIGURE_FLAGS=@stage2_werror_flag@ STAGE_CONFIGURE_FLAGS=@stage2_werror_flag@
POSTSTAGE1_CONFIGURE_FLAGS = @POSTSTAGE1_CONFIGURE_FLAGS@
# Defaults for stage 1; some are overridden below. # Defaults for stage 1; some are overridden below.
@ -425,7 +426,10 @@ STAGE1_CXXFLAGS = $(CXXFLAGS)
STAGE1_CXXFLAGS = $(STAGE1_CFLAGS) STAGE1_CXXFLAGS = $(STAGE1_CFLAGS)
@endif target-libstdc++-v3-bootstrap @endif target-libstdc++-v3-bootstrap
STAGE1_TFLAGS = $(STAGE_TFLAGS) STAGE1_TFLAGS = $(STAGE_TFLAGS)
STAGE1_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # STAGE1_CONFIGURE_FLAGS overridden below, so we can use
# POSTSTAGE1_CONFIGURE_FLAGS here.
STAGE1_CONFIGURE_FLAGS = \
$(STAGE_CONFIGURE_FLAGS) $(POSTSTAGE1_CONFIGURE_FLAGS)
# Defaults for stage 2; some are overridden below. # Defaults for stage 2; some are overridden below.
STAGE2_CFLAGS = $(STAGE_CFLAGS) STAGE2_CFLAGS = $(STAGE_CFLAGS)
@ -435,7 +439,10 @@ STAGE2_CXXFLAGS = $(CXXFLAGS)
STAGE2_CXXFLAGS = $(STAGE2_CFLAGS) STAGE2_CXXFLAGS = $(STAGE2_CFLAGS)
@endif target-libstdc++-v3-bootstrap @endif target-libstdc++-v3-bootstrap
STAGE2_TFLAGS = $(STAGE_TFLAGS) STAGE2_TFLAGS = $(STAGE_TFLAGS)
STAGE2_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # STAGE1_CONFIGURE_FLAGS overridden below, so we can use
# POSTSTAGE1_CONFIGURE_FLAGS here.
STAGE2_CONFIGURE_FLAGS = \
$(STAGE_CONFIGURE_FLAGS) $(POSTSTAGE1_CONFIGURE_FLAGS)
# Defaults for stage 3; some are overridden below. # Defaults for stage 3; some are overridden below.
STAGE3_CFLAGS = $(STAGE_CFLAGS) STAGE3_CFLAGS = $(STAGE_CFLAGS)
@ -445,7 +452,10 @@ STAGE3_CXXFLAGS = $(CXXFLAGS)
STAGE3_CXXFLAGS = $(STAGE3_CFLAGS) STAGE3_CXXFLAGS = $(STAGE3_CFLAGS)
@endif target-libstdc++-v3-bootstrap @endif target-libstdc++-v3-bootstrap
STAGE3_TFLAGS = $(STAGE_TFLAGS) STAGE3_TFLAGS = $(STAGE_TFLAGS)
STAGE3_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # STAGE1_CONFIGURE_FLAGS overridden below, so we can use
# POSTSTAGE1_CONFIGURE_FLAGS here.
STAGE3_CONFIGURE_FLAGS = \
$(STAGE_CONFIGURE_FLAGS) $(POSTSTAGE1_CONFIGURE_FLAGS)
# Defaults for stage 4; some are overridden below. # Defaults for stage 4; some are overridden below.
STAGE4_CFLAGS = $(STAGE_CFLAGS) STAGE4_CFLAGS = $(STAGE_CFLAGS)
@ -455,7 +465,10 @@ STAGE4_CXXFLAGS = $(CXXFLAGS)
STAGE4_CXXFLAGS = $(STAGE4_CFLAGS) STAGE4_CXXFLAGS = $(STAGE4_CFLAGS)
@endif target-libstdc++-v3-bootstrap @endif target-libstdc++-v3-bootstrap
STAGE4_TFLAGS = $(STAGE_TFLAGS) STAGE4_TFLAGS = $(STAGE_TFLAGS)
STAGE4_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # STAGE1_CONFIGURE_FLAGS overridden below, so we can use
# POSTSTAGE1_CONFIGURE_FLAGS here.
STAGE4_CONFIGURE_FLAGS = \
$(STAGE_CONFIGURE_FLAGS) $(POSTSTAGE1_CONFIGURE_FLAGS)
# Defaults for stage profile; some are overridden below. # Defaults for stage profile; some are overridden below.
STAGEprofile_CFLAGS = $(STAGE_CFLAGS) STAGEprofile_CFLAGS = $(STAGE_CFLAGS)
@ -465,7 +478,10 @@ STAGEprofile_CXXFLAGS = $(CXXFLAGS)
STAGEprofile_CXXFLAGS = $(STAGEprofile_CFLAGS) STAGEprofile_CXXFLAGS = $(STAGEprofile_CFLAGS)
@endif target-libstdc++-v3-bootstrap @endif target-libstdc++-v3-bootstrap
STAGEprofile_TFLAGS = $(STAGE_TFLAGS) STAGEprofile_TFLAGS = $(STAGE_TFLAGS)
STAGEprofile_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # STAGE1_CONFIGURE_FLAGS overridden below, so we can use
# POSTSTAGE1_CONFIGURE_FLAGS here.
STAGEprofile_CONFIGURE_FLAGS = \
$(STAGE_CONFIGURE_FLAGS) $(POSTSTAGE1_CONFIGURE_FLAGS)
# Defaults for stage feedback; some are overridden below. # Defaults for stage feedback; some are overridden below.
STAGEfeedback_CFLAGS = $(STAGE_CFLAGS) STAGEfeedback_CFLAGS = $(STAGE_CFLAGS)
@ -475,7 +491,10 @@ STAGEfeedback_CXXFLAGS = $(CXXFLAGS)
STAGEfeedback_CXXFLAGS = $(STAGEfeedback_CFLAGS) STAGEfeedback_CXXFLAGS = $(STAGEfeedback_CFLAGS)
@endif target-libstdc++-v3-bootstrap @endif target-libstdc++-v3-bootstrap
STAGEfeedback_TFLAGS = $(STAGE_TFLAGS) STAGEfeedback_TFLAGS = $(STAGE_TFLAGS)
STAGEfeedback_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # STAGE1_CONFIGURE_FLAGS overridden below, so we can use
# POSTSTAGE1_CONFIGURE_FLAGS here.
STAGEfeedback_CONFIGURE_FLAGS = \
$(STAGE_CONFIGURE_FLAGS) $(POSTSTAGE1_CONFIGURE_FLAGS)
# Only build the C compiler for stage1, because that is the only one that # Only build the C compiler for stage1, because that is the only one that
@ -493,6 +512,9 @@ STAGE1_LANGUAGES = @stage1_languages@
# the last argument when conflicting --enable arguments are passed. # the last argument when conflicting --enable arguments are passed.
# * Likewise, we force-disable coverage flags, since the installed # * Likewise, we force-disable coverage flags, since the installed
# compiler probably has never heard of them. # compiler probably has never heard of them.
# * Don't remove this, because above we added
# POSTSTAGE1_CONFIGURE_FLAGS to STAGE_CONFIGURE_FLAGS, which
# we don't want for STAGE1_CONFIGURE_FLAGS.
STAGE1_CONFIGURE_FLAGS = --disable-intermodule $(STAGE1_CHECKING) \ STAGE1_CONFIGURE_FLAGS = --disable-intermodule $(STAGE1_CHECKING) \
--disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"

View File

@ -418,6 +418,7 @@ TFLAGS =
STAGE_CFLAGS = $(BOOT_CFLAGS) STAGE_CFLAGS = $(BOOT_CFLAGS)
STAGE_TFLAGS = $(TFLAGS) STAGE_TFLAGS = $(TFLAGS)
STAGE_CONFIGURE_FLAGS=@stage2_werror_flag@ STAGE_CONFIGURE_FLAGS=@stage2_werror_flag@
POSTSTAGE1_CONFIGURE_FLAGS = @POSTSTAGE1_CONFIGURE_FLAGS@
[+ FOR bootstrap-stage +] [+ FOR bootstrap-stage +]
# Defaults for stage [+id+]; some are overridden below. # Defaults for stage [+id+]; some are overridden below.
@ -428,7 +429,10 @@ STAGE[+id+]_CXXFLAGS = $(CXXFLAGS)
STAGE[+id+]_CXXFLAGS = $(STAGE[+id+]_CFLAGS) STAGE[+id+]_CXXFLAGS = $(STAGE[+id+]_CFLAGS)
@endif target-libstdc++-v3-bootstrap @endif target-libstdc++-v3-bootstrap
STAGE[+id+]_TFLAGS = $(STAGE_TFLAGS) STAGE[+id+]_TFLAGS = $(STAGE_TFLAGS)
STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # STAGE1_CONFIGURE_FLAGS overridden below, so we can use
# POSTSTAGE1_CONFIGURE_FLAGS here.
STAGE[+id+]_CONFIGURE_FLAGS = \
$(STAGE_CONFIGURE_FLAGS) $(POSTSTAGE1_CONFIGURE_FLAGS)
[+ ENDFOR bootstrap-stage +] [+ ENDFOR bootstrap-stage +]
# Only build the C compiler for stage1, because that is the only one that # Only build the C compiler for stage1, because that is the only one that
@ -446,6 +450,9 @@ STAGE1_LANGUAGES = @stage1_languages@
# the last argument when conflicting --enable arguments are passed. # the last argument when conflicting --enable arguments are passed.
# * Likewise, we force-disable coverage flags, since the installed # * Likewise, we force-disable coverage flags, since the installed
# compiler probably has never heard of them. # compiler probably has never heard of them.
# * Don't remove this, because above we added
# POSTSTAGE1_CONFIGURE_FLAGS to STAGE[+id+]_CONFIGURE_FLAGS, which
# we don't want for STAGE1_CONFIGURE_FLAGS.
STAGE1_CONFIGURE_FLAGS = --disable-intermodule $(STAGE1_CHECKING) \ STAGE1_CONFIGURE_FLAGS = --disable-intermodule $(STAGE1_CHECKING) \
--disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"

38
configure vendored
View File

@ -556,6 +556,7 @@ enable_option_checking=no
ac_subst_vars='LTLIBOBJS ac_subst_vars='LTLIBOBJS
LIBOBJS LIBOBJS
compare_exclusions compare_exclusions
POSTSTAGE1_CONFIGURE_FLAGS
stage2_werror_flag stage2_werror_flag
stage1_checking stage1_checking
stage1_cflags stage1_cflags
@ -749,6 +750,7 @@ enable_libada
enable_libssp enable_libssp
enable_static_libjava enable_static_libjava
enable_build_with_cxx enable_build_with_cxx
enable_build_poststage1_with_cxx
with_mpc with_mpc
with_mpc_include with_mpc_include
with_mpc_lib with_mpc_lib
@ -1465,6 +1467,8 @@ Optional Features:
--enable-static-libjava[=ARG] --enable-static-libjava[=ARG]
build static libjava [default=no] build static libjava [default=no]
--enable-build-with-cxx build with C++ compiler instead of C compiler --enable-build-with-cxx build with C++ compiler instead of C compiler
--enable-build-poststage1-with-cxx
build stages 2 and 3 with C++, not C
--disable-ppl-version-check --disable-ppl-version-check
disable check for PPL version disable check for PPL version
--enable-cloog-backend[=BACKEND] --enable-cloog-backend[=BACKEND]
@ -4988,6 +4992,15 @@ else
fi fi
# Build stage1 with C and build stages 2 and 3 with C++.
# Check whether --enable-build-poststage1-with-cxx was given.
if test "${enable_build_poststage1_with_cxx+set}" = set; then :
enableval=$enable_build_poststage1_with_cxx; ENABLE_BUILD_POSTSTAGE1_WITH_CXX=$enableval
else
ENABLE_BUILD_POSTSTAGE1_WITH_CXX=yes
fi
# Used for setting $lt_cv_objdir # Used for setting $lt_cv_objdir
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
$as_echo_n "checking for objdir... " >&6; } $as_echo_n "checking for objdir... " >&6; }
@ -6181,9 +6194,11 @@ if test -d ${srcdir}/gcc; then
exit 1 exit 1
fi fi
if test "$language" = "c++" \ if test "$language" = "c++"; then
&& test "$ENABLE_BUILD_WITH_CXX" = "yes"; then if test "$ENABLE_BUILD_WITH_CXX" = "yes" \
boot_language=yes || test "$ENABLE_BUILD_POSTSTAGE1_WITH_CXX" = "yes"; then
boot_language=yes
fi
fi fi
case ,${enable_languages}, in case ,${enable_languages}, in
@ -6937,10 +6952,10 @@ $as_echo "$as_me: WARNING: trying to bootstrap a cross compiler" >&2;}
;; ;;
esac esac
case ",$enable_languages,:$ENABLE_BUILD_WITH_CXX:$enable_bootstrap" in case ",$enable_languages,:,$ENABLE_BUILD_WITH_CXX,$ENABLE_BUILD_POSTSTAGE1_WITH_CXX,:$enable_bootstrap" in
*,c++,*:yes:yes) ;; *,c++,*:*:*) ;;
*:yes:yes) *:*,yes,*:yes)
as_fn_error "bootstrapping with --enable-build-with-cxx requires c++ in --enable-languages" "$LINENO" 5 as_fn_error "bootstrapping with --enable-build-with-cxx or --enable-build-postage1-with-cxx requires c++ in --enable-languages" "$LINENO" 5
;; ;;
esac esac
@ -13990,6 +14005,15 @@ case ${enable_werror} in
esac esac
# If using ENABLE_BUILD_POSTSTAGE1_WITH_CXX, pass
# --enable-build-with-cxx after stage1.
if test "$ENABLE_BUILD_POSTSTAGE1_WITH_CXX" = "yes"; then
POSTSTAGE1_CONFIGURE_FLAGS=--enable-build-with-cxx
else
POSTSTAGE1_CONFIGURE_FLAGS=
fi
# Specify what files to not compare during bootstrap. # Specify what files to not compare during bootstrap.
compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*" compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"

View File

@ -1140,6 +1140,13 @@ AC_ARG_ENABLE(build-with-cxx,
ENABLE_BUILD_WITH_CXX=$enableval, ENABLE_BUILD_WITH_CXX=$enableval,
ENABLE_BUILD_WITH_CXX=no) ENABLE_BUILD_WITH_CXX=no)
# Build stage1 with C and build stages 2 and 3 with C++.
AC_ARG_ENABLE(build-poststage1-with-cxx,
[AS_HELP_STRING([--enable-build-poststage1-with-cxx],
[build stages 2 and 3 with C++, not C])],
ENABLE_BUILD_POSTSTAGE1_WITH_CXX=$enableval,
ENABLE_BUILD_POSTSTAGE1_WITH_CXX=yes)
# Used for setting $lt_cv_objdir # Used for setting $lt_cv_objdir
_LT_CHECK_OBJDIR _LT_CHECK_OBJDIR
@ -1710,9 +1717,11 @@ if test -d ${srcdir}/gcc; then
exit 1 exit 1
fi fi
if test "$language" = "c++" \ if test "$language" = "c++"; then
&& test "$ENABLE_BUILD_WITH_CXX" = "yes"; then if test "$ENABLE_BUILD_WITH_CXX" = "yes" \
boot_language=yes || test "$ENABLE_BUILD_POSTSTAGE1_WITH_CXX" = "yes"; then
boot_language=yes
fi
fi fi
case ,${enable_languages}, in case ,${enable_languages}, in
@ -2411,10 +2420,10 @@ case "$have_compiler:$host:$target:$enable_bootstrap" in
;; ;;
esac esac
case ",$enable_languages,:$ENABLE_BUILD_WITH_CXX:$enable_bootstrap" in case ",$enable_languages,:,$ENABLE_BUILD_WITH_CXX,$ENABLE_BUILD_POSTSTAGE1_WITH_CXX,:$enable_bootstrap" in
*,c++,*:yes:yes) ;; *,c++,*:*:*) ;;
*:yes:yes) *:*,yes,*:yes)
AC_MSG_ERROR([bootstrapping with --enable-build-with-cxx requires c++ in --enable-languages]) AC_MSG_ERROR([bootstrapping with --enable-build-with-cxx or --enable-build-postage1-with-cxx requires c++ in --enable-languages])
;; ;;
esac esac
@ -3202,6 +3211,15 @@ case ${enable_werror} in
esac esac
AC_SUBST(stage2_werror_flag) AC_SUBST(stage2_werror_flag)
# If using ENABLE_BUILD_POSTSTAGE1_WITH_CXX, pass
# --enable-build-with-cxx after stage1.
if test "$ENABLE_BUILD_POSTSTAGE1_WITH_CXX" = "yes"; then
POSTSTAGE1_CONFIGURE_FLAGS=--enable-build-with-cxx
else
POSTSTAGE1_CONFIGURE_FLAGS=
fi
AC_SUBST(POSTSTAGE1_CONFIGURE_FLAGS)
# Specify what files to not compare during bootstrap. # Specify what files to not compare during bootstrap.
compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*" compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"

View File

@ -1,3 +1,8 @@
2011-07-19 Ian Lance Taylor <iant@google.com>
* doc/install.texi (Configuration): Document
--enable-build-poststage1-with-cxx.
2011-07-19 Robert Millan <rmh@gnu.org> 2011-07-19 Robert Millan <rmh@gnu.org>
* config/mips/gnu-user.h: Copy from linux.h. Update comments. * config/mips/gnu-user.h: Copy from linux.h. Update comments.

View File

@ -1284,6 +1284,13 @@ will try to guess whether the @code{.init_array} and
Build GCC using a C++ compiler rather than a C compiler. This is an Build GCC using a C++ compiler rather than a C compiler. This is an
experimental option which may become the default in a later release. experimental option which may become the default in a later release.
@item --enable-build-poststage1-with-cxx
When bootstrapping, build stages 2 and 3 of GCC using a C++ compiler
rather than a C compiler. Stage 1 is still built with a C compiler.
This is an experimental option which may become the default in a later
release. This is enabled by default and may be disabled using
@option{--disable-build-poststage1-with-cxx}.
@item --enable-maintainer-mode @item --enable-maintainer-mode
The build rules that regenerate the Autoconf and Automake output files as The build rules that regenerate the Autoconf and Automake output files as
well as the GCC master message catalog @file{gcc.pot} are normally well as the GCC master message catalog @file{gcc.pot} are normally