PR81878: fix --disable-bootstrap --enable-languages=ada
gnattools build machinery uses just-build xgcc and xg++ as $(CC) and $(CXX) in native builds. However, if C and C++ languages are not enabled, it won't find them. So, enable C and C++ if Ada is enabled. Most of the time, this is probably no big deal: C is always enabled anyway, and C++ is already enabled for bootstraps. We need not enable those for cross builds, however. At first I just took the logic from gnattools/configure, but found it to be lacking: it would use the just-built tools even in cross-back settings, whose tools just built for the host would not run on the build machine. So I've narrowed down the test to rely on autoconf-detected cross-ness (build->host only), but also to ensure that host matches build, and that target matches host. I've considered sourcing ada/config-lang.in from within gnattools/configure, and testing lang_requires as set by it, so as to avoid a duplication of tests that ought to remain in sync, but decided it would be too fragile, as ada/config-lang.in does not expect srcdir to refer to gnattools. for gcc/ada/ChangeLog PR ada/81878 * gcc-interface/config-lang.in (lang_requires): Set to "c c++" when gnattools wants it. for gnattools/ChangeLog PR ada/81878 * configure.ac (default_gnattools_target): Do not mistake just-built host tools as native in cross-back toolchains. * configure: Rebuilt. From-SVN: r266290
This commit is contained in:
parent
502e897d1a
commit
f4c53af18b
@ -1,3 +1,9 @@
|
|||||||
|
2018-11-19 Alexandre Oliva <oliva@adacore.com>
|
||||||
|
|
||||||
|
PR ada/81878
|
||||||
|
* gcc-interface/config-lang.in (lang_requires): Set to "c c++"
|
||||||
|
when gnattools wants it.
|
||||||
|
|
||||||
2018-11-19 Eric Botcazou <ebotcazou@adacore.com>
|
2018-11-19 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
* gcc-interface/cuintp.c (UI_From_gnu): Remove code for 32-bit hosts.
|
* gcc-interface/cuintp.c (UI_From_gnu): Remove code for 32-bit hosts.
|
||||||
|
@ -34,6 +34,15 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ada-tree.h \$(srcdir)/ada/gcc-interface/gi
|
|||||||
|
|
||||||
outputs="ada/gcc-interface/Makefile ada/Makefile"
|
outputs="ada/gcc-interface/Makefile ada/Makefile"
|
||||||
|
|
||||||
|
# gnattools native builds use both $(CC) and $(CXX), see PR81878.
|
||||||
|
# This is not too onerous: C is always enabled anyway, and C++ is
|
||||||
|
# always enabled for bootstrapping. Use here the same logic used in
|
||||||
|
# gnattools/configure to decide whether to use -native or -cross tools
|
||||||
|
# for the build.
|
||||||
|
if test "x$cross_compiling/$build/$host" = "xno/$host/$target" ; then
|
||||||
|
lang_requires="c c++"
|
||||||
|
fi
|
||||||
|
|
||||||
target_libs="target-libada"
|
target_libs="target-libada"
|
||||||
lang_dirs="gnattools"
|
lang_dirs="gnattools"
|
||||||
|
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2018-11-19 Alexandre Oliva <oliva@adacore.com>
|
||||||
|
|
||||||
|
PR ada/81878
|
||||||
|
* configure.ac (default_gnattools_target): Do not mistake
|
||||||
|
just-built host tools as native in cross-back toolchains.
|
||||||
|
* configure: Rebuilt.
|
||||||
|
|
||||||
2018-11-06 Eric Botcazou <ebotcazou@adacore.com>
|
2018-11-06 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
PR ada/81878
|
PR ada/81878
|
||||||
|
32
gnattools/configure
vendored
32
gnattools/configure
vendored
@ -584,6 +584,7 @@ PACKAGE_URL=
|
|||||||
ac_unique_file="Makefile.in"
|
ac_unique_file="Makefile.in"
|
||||||
ac_subst_vars='LTLIBOBJS
|
ac_subst_vars='LTLIBOBJS
|
||||||
LIBOBJS
|
LIBOBJS
|
||||||
|
default_gnattools_target
|
||||||
warn_cflags
|
warn_cflags
|
||||||
OBJEXT
|
OBJEXT
|
||||||
EXEEXT
|
EXEEXT
|
||||||
@ -595,7 +596,6 @@ CC
|
|||||||
ADA_CFLAGS
|
ADA_CFLAGS
|
||||||
EXTRA_GNATTOOLS
|
EXTRA_GNATTOOLS
|
||||||
TOOLS_TARGET_PAIRS
|
TOOLS_TARGET_PAIRS
|
||||||
default_gnattools_target
|
|
||||||
LN_S
|
LN_S
|
||||||
target_noncanonical
|
target_noncanonical
|
||||||
host_noncanonical
|
host_noncanonical
|
||||||
@ -2050,15 +2050,6 @@ $as_echo "no, using $LN_S" >&6; }
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Determine what to build for 'gnattools'
|
|
||||||
if test $build = $target ; then
|
|
||||||
# Note that build=target is almost certainly the wrong test; FIXME
|
|
||||||
default_gnattools_target="gnattools-native"
|
|
||||||
else
|
|
||||||
default_gnattools_target="gnattools-cross"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Target-specific stuff (defaults)
|
# Target-specific stuff (defaults)
|
||||||
TOOLS_TARGET_PAIRS=
|
TOOLS_TARGET_PAIRS=
|
||||||
|
|
||||||
@ -2134,6 +2125,8 @@ esac
|
|||||||
# From user or toplevel makefile.
|
# From user or toplevel makefile.
|
||||||
|
|
||||||
|
|
||||||
|
# This is testing the CC passed from the toplevel Makefile, not the
|
||||||
|
# one we will select below.
|
||||||
ac_ext=c
|
ac_ext=c
|
||||||
ac_cpp='$CPP $CPPFLAGS'
|
ac_cpp='$CPP $CPPFLAGS'
|
||||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||||
@ -2929,6 +2922,25 @@ if test "x$GCC" = "xyes"; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Determine what to build for 'gnattools'. Test after the above,
|
||||||
|
# because testing for CC sets the final value of cross_compiling, even
|
||||||
|
# if we end up using a different CC. We want to build
|
||||||
|
# gnattools-native when: (a) this is a native build, i.e.,
|
||||||
|
# cross_compiling=no, otherwise we know we cannot run binaries
|
||||||
|
# produced by the toolchain used for the build, not even the binaries
|
||||||
|
# created within ../gcc/; (b) build and host are the same, otherwise
|
||||||
|
# this is to be regarded as a cross build environment even if it seems
|
||||||
|
# that we can run host binaries; (c) host and target are the same,
|
||||||
|
# otherwise the tools in ../gcc/ generate code for a different
|
||||||
|
# platform. If you change this test, be sure to adjust
|
||||||
|
# ../gcc/ada/gcc-interface/config-lang.in as well.
|
||||||
|
if test "x$cross_compiling/$build/$host" = "xno/$host/$target" ; then
|
||||||
|
default_gnattools_target="gnattools-native"
|
||||||
|
else
|
||||||
|
default_gnattools_target="gnattools-cross"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Output: create a Makefile.
|
# Output: create a Makefile.
|
||||||
ac_config_files="$ac_config_files Makefile"
|
ac_config_files="$ac_config_files Makefile"
|
||||||
|
|
||||||
|
@ -51,15 +51,6 @@ ACX_NONCANONICAL_TARGET
|
|||||||
# Need to pass this down for now :-P
|
# Need to pass this down for now :-P
|
||||||
AC_PROG_LN_S
|
AC_PROG_LN_S
|
||||||
|
|
||||||
# Determine what to build for 'gnattools'
|
|
||||||
if test $build = $target ; then
|
|
||||||
# Note that build=target is almost certainly the wrong test; FIXME
|
|
||||||
default_gnattools_target="gnattools-native"
|
|
||||||
else
|
|
||||||
default_gnattools_target="gnattools-cross"
|
|
||||||
fi
|
|
||||||
AC_SUBST([default_gnattools_target])
|
|
||||||
|
|
||||||
# Target-specific stuff (defaults)
|
# Target-specific stuff (defaults)
|
||||||
TOOLS_TARGET_PAIRS=
|
TOOLS_TARGET_PAIRS=
|
||||||
AC_SUBST(TOOLS_TARGET_PAIRS)
|
AC_SUBST(TOOLS_TARGET_PAIRS)
|
||||||
@ -135,6 +126,8 @@ esac
|
|||||||
# From user or toplevel makefile.
|
# From user or toplevel makefile.
|
||||||
AC_SUBST(ADA_CFLAGS)
|
AC_SUBST(ADA_CFLAGS)
|
||||||
|
|
||||||
|
# This is testing the CC passed from the toplevel Makefile, not the
|
||||||
|
# one we will select below.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
warn_cflags=
|
warn_cflags=
|
||||||
if test "x$GCC" = "xyes"; then
|
if test "x$GCC" = "xyes"; then
|
||||||
@ -142,6 +135,25 @@ if test "x$GCC" = "xyes"; then
|
|||||||
fi
|
fi
|
||||||
AC_SUBST(warn_cflags)
|
AC_SUBST(warn_cflags)
|
||||||
|
|
||||||
|
# Determine what to build for 'gnattools'. Test after the above,
|
||||||
|
# because testing for CC sets the final value of cross_compiling, even
|
||||||
|
# if we end up using a different CC. We want to build
|
||||||
|
# gnattools-native when: (a) this is a native build, i.e.,
|
||||||
|
# cross_compiling=no, otherwise we know we cannot run binaries
|
||||||
|
# produced by the toolchain used for the build, not even the binaries
|
||||||
|
# created within ../gcc/; (b) build and host are the same, otherwise
|
||||||
|
# this is to be regarded as a cross build environment even if it seems
|
||||||
|
# that we can run host binaries; (c) host and target are the same,
|
||||||
|
# otherwise the tools in ../gcc/ generate code for a different
|
||||||
|
# platform. If you change this test, be sure to adjust
|
||||||
|
# ../gcc/ada/gcc-interface/config-lang.in as well.
|
||||||
|
if test "x$cross_compiling/$build/$host" = "xno/$host/$target" ; then
|
||||||
|
default_gnattools_target="gnattools-native"
|
||||||
|
else
|
||||||
|
default_gnattools_target="gnattools-cross"
|
||||||
|
fi
|
||||||
|
AC_SUBST([default_gnattools_target])
|
||||||
|
|
||||||
# Output: create a Makefile.
|
# Output: create a Makefile.
|
||||||
AC_CONFIG_FILES([Makefile])
|
AC_CONFIG_FILES([Makefile])
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user