diff options
author | Sam James <sam@gentoo.org> | 2024-11-18 07:17:08 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-11-22 19:05:34 +0000 |
commit | 987db70acefd0b223a8df2240d4e5ca544cc0a91 (patch) | |
tree | 88c5adb259a64d5834576793f4a00233206da497 /configure.ac | |
parent | 372d0a4c9655127da2677dabf70e8e51de24c382 (diff) | |
download | binutils-987db70acefd0b223a8df2240d4e5ca544cc0a91.zip binutils-987db70acefd0b223a8df2240d4e5ca544cc0a91.tar.gz binutils-987db70acefd0b223a8df2240d4e5ca544cc0a91.tar.bz2 |
Sync toplevel configure with GCC
This syncs us with GCC as of r15-5590-gf34422e06c38eb.
Some changes will need to be propagated to the GCC side (so I've kept those
and not clobbered them) which I will handle shortly.
Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 132 |
1 files changed, 124 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac index 5cd262e..b31f0ea 100644 --- a/configure.ac +++ b/configure.ac @@ -365,7 +365,7 @@ case "${ENABLE_GOLD}" in # Check for target supported by gold. case "${target}" in i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \ - | aarch64*-*-* | tilegx*-*-* | mips*-*-* | s390*-*-* | loongarch*-*-*) + | aarch64*-*-* | tilegx*-*-* | mips*-*-* | s390*-*-*) configdirs="$configdirs gold" if test x${ENABLE_GOLD} = xdefault; then default_ld=gold @@ -1432,6 +1432,7 @@ fi ACX_PROG_GNAT ACX_PROG_GDC +ACX_PROG_CARGO ACX_PROG_CMP_IGNORE_INITIAL AC_ARG_ENABLE([bootstrap], @@ -1477,16 +1478,16 @@ case "$have_compiler:$host:$target:$enable_bootstrap" in ;; esac -# When bootstrapping with GCC, build stage 1 in C++11 mode to ensure that a -# C++11 compiler can still start the bootstrap. Otherwise, if building GCC, -# require C++11 (or higher). +# When bootstrapping with GCC, build stage 1 in C++14 mode to ensure that a +# C++14 compiler can still start the bootstrap. Otherwise, if building GCC, +# require C++14 (or higher). if test "$enable_bootstrap:$GXX" = "yes:yes"; then - CXX="$CXX -std=c++11" + CXX="$CXX -std=c++14" elif test "$have_compiler" = yes; then - AX_CXX_COMPILE_STDCXX(11) + AX_CXX_COMPILE_STDCXX(14) if test "${build}" != "${host}"; then - AX_CXX_COMPILE_STDCXX(11, [], [], [_FOR_BUILD]) + AX_CXX_COMPILE_STDCXX(14, [], [], [_FOR_BUILD]) fi fi @@ -2057,6 +2058,64 @@ fi AC_SUBST(PICFLAG) + +# Check for libdiagnostics support. +AC_MSG_CHECKING([whether to enable libdiagnostics]) +AC_ARG_ENABLE(libdiagnostics, +[AS_HELP_STRING([--enable-libdiagnostics], + [build libdiagnostics shared library])], +enable_libdiagnostics=$enableval, +enable_libdiagnostics=no) + +if test x$enable_libdiagnostics = xyes; then + # Disable libdiagnostics if -enable-host-shared not specified + # but not if building for Mingw. All code in Windows + # is position independent code (PIC). + case $target in + *mingw*) ;; + *) + if test x$host_shared != xyes; then + AC_MSG_ERROR([ +Enabling libdiagnostics requires --enable-host-shared. + +--enable-host-shared typically slows the rest of the compiler down by +a few %, so you must explicitly enable it. + +If you want to build both libdiagnostics and the regular compiler, it is often +best to do this via two separate configure/builds, in separate +directories, to avoid imposing the performance cost of +--enable-host-shared on the regular compiler.]) + fi + ;; + esac +fi +AC_MSG_RESULT($enable_libdiagnostics) +AC_SUBST(enable_libdiagnostics) + + +# Rust requires -ldl and -lpthread if you are using an old glibc that does not include them by +# default, so we check for them here +# We are doing the test here and not in the gcc/configure to be able to nicely disable the +# build of the Rust frontend in case a dep is missing. +missing_rust_dynlibs=none + +save_LIBS="$LIBS" +LIBS= +AC_SEARCH_LIBS([dlopen], [dl]) +AC_SEARCH_LIBS([pthread_create], [pthread]) +CRAB1_LIBS="$LIBS" +LIBS="$save_LIBS" + +if test "$ac_cv_search_dlopen" = no; then + missing_rust_dynlibs="libdl" +fi + +if test "$ac_cv_search_pthread_create" = no; then + missing_rust_dynlibs="$missing_rust_dynlibs, libpthread" +fi + +AC_SUBST(CRAB1_LIBS, "$CRAB1_LIBS") + # If we are building PIC/PIE host executables, and we are building dependent # libs (e.g. GMP) in-tree those libs need to be configured to generate PIC # code. @@ -2133,7 +2192,7 @@ if test -d ${srcdir}/gcc; then lang_requires_boot_languages= # set srcdir during sourcing lang_frag to the gcc dir. # Sadly overriding srcdir on the . line doesn't work in plain sh as it - # polutes this shell + # pollutes this shell saved_srcdir=${srcdir} srcdir=${srcdir}/gcc . ${lang_frag} srcdir=${saved_srcdir} @@ -2294,6 +2353,25 @@ if test -d ${srcdir}/gcc; then ;; esac + # Disable Rust if we are missing some required C libraries for the Rust runtime. + case ${add_this_lang}:${language}:${missing_rust_dynlibs} in + *:rust:none) + # Nothing to do - we're not missing any C libraries + ;; + yes:rust:*) + AC_MSG_ERROR([some C libraries are required to build $language: $missing_rust_dynlibs]) + add_this_lang=unsupported + ;; + all:rust:*) + AC_MSG_WARN([some C libraries are required to build $language: $missing_rust_dynlibs]) + add_this_lang=unsupported + ;; + *:rust:*) + # Silently disable. + add_this_lang=unsupported + ;; + esac + # Disable jit if -enable-host-shared not specified # but not if building for Mingw. All code in Windows # is position independent code (PIC). @@ -2326,6 +2404,35 @@ directories, to avoid imposing the performance cost of ;; esac + # Pre-conditions to consider whether cargo being supported. + if test x"$have_cargo" = xyes \ + && test x"$build" != x"$host"; then + # Until <https://github.com/Rust-GCC/gccrs/issues/2898> + # "'cargo' should build for the host system" is resolved: + AC_MSG_WARN([use of cargo not yet supported here in Canadian cross configurations]) + have_cargo=no + else + # Assume that cargo-produced object files are compatible with what + # we're going to build here. + : + fi + # Disable Rust if cargo is unavailable. + case ${add_this_lang}:${language}:${have_cargo} in + yes:rust:no) + # Specifically requested language; tell them. + AC_MSG_ERROR([cargo is required to build $language]) + ;; + all:rust:no) + AC_MSG_WARN([cargo is required to build $language]) + add_this_lang=unsupported + ;; + *:rust:no) + # Silently disable. + add_this_lang=unsupported + ;; + esac + + # Disable a language that is unsupported by the target. case "${add_this_lang}: $unsupported_languages " in no:*) ;; @@ -3141,6 +3248,15 @@ case "$enable_bootstrap:$ENABLE_GOLD: $configdirs :,$stage1_languages," in ;; esac +# Bootstrapping GCC requires libstdc++-v3 so error out if libstdc++ is disabled with bootstrapping +# Note C++ is always enabled for stage1 now. +case "$enable_bootstrap:${noconfigdirs}" in + yes:*target-libstdc++-v3*) + AC_MSG_ERROR([bootstrapping with --disable-libstdcxx is not supported]) + ;; +esac + + extrasub_build= for module in ${build_configdirs} ; do if test -z "${no_recursion}" \ |