Commit 00020c16 by Ian Lance Taylor Committed by Ian Lance Taylor

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

./:	* configure.ac: Add --enable-build-with-cxx.  When set, add c++ to
	boot_languages.  Only bootstrap target libraries listed in
	target_libs for some boot language.  Add --with-stage1-ldflags,
	--with-stage1-libs, --with-boot-ldflags, --with-boot-libs.  Remove
	with_host_libstdcxx from ppllibs.  Only add -fkeep-inline-functions
	if not building with C++.
	* Makefile.def: For target_module libstdc++-v3, set bootstrap=true.
	* Makefile.tpl (STAGE1_LDFLAGS, STAGE1_LIBS): New variables.
	(POSTSTAGE1_LDFLAGS, POSTSTAGE1_LIBS): New variables.
	(HOST_EXPORTS): Add STAGE1_LDFLAGS to LDFLAGS.  Export HOST_LIBS.
	(POSTSTAGE1_HOST_EXPORTS): Set CXX and CXX_FOR_BUILD.  Add
	POSTSTAGE1_LDFLAGS to LDFLAGS.  Export HOST_LIBS.
	(POSTSTAGE1_FLAGS_TO_PASS): Likewise.
	* configure, Makefile.in: Rebuild.
gcc/:
	* configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
	from loose_warn into c_loose_warn and from strict_warn into
	c_strict_warn.  Set and substitute warn_cxxflags.  Check for
	--enable-build-with-cxx.  Set and substitute
	ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
	* Makefile.in (CXXFLAGS): New variable.
	(C_LOOSE_WARN, C_STRICT_WARN): New variables.
	(GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
	the default is the same as $(STRICT_WARN).
	(GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
	(CXX): New variable.
	(COMPILER): New value if ENABLE_BUILD_WITH_CXX.
	(COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
	(ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
	(HOST_LIBS): New variable.
	(GCC_CFLAGS): Add $(C_LOOSE_WARN).
	(ALL_CXXFLAGS): New variable.
	(LIBS, BACKENDLIBS): Add $(HOST_LIBS).
	* doc/install.texi (Configuration): Document
	--enable-build-with-cxx, --with-stage1-ldflags,
	--with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
	* configure: Rebuild.

From-SVN: r148889
parent 9006a161
2009-06-23 Ian Lance Taylor <iant@google.com>
* configure.ac: Add --enable-build-with-cxx. When set, add c++ to
boot_languages. Only bootstrap target libraries listed in
target_libs for some boot language. Add --with-stage1-ldflags,
--with-stage1-libs, --with-boot-ldflags, --with-boot-libs. Remove
with_host_libstdcxx from ppllibs. Only add -fkeep-inline-functions
if not building with C++.
* Makefile.def: For target_module libstdc++-v3, set bootstrap=true.
* Makefile.tpl (STAGE1_LDFLAGS, STAGE1_LIBS): New variables.
(POSTSTAGE1_LDFLAGS, POSTSTAGE1_LIBS): New variables.
(HOST_EXPORTS): Add STAGE1_LDFLAGS to LDFLAGS. Export HOST_LIBS.
(POSTSTAGE1_HOST_EXPORTS): Set CXX and CXX_FOR_BUILD. Add
POSTSTAGE1_LDFLAGS to LDFLAGS. Export HOST_LIBS.
(POSTSTAGE1_FLAGS_TO_PASS): Likewise.
* configure, Makefile.in: Rebuild.
2009-06-23 Li Feng <nemokingdom@gmail.com> 2009-06-23 Li Feng <nemokingdom@gmail.com>
* MAINTAINERS: Added my name to write-after-approval list. * MAINTAINERS: Added my name to write-after-approval list.
......
...@@ -141,7 +141,10 @@ host_modules= { module= libtermcap; no_check=true; ...@@ -141,7 +141,10 @@ host_modules= { module= libtermcap; no_check=true;
host_modules= { module= utils; no_check=true; }; host_modules= { module= utils; no_check=true; };
host_modules= { module= gnattools; }; host_modules= { module= gnattools; };
target_modules = { module= libstdc++-v3; lib_path=.libs; raw_cxx=true; }; target_modules = { module= libstdc++-v3;
bootstrap=true;
lib_path=.libs;
raw_cxx=true; };
target_modules = { module= libmudflap; lib_path=.libs; }; target_modules = { module= libmudflap; lib_path=.libs; };
target_modules = { module= libssp; lib_path=.libs; }; target_modules = { module= libssp; lib_path=.libs; };
target_modules = { module= newlib; }; target_modules = { module= newlib; };
......
...@@ -120,6 +120,19 @@ BUILD_SUBDIR = @build_subdir@ ...@@ -120,6 +120,19 @@ BUILD_SUBDIR = @build_subdir@
# directories built for the build system. # directories built for the build system.
BUILD_CONFIGARGS = @build_configargs@ --with-build-subdir="$(BUILD_SUBDIR)" BUILD_CONFIGARGS = @build_configargs@ --with-build-subdir="$(BUILD_SUBDIR)"
# Linker flags to use on the host, for stage1 or when not
# bootstrapping.
STAGE1_LDFLAGS = @stage1_ldflags@
# Libraries to use on the host, for stage1 or when not bootstrapping.
STAGE1_LIBS = @stage1_libs@
# Linker flags to use for stage2 and later.
POSTSTAGE1_LDFLAGS = @poststage1_ldflags@
# Libraries to use for stage2 and later.
POSTSTAGE1_LIBS = @poststage1_libs@
# This is the list of variables to export in the environment when # This is the list of variables to export in the environment when
# configuring any subdirectory. It must also be exported whenever # configuring any subdirectory. It must also be exported whenever
# recursing into a build directory in case that directory's Makefile # recursing into a build directory in case that directory's Makefile
...@@ -185,7 +198,7 @@ HOST_EXPORTS = \ ...@@ -185,7 +198,7 @@ HOST_EXPORTS = \
CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \ DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
LD="$(LD)"; export LD; \ LD="$(LD)"; export LD; \
LDFLAGS="$(LDFLAGS)"; export LDFLAGS; \ LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \
NM="$(NM)"; export NM; \ NM="$(NM)"; export NM; \
RANLIB="$(RANLIB)"; export RANLIB; \ RANLIB="$(RANLIB)"; export RANLIB; \
WINDRES="$(WINDRES)"; export WINDRES; \ WINDRES="$(WINDRES)"; export WINDRES; \
...@@ -200,6 +213,7 @@ HOST_EXPORTS = \ ...@@ -200,6 +213,7 @@ HOST_EXPORTS = \
OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \ OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \
RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)"; export RANLIB_FOR_TARGET; \ RANLIB_FOR_TARGET="$(RANLIB_FOR_TARGET)"; export RANLIB_FOR_TARGET; \
TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \ TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \
HOST_LIBS="$(STAGE1_LIBS)"; export HOST_LIBS; \
GMPLIBS="$(HOST_GMPLIBS)"; export GMPLIBS; \ GMPLIBS="$(HOST_GMPLIBS)"; export GMPLIBS; \
GMPINC="$(HOST_GMPINC)"; export GMPINC; \ GMPINC="$(HOST_GMPINC)"; export GMPINC; \
PPLLIBS="$(HOST_PPLLIBS)"; export PPLLIBS; \ PPLLIBS="$(HOST_PPLLIBS)"; export PPLLIBS; \
...@@ -218,8 +232,16 @@ POSTSTAGE1_HOST_EXPORTS = \ ...@@ -218,8 +232,16 @@ POSTSTAGE1_HOST_EXPORTS = \
-B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \
$(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \
CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \
GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND \ CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
-I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
-I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
-I$$r/$(srcdir)/libstdc++-v3/libsupc++ \
-L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; \
GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \
LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \
HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS;
# Target libraries are put under this directory: # Target libraries are put under this directory:
TARGET_SUBDIR = @target_subdir@ TARGET_SUBDIR = @target_subdir@
...@@ -540,8 +562,11 @@ X11_FLAGS_TO_PASS = \ ...@@ -540,8 +562,11 @@ X11_FLAGS_TO_PASS = \
# Flags to pass to stage2 and later makes. # Flags to pass to stage2 and later makes.
POSTSTAGE1_FLAGS_TO_PASS = \ POSTSTAGE1_FLAGS_TO_PASS = \
CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" GNATBIND="$${GNATBIND}" \ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
LDFLAGS="$(BOOT_LDFLAGS)" \ CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \
GNATBIND="$${GNATBIND}" \
LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)" \
HOST_LIBS="$(POSTSTAGE1_LIBS)" \
"`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" "`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.
......
...@@ -1191,6 +1191,12 @@ fi ...@@ -1191,6 +1191,12 @@ fi
ACX_PROG_GNAT ACX_PROG_GNAT
ACX_PROG_CMP_IGNORE_INITIAL ACX_PROG_CMP_IGNORE_INITIAL
# See if we are building gcc with C++.
AC_ARG_ENABLE(build-with-cxx,
[ --enable-build-with-cxx build with C++ compiler instead of C compiler],
ENABLE_BUILD_WITH_CXX=$enableval,
ENABLE_BUILD_WITH_CXX=no)
# Check for GMP, MPFR and MPC # Check for GMP, MPFR and MPC
gmplibs="-lmpfr -lgmp" gmplibs="-lmpfr -lgmp"
gmpinc= gmpinc=
...@@ -1422,10 +1428,59 @@ case $with_host_libstdcxx in ...@@ -1422,10 +1428,59 @@ case $with_host_libstdcxx in
;; ;;
esac esac
# Linker flags to use for stage1 or when not boostrapping.
AC_ARG_WITH(stage1-ldflags,
[ --with-stage1-ldflags=FLAGS Linker flags for stage1],
[if test "$withval" = "no" -o "$withval" = "yes"; then
stage1_ldflags=
else
stage1_ldflags=$withval
fi],
[stage1_ldflags=])
AC_SUBST(stage1_ldflags)
# Libraries to use for stage1 or when not bootstrapping.
AC_ARG_WITH(stage1-libs,
[ -with-stage1-libs=LIBS Libraries for stage1],
[if test "$withval" = "no" -o "$withval" = "yes"; then
stage1_libs=
else
stage1_libs=$withval
fi],
[stage1_libs=$with_host_libstdcxx])
AC_SUBST(stage1_libs)
# Linker flags to use for stage2 and later builds.
AC_ARG_WITH(boot-ldflags,
[ --with-boot-ldflags=FLAGS Linker flags for stage2 and later],
[if test "$withval" = "no" -o "$withval" = "yes"; then
poststage1_ldflags=
else
poststage1_ldflags=$withval
fi],
[if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
poststage1_ldflags=-static-libstdc++
else
poststage1_ldflags=
fi])
AC_SUBST(poststage1_ldflags)
# Libraries to use for stage2 and later builds. This defaults to the
# argument passed to --with-host-libstdcxx.
AC_ARG_WITH(boot-libs,
[ --with-boot-libs=LIBS Libraries for stage2 and later]
[if test "$withval" = "no" -o "$withval" = "yes"; then
poststage1_libs=
else
poststage1_libs=$withval
fi],
[poststage1_libs=$with_host_libstdcxx])
AC_SUBST(poststage1_libs)
# Check for PPL # Check for PPL
ppl_major_version=0 ppl_major_version=0
ppl_minor_version=10 ppl_minor_version=10
ppllibs=" -lppl_c -lppl -lgmpxx $with_host_libstdcxx " ppllibs=" -lppl_c -lppl -lgmpxx"
pplinc= pplinc=
AC_ARG_WITH(ppl, [ --with-ppl=PATH Specify prefix directory for the installed PPL package AC_ARG_WITH(ppl, [ --with-ppl=PATH Specify prefix directory for the installed PPL package
...@@ -1439,7 +1494,7 @@ case $with_ppl in ...@@ -1439,7 +1494,7 @@ case $with_ppl in
ppllibs= ppllibs=
;; ;;
*) *)
ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx $with_host_libstdcxx" ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx"
pplinc="-I$with_ppl/include $pplinc" pplinc="-I$with_ppl/include $pplinc"
LIBS="$ppllibs $LIBS" LIBS="$ppllibs $LIBS"
;; ;;
...@@ -1448,11 +1503,11 @@ if test "x$with_ppl_include" != x; then ...@@ -1448,11 +1503,11 @@ if test "x$with_ppl_include" != x; then
pplinc="-I$with_ppl_include $pplinc" pplinc="-I$with_ppl_include $pplinc"
fi fi
if test "x$with_ppl_lib" != x; then if test "x$with_ppl_lib" != x; then
ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx $with_host_libstdcxx" ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx"
LIBS="$ppllibs $LIBS" LIBS="$ppllibs $LIBS"
fi fi
if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then
ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx '"$with_host_libstdcxx " ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx '
pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include ' pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include '
LIBS="$ppllibs $LIBS" LIBS="$ppllibs $LIBS"
fi fi
...@@ -1538,6 +1593,9 @@ AC_SUBST(clooginc) ...@@ -1538,6 +1593,9 @@ AC_SUBST(clooginc)
# By default, C is the only stage 1 language. # By default, C is the only stage 1 language.
stage1_languages=,c, stage1_languages=,c,
# Target libraries that we bootstrap.
bootstrap_target_libs=,target-libgcc,
# Figure out what language subdirectories are present. # Figure out what language subdirectories are present.
# Look if the user specified --enable-languages="..."; if not, use # Look if the user specified --enable-languages="..."; if not, use
# the environment variable $LANGUAGES if defined. $LANGUAGES might # the environment variable $LANGUAGES if defined. $LANGUAGES might
...@@ -1623,6 +1681,10 @@ if test -d ${srcdir}/gcc; then ...@@ -1623,6 +1681,10 @@ if test -d ${srcdir}/gcc; then
exit 1 exit 1
fi fi
if test "$language" = "c++" -a "$ENABLE_BUILD_WITH_CXX" = "yes"; then
boot_language=yes
fi
case ,${enable_languages}, in case ,${enable_languages}, in
*,${language},*) *,${language},*)
# Language was explicitly selected; include it. # Language was explicitly selected; include it.
...@@ -1689,6 +1751,8 @@ if test -d ${srcdir}/gcc; then ...@@ -1689,6 +1751,8 @@ if test -d ${srcdir}/gcc; then
yes) yes)
# Add to (comma-separated) list of stage 1 languages. # Add to (comma-separated) list of stage 1 languages.
stage1_languages="${stage1_languages}${language}," stage1_languages="${stage1_languages}${language},"
# We need to bootstrap any supporting libraries.
bootstrap_target_libs="${bootstrap_target_libs}${target_libs},"
;; ;;
esac esac
;; ;;
...@@ -2420,11 +2484,18 @@ for module in ${target_configdirs} ; do ...@@ -2420,11 +2484,18 @@ for module in ${target_configdirs} ; do
echo 1>&2 "*** removing ${target_subdir}/${module}/Makefile to force reconfigure" echo 1>&2 "*** removing ${target_subdir}/${module}/Makefile to force reconfigure"
rm -f ${target_subdir}/${module}/Makefile rm -f ${target_subdir}/${module}/Makefile
fi fi
# We only bootstrap target libraries listed in bootstrap_target_libs.
case $bootstrap_target_libs in
*,target-$module,*) target_bootstrap_suffix=$bootstrap_suffix ;;
*) target_bootstrap_suffix=no-bootstrap ;;
esac
extrasub="$extrasub extrasub="$extrasub
/^@if target-$module\$/d /^@if target-$module\$/d
/^@endif target-$module\$/d /^@endif target-$module\$/d
/^@if target-$module-$bootstrap_suffix\$/d /^@if target-$module-$target_bootstrap_suffix\$/d
/^@endif target-$module-$bootstrap_suffix\$/d" /^@endif target-$module-$target_bootstrap_suffix\$/d"
done done
extrasub="$extrasub extrasub="$extrasub
...@@ -2988,7 +3059,7 @@ case $build in ...@@ -2988,7 +3059,7 @@ case $build in
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.
if test "$GCC" = yes; then if test "$GCC" = yes -a "$ENABLE_BUILD_WITH_CXX" != yes; then
saved_CFLAGS="$CFLAGS" saved_CFLAGS="$CFLAGS"
# Pass -fkeep-inline-functions for stage 1 if the GCC version supports it. # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it.
......
2009-06-23 Ian Lance Taylor <iant@google.com>
* configure.ac: Invoke AC_PROG_CXX. Separate C specific warnings
from loose_warn into c_loose_warn and from strict_warn into
c_strict_warn. Set and substitute warn_cxxflags. Check for
--enable-build-with-cxx. Set and substitute
ENABLE_BUILD_WITH_CXX. Set and substitute HOST_LIBS.
* Makefile.in (CXXFLAGS): New variable.
(C_LOOSE_WARN, C_STRICT_WARN): New variables.
(GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN). Add $(C_STRICT_WARN) if
the default is the same as $(STRICT_WARN).
(GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
(CXX): New variable.
(COMPILER): New value if ENABLE_BUILD_WITH_CXX.
(COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
(ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
(HOST_LIBS): New variable.
(GCC_CFLAGS): Add $(C_LOOSE_WARN).
(ALL_CXXFLAGS): New variable.
(LIBS, BACKENDLIBS): Add $(HOST_LIBS).
* doc/install.texi (Configuration): Document
--enable-build-with-cxx, --with-stage1-ldflags,
--with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
* configure: Rebuild.
2009-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> 2009-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/arm.c (arm_override_options): Fix braces and formatting from previous * config/arm/arm.c (arm_override_options): Fix braces and formatting from previous
......
...@@ -134,6 +134,7 @@ LANGUAGES = c gcov$(exeext) gcov-dump$(exeext) $(CONFIG_LANGUAGES) ...@@ -134,6 +134,7 @@ LANGUAGES = c gcov$(exeext) gcov-dump$(exeext) $(CONFIG_LANGUAGES)
T_CFLAGS = T_CFLAGS =
TCFLAGS = TCFLAGS =
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
# Flags to determine code coverage. When coverage is disabled, this will # Flags to determine code coverage. When coverage is disabled, this will
...@@ -149,11 +150,15 @@ coverageexts = .{gcda,gcno} ...@@ -149,11 +150,15 @@ coverageexts = .{gcda,gcno}
# off if they wish. # off if they wish.
# LOOSE_WARN are the warning flags to use when compiling something # LOOSE_WARN are the warning flags to use when compiling something
# which is only compiled with gcc, such as libgcc. # which is only compiled with gcc, such as libgcc.
# C_LOOSE_WARN is similar, but with C-only warnings.
# STRICT_WARN are the additional warning flags to # STRICT_WARN are the additional warning flags to
# apply to the back end and some front ends, which may be compiled # apply to the back end and some front ends, which may be compiled
# with other compilers. # with other compilers.
# C_STRICT_WARN is similar, with C-only warnings.
LOOSE_WARN = @loose_warn@ LOOSE_WARN = @loose_warn@
C_LOOSE_WARN = @c_loose_warn@
STRICT_WARN = @strict_warn@ STRICT_WARN = @strict_warn@
C_STRICT_WARN = @c_strict_warn@
# This is set by --enable-checking. The idea is to catch forgotten # This is set by --enable-checking. The idea is to catch forgotten
# "extern" tags in header files. # "extern" tags in header files.
...@@ -169,7 +174,8 @@ VALGRIND_DRIVER_DEFINES = @valgrind_path_defines@ ...@@ -169,7 +174,8 @@ VALGRIND_DRIVER_DEFINES = @valgrind_path_defines@
# This is how we control whether or not the additional warnings are applied. # This is how we control whether or not the additional warnings are applied.
.-warn = $(STRICT_WARN) .-warn = $(STRICT_WARN)
build-warn = $(STRICT_WARN) build-warn = $(STRICT_WARN)
GCC_WARN_CFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG) $($@-warn) GCC_WARN_CFLAGS = $(LOOSE_WARN) $(C_LOOSE_WARN) $($(@D)-warn) $(if $(filter-out $(STRICT_WARN),$($(@D)-warn)),,$(C_STRICT_WARN)) $(NOCOMMON_FLAG) $($@-warn)
GCC_WARN_CXXFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG) $($@-warn)
# These files are to have specific diagnostics suppressed, or are not to # These files are to have specific diagnostics suppressed, or are not to
# be subject to -Werror: # be subject to -Werror:
...@@ -180,13 +186,16 @@ mips-tfile.o-warn = -Wno-error ...@@ -180,13 +186,16 @@ mips-tfile.o-warn = -Wno-error
# All warnings have to be shut off in stage1 if the compiler used then # All warnings have to be shut off in stage1 if the compiler used then
# isn't gcc; configure determines that. WARN_CFLAGS will be either # isn't gcc; configure determines that. WARN_CFLAGS will be either
# $(GCC_WARN_CFLAGS), or nothing. # $(GCC_WARN_CFLAGS), or nothing. Similarly, WARN_CXXFLAGS will be
# either $(GCC_WARN_CXXFLAGS), or nothing.
WARN_CFLAGS = @warn_cflags@ WARN_CFLAGS = @warn_cflags@
WARN_CXXFLAGS = @warn_cxxflags@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
AWK = @AWK@ AWK = @AWK@
CC = @CC@ CC = @CC@
CXX = @CXX@
BISON = @BISON@ BISON = @BISON@
BISONFLAGS = BISONFLAGS =
FLEX = @FLEX@ FLEX = @FLEX@
...@@ -197,12 +206,19 @@ NM = @NM@ ...@@ -197,12 +206,19 @@ NM = @NM@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
RANLIB_FLAGS = @ranlib_flags@ RANLIB_FLAGS = @ranlib_flags@
# The name of the compiler to use. Currently always $(CC). In the # The name of the compiler to use.
# future this may change to $(CXX). ENABLE_BUILD_WITH_CXX = @ENABLE_BUILD_WITH_CXX@
ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
COMPILER = $(CC) COMPILER = $(CC)
COMPILER_FLAGS = $(CFLAGS) COMPILER_FLAGS = $(CFLAGS)
LINKER = $(CC) LINKER = $(CC)
LINKER_FLAGS = $(CFLAGS) LINKER_FLAGS = $(CFLAGS)
else
COMPILER = $(CXX)
COMPILER_FLAGS = $(CXXFLAGS)
LINKER = $(CXX)
LINKER_FLAGS = $(CXXFLAGS)
endif
# ------------------------------------------- # -------------------------------------------
# Programs which operate on the build machine # Programs which operate on the build machine
...@@ -272,6 +288,9 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \ ...@@ -272,6 +288,9 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \
# In stage2 and beyond, we force this to "-o $@" since we know we're using gcc. # In stage2 and beyond, we force this to "-o $@" since we know we're using gcc.
OUTPUT_OPTION = @OUTPUT_OPTION@ OUTPUT_OPTION = @OUTPUT_OPTION@
# Libraries to use on the host.
HOST_LIBS = @HOST_LIBS@
# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is # This is where we get zlib from. zlibdir is -L../zlib and zlibinc is
# -I../zlib, unless we were configured with --with-system-zlib, in which # -I../zlib, unless we were configured with --with-system-zlib, in which
# case both are empty. # case both are empty.
...@@ -330,7 +349,7 @@ GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isyste ...@@ -330,7 +349,7 @@ GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isyste
# This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
# It specifies -B./. # It specifies -B./.
# It also specifies -isystem ./include to find, e.g., stddef.h. # It also specifies -isystem ./include to find, e.g., stddef.h.
GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS) GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) $(C_LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS)
# --------------------------------------------------- # ---------------------------------------------------
# Programs which produce files for the target machine # Programs which produce files for the target machine
...@@ -917,16 +936,28 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@ ...@@ -917,16 +936,28 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@
ALL_CFLAGS = $(T_CFLAGS) \ ALL_CFLAGS = $(T_CFLAGS) \
$(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@
# The C++ version.
ALL_CXXFLAGS = $(T_CFLAGS) $(CXXFLAGS) $(INTERNAL_CFLAGS) \
$(COVERAGE_FLAGS) $(WARN_CXXFLAGS) @DEFS@
# Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro # Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro
# puts -I options in CPPFLAGS, our include files in the srcdir will always # puts -I options in CPPFLAGS, our include files in the srcdir will always
# win against random include files in /usr/include. # win against random include files in /usr/include.
ALL_CPPFLAGS = $(INCLUDES) $(CPPFLAGS) ALL_CPPFLAGS = $(INCLUDES) $(CPPFLAGS)
# This is the variable to use when using $(COMPILER). # This is the variable to use when using $(COMPILER).
ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
ALL_COMPILERFLAGS = $(ALL_CFLAGS) ALL_COMPILERFLAGS = $(ALL_CFLAGS)
else
ALL_COMPILERFLAGS = $(ALL_CXXFLAGS)
endif
# This is the variable to use when using $(LINKER). # This is the variable to use when using $(LINKER).
ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
ALL_LINKERFLAGS = $(ALL_CFLAGS) ALL_LINKERFLAGS = $(ALL_CFLAGS)
else
ALL_LINKERFLAGS = $(ALL_CXXFLAGS)
endif
# Build and host support libraries. # Build and host support libraries.
LIBIBERTY = ../libiberty/libiberty.a LIBIBERTY = ../libiberty/libiberty.a
...@@ -941,8 +972,9 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY) ...@@ -941,8 +972,9 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
# How to link with both our special library facilities # How to link with both our special library facilities
# and the system's installed libraries. # and the system's installed libraries.
LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) \
BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS)
BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS)
# Any system libraries needed just for GNAT. # Any system libraries needed just for GNAT.
SYSLIBS = @GNAT_LIBEXC@ SYSLIBS = @GNAT_LIBEXC@
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -276,6 +276,7 @@ rm -f a.out a.exe b.out ...@@ -276,6 +276,7 @@ rm -f a.out a.exe b.out
# Find the native compiler # Find the native compiler
AC_PROG_CC AC_PROG_CC
AM_PROG_CC_C_O AM_PROG_CC_C_O
AC_PROG_CXX
ACX_PROG_GNAT([-I"$srcdir"/ada]) ACX_PROG_GNAT([-I"$srcdir"/ada])
# autoconf is lame and doesn't give us any substitution variable for this. # autoconf is lame and doesn't give us any substitution variable for this.
...@@ -323,24 +324,30 @@ AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)]) ...@@ -323,24 +324,30 @@ AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
# So, we only use -pedantic if we can disable those warnings. # So, we only use -pedantic if we can disable those warnings.
ACX_PROG_CC_WARNING_OPTS( ACX_PROG_CC_WARNING_OPTS(
m4_quote(m4_do([-W -Wall -Wwrite-strings -Wstrict-prototypes ], m4_quote(m4_do([-W -Wall -Wwrite-strings -Wcast-qual])), [loose_warn])
[-Wmissing-prototypes -Wcast-qual])), [loose_warn])
ACX_PROG_CC_WARNING_OPTS( ACX_PROG_CC_WARNING_OPTS(
m4_quote(m4_do([-Wold-style-definition -Wc++-compat ], m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
[-Wmissing-format-attribute])), [strict_warn]) [c_loose_warn])
ACX_PROG_CC_WARNING_OPTS(
m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
ACX_PROG_CC_WARNING_OPTS(
m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
ACX_PROG_CC_WARNING_ALMOST_PEDANTIC( ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
[-Wno-overlength-strings])), [strict_warn]) [-Wno-overlength-strings])), [strict_warn])
ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn]) ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
# The above macros do nothing if the compiler is not GCC. However, the # The above macros do nothing if the compiler is not GCC. However, the
# Makefile has more goo to add other flags, so this variabl is used to # Makefile has more goo to add other flags, so these variables are used
# enables warnings only for GCC. # to enable warnings only for GCC.
warn_cflags= warn_cflags=
warn_cxxflags=
if test "x$GCC" = "xyes"; then if test "x$GCC" = "xyes"; then
warn_cflags='$(GCC_WARN_CFLAGS)' warn_cflags='$(GCC_WARN_CFLAGS)'
warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
fi fi
AC_SUBST(warn_cflags) AC_SUBST(warn_cflags)
AC_SUBST(warn_cxxflags)
# Enable expensive internal checks # Enable expensive internal checks
is_release= is_release=
...@@ -573,6 +580,13 @@ fi ...@@ -573,6 +580,13 @@ fi
# Miscenalleous configure options # Miscenalleous configure options
# ------------------------------- # -------------------------------
# See if we are building gcc with C++.
AC_ARG_ENABLE(build-with-cxx,
[ --enable-build-with-cxx build with C++ compiler instead of C compiler],
ENABLE_BUILD_WITH_CXX=$enableval,
ENABLE_BUILD_WITH_CXX=no)
AC_SUBST(ENABLE_BUILD_WITH_CXX)
# With stabs # With stabs
AC_ARG_WITH(stabs, AC_ARG_WITH(stabs,
[ --with-stabs arrange to use stabs instead of host debug format], [ --with-stabs arrange to use stabs instead of host debug format],
...@@ -3749,6 +3763,13 @@ esac], ...@@ -3749,6 +3763,13 @@ esac],
AC_SUBST(GGC) AC_SUBST(GGC)
echo "Using $GGC for garbage collection." echo "Using $GGC for garbage collection."
# Libraries to use on the host. This will normally be set by the top
# level Makefile. Here we simply capture the value for our Makefile.
if test -z "${HOST_LIBS+set}"; then
HOST_LIBS=
fi
AC_SUBST(HOST_LIBS)
# Use the system's zlib library. # Use the system's zlib library.
zlibdir=-L../zlib zlibdir=-L../zlib
zlibinc="-I\$(srcdir)/../zlib" zlibinc="-I\$(srcdir)/../zlib"
......
...@@ -1204,6 +1204,10 @@ opposite effect. If neither option is specified, the configure script ...@@ -1204,6 +1204,10 @@ opposite effect. If neither option is specified, the configure script
will try to guess whether the @code{.init_array} and will try to guess whether the @code{.init_array} and
@code{.fini_array} sections are supported and, if they are, use them. @code{.fini_array} sections are supported and, if they are, use them.
@item --enable-build-with-cxx
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.
@item --enable-maintainer-mode @item --enable-maintainer-mode
The build rules that The build rules that
regenerate the GCC master message catalog @file{gcc.pot} are normally regenerate the GCC master message catalog @file{gcc.pot} are normally
...@@ -1549,6 +1553,27 @@ linking with a shared copy of PPL, you probably do not need this ...@@ -1549,6 +1553,27 @@ linking with a shared copy of PPL, you probably do not need this
option; shared library dependencies will cause the linker to search option; shared library dependencies will cause the linker to search
for the standard C++ library automatically. for the standard C++ library automatically.
@item --with-stage1-ldflags=@var{flags}
This option may be used to set linker flags to be used when linking
stage 1 of GCC. These are also used when linking GCC if configured with
@option{--disable-bootstrap}. By default no special flags are used.
@item --with-stage1-libs=@var{libs}
This option may be used to set libraries to be used when linking stage 1
of GCC. These are also used when linking GCC if configured with
@option{--disable-bootstrap}. The default is the argument to
@option{--with-host-libstdcxx}, if specified.
@item --with-boot-ldflags=@var{flags}
This option may be used to set linker flags to be used when linking
stage 2 and later when bootstrapping GCC. By default no special flags
are used.
@item --with-boot-libs=@var{libs}
This option may be used to set libraries to be used when linking stage 2
and later when bootstrapping GCC. The default is the argument to
@option{--with-host-libstdcxx}, if specified.
@item --with-debug-prefix-map=@var{map} @item --with-debug-prefix-map=@var{map}
Convert source directory names using @option{-fdebug-prefix-map} when Convert source directory names using @option{-fdebug-prefix-map} when
building runtime libraries. @samp{@var{map}} is a space-separated building runtime libraries. @samp{@var{map}} is a space-separated
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment