X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fgcc.git;a=blobdiff_plain;f=configure.ac;h=1fe97c001cc459f972b9248fbf7285a9c8cbc155;hp=12f85cc25fadbee820219d59513da160a8f0cd09;hb=HEAD;hpb=2fdf75cb70d6bedd855205d6b05bbf6afac46730 diff --git a/configure.ac b/configure.ac index 12f85cc25fad..042681c27be5 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, # 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, -# 2014, 2015, 2016, 2019 Free Software Foundation, Inc. +# 2014, 2015, 2016, 2019, 2022 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ m4_include(config/override.m4) m4_include(config/proginstall.m4) m4_include(config/elf.m4) m4_include(config/ax_cxx_compile_stdcxx.m4) +m4_include(config/gcc-plugin.m4) m4_include([libtool.m4]) m4_include([ltoptions.m4]) m4_include([ltsugar.m4]) @@ -132,7 +133,7 @@ build_tools="build-texinfo build-flex build-bison build-m4 build-fixincludes" # these libraries are used by various programs built for the host environment #f -host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl libelf libiconv libctf" +host_libs="gettext libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libiconv libctf libsframe libgrust " # these tools are built for the host environment # Note, the powerpc-eabi build depends on sim occurring before gdb in order to @@ -140,7 +141,7 @@ host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktr # binutils, gas and ld appear in that order because it makes sense to run # "make check" in that particular order. # If --enable-gold is used, "gold" may replace "ld". -host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools" +host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gm2tools gotools c++tools" # these libraries are built for the target environment, and are built after # the host libraries and the host tools (which may be a cross compiler) @@ -150,8 +151,6 @@ target_libraries="target-libgcc \ target-libgloss \ target-newlib \ target-libgomp \ - target-liboffloadmic \ - target-libhsail-rt \ target-libatomic \ target-libitm \ target-libstdc++-v3 \ @@ -163,7 +162,9 @@ target_libraries="target-libgcc \ target-libffi \ target-libobjc \ target-libada \ + target-libgm2 \ target-libgo \ + target-libgrust \ target-libphobos \ target-zlib" @@ -248,6 +249,15 @@ if test x$with_system_zlib = xyes ; then noconfigdirs="$noconfigdirs zlib" fi +# Don't compile the bundled readline/libreadline.a if --with-system-readline +# is provided. +if test x$with_system_readline = xyes ; then + noconfigdirs="$noconfigdirs readline" +fi + +AC_ARG_WITH(zstd, +[AS_HELP_STRING([--with-zstd], [Support zstd compressed debug sections (default=auto)])]) + # some tools are so dependent upon X11 that if we're not building with X, # it's not even worth trying to configure, much less build, that tool. @@ -300,6 +310,14 @@ AC_ARG_ENABLE(offload-targets, fi ], [enable_offload_targets=]) +AC_ARG_ENABLE(offload-defaulted, +[AS_HELP_STRING([--enable-offload-defaulted] + [If enabled, configured but not installed offload compilers and + libgomp plugins are silently ignored. Useful for distribution + compilers where those are in separate optional packages.])], +[enable_offload_defaulted=$enableval], +[enable_offload_defaulted=]) + # Handle --enable-gold, --enable-ld. # --disable-gold [--enable-ld] # Build only ld. Default option. @@ -332,7 +350,7 @@ case "${ENABLE_GOLD}" in *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ | *-*-linux* | *-*-gnu* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* \ - | *-*-solaris2* | *-*-nto* | *-*-nacl*) + | *-*-solaris2* | *-*-nto* | *-*-nacl* | *-*-haiku*) case "${target}" in *-*-linux*aout* | *-*-linux*oldld*) ;; @@ -388,6 +406,20 @@ case "${ENABLE_LD}" in ;; esac +AC_ARG_ENABLE(gprofng, +[AS_HELP_STRING([[--enable-gprofng[=ARG]]], + [build gprofng @<:@ARG={yes,no}@:>@])], +enable_gprofng=$enableval, +enable_gprofng=yes) +if test "$enable_gprofng" = "yes"; then + case "${target}" in + x86_64-*-linux* | i?86-*-linux* | aarch64-*-linux*) + configdirs="$configdirs gprofng" + ;; + esac +fi + + # PR gas/19109 # Decide the default method for compressing debug sections. # Provide a configure time option to override our default. @@ -401,6 +433,12 @@ AC_ARG_ENABLE(compressed_debug_sections, fi ], [enable_compressed_debug_sections=]) +# Select default compression algorithm. +AC_ARG_ENABLE(default_compressed_debug_sections_algorithm, +[AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}], + [Default compression algorithm for --enable-compressed-debug-sections.])], +[], [default_compressed_debug_sections_algorithm=]) + # Configure extra directories which are host specific case "${host}" in @@ -422,6 +460,18 @@ case "${host}" in ;; esac +# Default to --disable-year2038 until we can handle differences between +# projects that use gnulib (which understands year 2038) and projects that +# do not (like BFD). +AC_ARG_ENABLE(year2038, +AS_HELP_STRING([--enable-year2038], + [enable support for timestamps past the year 2038]), +ENABLE_YEAR2038=$enableval, +ENABLE_YEAR2038=no) +enable_year2038= +if test "${ENABLE_YEAR2038}" = "no" ; then + enable_year2038=no +fi AC_ARG_ENABLE(libquadmath, AS_HELP_STRING([--disable-libquadmath], @@ -452,6 +502,14 @@ if test "${ENABLE_LIBADA}" != "yes" ; then noconfigdirs="$noconfigdirs gnattools" fi +AC_ARG_ENABLE(libgm2, +[AS_HELP_STRING([--enable-libgm2], [build libgm2 directory])], +ENABLE_LIBGM2=$enableval, +ENABLE_LIBGM2=no) +if test "${ENABLE_LIBGM2}" != "yes" ; then + noconfigdirs="$noconfigdirs gm2tools" +fi + AC_ARG_ENABLE(libssp, [AS_HELP_STRING([--enable-libssp], [build libssp directory])], ENABLE_LIBSSP=$enableval, @@ -466,42 +524,6 @@ ENABLE_LIBSTDCXX=default) noconfigdirs="$noconfigdirs target-libstdc++-v3" fi] -# If this is accelerator compiler and its target is intelmic we enable -# target liboffloadmic by default. If this is compiler with offloading -# for intelmic we enable host liboffloadmic by default. Otherwise -# liboffloadmic is disabled by default. -AC_ARG_ENABLE([liboffloadmic], -AC_HELP_STRING([[--enable-liboffloadmic[=ARG]]], - [build liboffloadmic @<:@ARG={no,host,target}@:>@]), -[case "$enableval" in - no | host | target) - enable_liboffloadmic=$enableval ;; - *) - AC_MSG_ERROR([--enable-liboffloadmic=no/host/target]) ;; -esac], -[if test x"$enable_as_accelerator_for" != x; then - case "${target}" in - *-intelmic-* | *-intelmicemul-*) - enable_liboffloadmic=target - extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target" - ;; - *) - enable_liboffloadmic=no - ;; - esac -else - case "${enable_offload_targets}" in - *-intelmic-* | *-intelmicemul-*) - enable_liboffloadmic=host - extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host" - ;; - *) - enable_liboffloadmic=no - ;; - esac -fi]) -AC_SUBST(extra_liboffloadmic_configure_flags) - # Enable libgomp by default on hosted POSIX systems, and a few others. if test x$enable_libgomp = x ; then case "${target}" in @@ -537,22 +559,6 @@ if test -d ${srcdir}/libatomic; then fi fi -# Disable liboffloadmic on unsupported systems. -if test -d ${srcdir}/liboffloadmic; then - if test x$enable_liboffloadmic != xno; then - AC_MSG_CHECKING([for liboffloadmic support]) - if (srcdir=${srcdir}/liboffloadmic; \ - . ${srcdir}/configure.tgt; \ - test -n "$UNSUPPORTED") - then - AC_MSG_RESULT([no]) - noconfigdirs="$noconfigdirs target-liboffloadmic" - else - AC_MSG_RESULT([yes]) - fi - fi -fi - # Disable libitm on unsupported systems. if test -d ${srcdir}/libitm; then if test x$enable_libitm = x; then @@ -601,26 +607,6 @@ if test -d ${srcdir}/libvtv; then fi fi - -# Disable libhsail-rt on unsupported systems. -if test -d ${srcdir}/libhsail-rt; then - if test x$enable_libhsail_rt = x; then - AC_MSG_CHECKING([for libhsail-rt support]) - if (srcdir=${srcdir}/libhsail-rt; \ - . ${srcdir}/configure.tgt; \ - test -n "$UNSUPPORTED") - then - AC_MSG_RESULT([no]) - unsupported_languages="$unsupported_languages brig" - # This implicitly disables also target-libhsail-rt as it won't - # get added to the build without BRIG FE. - else - AC_MSG_RESULT([yes]) - fi - fi -fi - - # Disable libquadmath for some systems. case "${target}" in avr-*-*) @@ -662,7 +648,7 @@ case "${target}" in esac # Disable libstdc++-v3 for some systems. -# Allow user to override this if they pass --enable-libstdc++-v3 +# Allow user to override this if they pass --enable-libstdcxx if test "${ENABLE_LIBSTDCXX}" = "default" ; then case "${target}" in *-*-vxworks*) @@ -912,6 +898,9 @@ case "${target}" in i[[3456789]]86-*-*) libgloss_dir=i386 ;; + loongarch*-*-*) + libgloss_dir=loongarch + ;; m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) libgloss_dir=m68hc11 ;; @@ -1034,7 +1023,7 @@ case "${target}" in *-*-dragonfly*) ;; *-*-freebsd*) - if test "x$with_gmp" = x && test "x$with_gmp_dir" = x \ + if test "x$with_gmp" = x \ && ! test -d ${srcdir}/gmp \ && test -f /usr/local/include/gmp.h; then with_gmp=/usr/local @@ -1296,6 +1285,11 @@ case "${target}" in wasm32-*-*) noconfigdirs="$noconfigdirs ld" ;; + loongarch*-*-linux*) + ;; + loongarch*-*-*) + noconfigdirs="$noconfigdirs gprof" + ;; esac # If we aren't building newlib, then don't build libgloss, since libgloss @@ -1322,16 +1316,13 @@ case "${host}" in alpha*-linux*) host_makefile_frag="config/mh-alpha-linux" ;; - hppa*-hp-hpux10*) - host_makefile_frag="config/mh-pa-hpux10" - ;; hppa*-hp-hpux*) host_makefile_frag="config/mh-pa" ;; hppa*-*) host_makefile_frag="config/mh-pa" ;; - *-*-darwin*) + i?86-*-darwin[[89]]* | i?86-*-darwin1[[0-7]]* | powerpc*-*-darwin*) host_makefile_frag="config/mh-darwin" ;; powerpc-*-aix*) @@ -1347,7 +1338,9 @@ if test "${build}" != "${host}" ; then AR_FOR_BUILD=${AR_FOR_BUILD-ar} AS_FOR_BUILD=${AS_FOR_BUILD-as} CC_FOR_BUILD=${CC_FOR_BUILD-gcc} + CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CC_FOR_BUILD) -E}" CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} + DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} @@ -1362,6 +1355,7 @@ else AS_FOR_BUILD="\$(AS)" CC_FOR_BUILD="\$(CC)" CXX_FOR_BUILD="\$(CXX)" + DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" GFORTRAN_FOR_BUILD="\$(GFORTRAN)" GOC_FOR_BUILD="\$(GOC)" GDC_FOR_BUILD="\$(GDC)" @@ -1373,7 +1367,7 @@ else WINDMC_FOR_BUILD="\$(WINDMC)" fi -AC_PROG_CC +AC_PROG_CC_C99 AC_PROG_CXX # We must set the default linker to the linker used by gcc for the correct @@ -1416,6 +1410,8 @@ int main() {}])], fi ACX_PROG_GNAT +ACX_PROG_GDC +ACX_PROG_CARGO ACX_PROG_CMP_IGNORE_INITIAL AC_ARG_ENABLE([bootstrap], @@ -1474,11 +1470,85 @@ elif test "$have_compiler" = yes; then fi fi +AC_ARG_ENABLE([pgo-build], +[AS_HELP_STRING([--enable-pgo-build[[=lto]]], + [enable the PGO build])], +[enable_pgo_build=$enableval], +[enable_pgo_build=no]) + +# Issue errors and warnings for invalid/strange PGO build combinations. +case "$have_compiler:$host:$target:$enable_pgo_build" in + *:*:*:no) ;; + + # Allow the PGO build only if we aren't building a compiler and + # we are in a native configuration. + no:$build:$build:yes | no:$build:$build:lto) ;; + + # Disallow the PGO bootstrap if we are building a compiler. + yes:*:*:yes | yes:*:*:lto) + AC_MSG_ERROR([cannot perform the PGO bootstrap when building a compiler]) ;; + + *) + AC_MSG_ERROR([invalid option for --enable-pgo-build]) + ;; +esac + +if test "$enable_pgo_build" != "no"; then + AC_MSG_CHECKING([whether the compiler supports -fprofile-generate]) + old_CFLAGS="$CFLAGS" + PGO_BUILD_GEN_CFLAGS="-fprofile-generate" + CFLAGS="$CFLAGS $PGO_BUILD_CFLAGS" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo;])],, + [PGO_BUILD_GEN_CFLAGS=]) + CFLAGS="$old_CFLAGS" + if test -n "$PGO_BUILD_GEN_CFLAGS"; then + AC_MSG_RESULT([yes]) + PGO_BUILD_USE_CFLAGS="-fprofile-use" + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([cannot perform the PGO build without -fprofile-generate]) + fi + + if test "$enable_pgo_build" = "lto"; then + AC_MSG_CHECKING([whether the compiler supports -flto=jobserver -ffat-lto-objects]) + old_CFLAGS="$CFLAGS" + PGO_BUILD_LTO_CFLAGS="-flto=jobserver -ffat-lto-objects" + CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo;])],, + [PGO_BUILD_LTO_CFLAGS=]) + CFLAGS="$old_CFLAGS" + if test -n "$PGO_BUILD_LTO_CFLAGS"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_WARN([LTO is disabled for the PGO build]) + fi + fi +fi +AC_SUBST(PGO_BUILD_GEN_CFLAGS) +AC_SUBST(PGO_BUILD_USE_CFLAGS) +AC_SUBST(PGO_BUILD_LTO_CFLAGS) + # Used for setting $lt_cv_objdir _LT_CHECK_OBJDIR # Check for GMP, MPFR and MPC -gmplibs="-lmpc -lmpfr -lgmp" +require_gmp=no +require_mpc=no +if test -d ${srcdir}/gcc ; then + require_gmp=yes + require_mpc=yes +fi +if test -d ${srcdir}/gdb ; then + if test "x$enable_gdb" != xno; then + require_gmp=yes + fi +fi + +gmplibs="-lmpfr -lgmp" +if test x"$require_mpc" = "xyes" ; then + gmplibs="-lmpc $gmplibs" +fi gmpinc= have_gmp=no @@ -1518,11 +1588,6 @@ fi # Specify a location for mpfr # check for this first so it ends up on the link line before gmp. -AC_ARG_WITH(mpfr-dir, -[AS_HELP_STRING([--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])]) - AC_ARG_WITH(mpfr, [AS_HELP_STRING([--with-mpfr=PATH], [specify prefix directory for installed MPFR package. @@ -1562,11 +1627,6 @@ Building GCC with MPFR in the source tree is only handled for MPFR 3.1.0+.]) fi # Specify a location for gmp -AC_ARG_WITH(gmp-dir, -[AS_HELP_STRING([--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])]) - AC_ARG_WITH(gmp, [AS_HELP_STRING([--with-gmp=PATH], [specify prefix directory for the installed GMP package. @@ -1603,7 +1663,7 @@ if test "x$with_gmp$with_gmp_include$with_gmp_lib" = x && test -d ${srcdir}/gmp; have_gmp=yes fi -if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then +if test "x$require_gmp" = xyes && test "x$have_gmp" = xno; then have_gmp=yes saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $gmpinc" @@ -1643,7 +1703,7 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then fi # Check for the MPC header version. - if test x"$have_gmp" = xyes ; then + if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes ; then # Check for the recommended and required versions of MPC. AC_MSG_CHECKING([for the correct version of mpc.h]) AC_TRY_COMPILE([#include ],[ @@ -1662,11 +1722,10 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then if test x"$have_gmp" = xyes; then saved_LIBS="$LIBS" LIBS="$LIBS $gmplibs" - AC_MSG_CHECKING([for the correct version of the gmp/mpfr/mpc libraries]) - AC_TRY_LINK([#include ],[ + AC_MSG_CHECKING([for the correct version of the gmp/mpfr libraries]) + AC_TRY_LINK([#include ],[ mpfr_t n; mpfr_t x; - mpc_t c; int t; mpfr_init (n); mpfr_init (x); @@ -1675,6 +1734,17 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then mpfr_subnormalize (x, t, MPFR_RNDN); mpfr_clear(n); mpfr_clear(x); + ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no]) + LIBS="$saved_LIBS" + fi + + # Now check the MPC library + if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes; then + saved_LIBS="$LIBS" + LIBS="$LIBS $gmplibs" + AC_MSG_CHECKING([for the correct version of the mpc libraries]) + AC_TRY_LINK([#include ],[ + mpc_t c; mpc_init2 (c, 53); mpc_set_ui_ui (c, 1, 1, MPC_RNDNN); mpc_cosh (c, c, MPC_RNDNN); @@ -1690,7 +1760,8 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then # The library versions listed in the error message below should match # the HARD-minimums enforced above. if test x$have_gmp != xyes; then - AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+. + if test -d ${srcdir}/gcc ; then + AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+. Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify their locations. Source code for these libraries can be found at their respective hosting sites as well as at @@ -1699,6 +1770,13 @@ http://gcc.gnu.org/install/prerequisites.html for additional info. If you obtained GMP, MPFR and/or MPC 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.]) + else + AC_MSG_ERROR([Building GDB requires GMP 4.2+, and MPFR 3.1.0+. +Try the --with-gmp and/or --with-mpfr options to specify +their locations. 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 fi fi @@ -1779,6 +1857,20 @@ AC_ARG_WITH(boot-ldflags, if test "$poststage1_libs" = ""; then poststage1_ldflags="-static-libstdc++ -static-libgcc" fi]) +case $target in + *-darwin2* | *-darwin1[[56789]]*) + # For these versions, we default to using embedded rpaths. + if test "x$enable_darwin_at_rpath" != "xno"; then + poststage1_ldflags="$poststage1_ldflags -nodefaultrpaths" + fi + ;; + *-darwin*) + # For these versions, we only use embedded rpaths on demand. + if test "x$enable_darwin_at_rpath" = "xyes"; then + poststage1_ldflags="$poststage1_ldflags -nodefaultrpaths" + fi + ;; +esac AC_SUBST(poststage1_ldflags) # GCC GRAPHITE dependency isl. @@ -1864,14 +1956,96 @@ AC_ARG_ENABLE(linker-plugin-flags, extra_linker_plugin_flags=) AC_SUBST(extra_linker_plugin_flags) +# Handle --enable-host-pie +# If host PIE executables are the default (or must be forced on) for some host, +# we must pass that configuration to the gcc directory. +gcc_host_pie= +AC_ARG_ENABLE(host-pie, +[AS_HELP_STRING([--enable-host-pie], + [build position independent host executables])], +[host_pie=$enableval + case $host in + *-*-darwin2*) + if test x$host_pie != xyes ; then + # for Darwin20+ this is required. + AC_MSG_WARN([PIE executables are required for the configured host, host-pie setting ignored.]) + host_pie=yes + gcc_host_pie=--enable-host-pie + fi ;; + *) ;; + esac], +[case $host in + *-*-darwin2*) + # Default to PIE (mandatory for aarch64). + host_pie=yes + gcc_host_pie=--enable-host-pie + ;; + *) host_pie=no ;; + esac]) + +AC_SUBST(host_pie) +AC_SUBST(gcc_host_pie) + # Enable --enable-host-shared. # Checked early to determine whether jit is an 'all' language AC_ARG_ENABLE(host-shared, [AS_HELP_STRING([--enable-host-shared], [build host code as shared libraries])], -[host_shared=$enableval], [host_shared=no]) +[host_shared=$enableval + case $host in + x86_64-*-darwin* | aarch64-*-darwin*) + if test x$host_shared != xyes ; then + # PIC is the default, and actually cannot be switched off. + AC_MSG_WARN([PIC code is required for the configured host; host-shared setting ignored.]) + host_shared=yes + fi ;; + *-*-darwin*) + if test x$host_pie = xyes -a x$host_shared != xyes ; then + AC_MSG_WARN([PIC code is required for PIE host executables host-shared setting ignored.]) + host_shared=yes + fi ;; + *) ;; + esac], +[case $host in + # 64B x86_64 and Aarch64 Darwin default to PIC. + x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;; + # 32B and powerpc64 Darwin must use PIC to link PIE exes. + *-*-darwin*) host_shared=$host_pie ;; + *) host_shared=no;; + esac]) + AC_SUBST(host_shared) +if test x$host_shared = xyes; then + case $host in + *-*-darwin*) + # Since host shared is the default for 64b Darwin, and also enabled for + # host_pie, ensure that we present the PIE flag when host_pie is active. + if test x$host_pie = xyes; then + PICFLAG=-fPIE + fi + ;; + *) + PICFLAG=-fPIC + ;; + esac +elif test x$host_pie = xyes; then + PICFLAG=-fPIE +else + PICFLAG= +fi + +AC_SUBST(PICFLAG) + +# 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. +host_libs_picflag= +if test "$host_shared" = "yes" -o "$host_pie" = "yes"; then +host_libs_picflag='--with-pic' +fi +AC_SUBST(host_libs_picflag) + # By default, C and C++ are the only stage 1 languages. stage1_languages=,c, @@ -2084,6 +2258,22 @@ if test -d ${srcdir}/gcc; then ;; esac + # Disable D if no preexisting GDC is available. + case ${add_this_lang}:${language}:${have_gdc} in + yes:d:no) + # Specifically requested language; tell them. + AC_MSG_ERROR([GDC is required to build $language]) + ;; + all:d:no) + AC_MSG_WARN([GDC is required to build $language]) + add_this_lang=unsupported + ;; + *:d:no) + # 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). @@ -2116,6 +2306,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 + # "'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:*) ;; @@ -2151,7 +2370,7 @@ directories, to avoid imposing the performance cost of *) stage1_languages="${stage1_languages}${language}," ;; esac # We need to bootstrap any supporting libraries. - bootstrap_target_libs="${bootstrap_target_libs}${target_libs}," + bootstrap_target_libs=`echo "${bootstrap_target_libs}${target_libs}," | sed "s/ /,/g"` ;; esac ;; @@ -2267,7 +2486,7 @@ case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) fi esac -# Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++ +# Disable libitm, libsanitizer, libvtv if we're not building C++ case ,${enable_languages}, in *,c++,*) # Disable libitm, libsanitizer if we're not building libstdc++ @@ -2279,10 +2498,31 @@ case ,${enable_languages}, in esac ;; *) - noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv" + noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv" ;; esac +case ,${enable_languages}, in + *,rust,*) + case " ${noconfigdirs} " in + *\ target-libstdc++-v3\ *) + # Disable target libgrust if we're not building target libstdc++. + noconfigdirs="$noconfigdirs target-libgrust" + ;; + esac + ;; +esac + +# If gcc/ is not in the source tree then we'll not be building a +# target compiler, assume in that case we don't want to build any +# target libraries or tools. +# +# This was added primarily for the benefit for binutils-gdb who reuse +# this configure script, but don't always have target tools available. +if test ! -d ${srcdir}/gcc; then + skipdirs="${skipdirs} ${target_configdirs}" +fi + # Remove the entries in $skipdirs and $noconfigdirs from $configdirs, # $build_configdirs and $target_configdirs. # If we have the source for $noconfigdirs entries, add them to $notsupp. @@ -2368,13 +2608,18 @@ fi # Sometimes we have special requirements for the host libiberty. extra_host_libiberty_configure_flags= -extra_host_zlib_configure_flags= case " $configdirs " in - *" lto-plugin "* | *" libcc1 "*) + *" lto-plugin "* | *" libcc1 "* | *" gdbserver "*) # When these are to be built as shared libraries, the same applies to # libiberty. extra_host_libiberty_configure_flags=--enable-shared ;; +esac +AC_SUBST(extra_host_libiberty_configure_flags) + +# Sometimes we have special requirements for the host zlib. +extra_host_zlib_configure_flags= +case " $configdirs " in *" bfd "*) # When bfd is to be built as a shared library, the same applies to # zlib. @@ -2383,7 +2628,6 @@ case " $configdirs " in fi ;; esac -AC_SUBST(extra_host_libiberty_configure_flags) AC_SUBST(extra_host_zlib_configure_flags) # Produce a warning message for the subdirs we can't configure. @@ -2622,6 +2866,12 @@ case "${target}" in spu-*-*) target_makefile_frag="config/mt-spu" ;; + loongarch*-*linux* | loongarch*-*gnu*) + target_makefile_frag="config/mt-loongarch-gnu" + ;; + loongarch*-*elf*) + target_makefile_frag="config/mt-loongarch-elf" + ;; mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*) target_makefile_frag="config/mt-sde" ;; @@ -2824,6 +3074,16 @@ if echo " ${target_configdirs} " | grep " libvtv " > /dev/null 2>&1 && bootstrap_target_libs=${bootstrap_target_libs}target-libvtv, fi +# If we are building libatomic and the list of enabled languages includes the +# D frontend, bootstrap it. +if echo " ${target_configdirs} " | grep " libatomic " > /dev/null 2>&1; then + case ,${enable_languages}, in + *,d,*) + bootstrap_target_libs=${bootstrap_target_libs}target-libatomic, + ;; + esac +fi + # Determine whether gdb needs tk/tcl or not. # Use 'maybe' since enable_gdbtk might be true even if tk isn't available # and in that case we want gdb to be built without tk. Ugh! @@ -2862,6 +3122,9 @@ case " ${configdirs} " in *\ gdbserver\ *) configdirs="${configdirs} gnulib gdbsupport" ;; + *\ sim\ *) + configdirs="${configdirs} gnulib" + ;; esac # Strip out unwanted targets. @@ -2953,6 +3216,12 @@ extrasub_target="$extrasub_target /^@unless /d /^@endunless /d" +if test "$enable_pgo_build" != "no"; then + extrasub_build="$extrasub_build +/^@if pgo-build\$/d +/^@endif pgo-build\$/d" +fi + # Create the serialization dependencies. This uses a temporary file. AC_ARG_ENABLE([serial-configure], @@ -2972,7 +3241,9 @@ esac # These force 'configure's to be done one at a time, to avoid problems # with contention over a shared config.cache. rm -f serdep.tmp +if test "x${enable_serial_build_configure}" = xyes || test "x${enable_serial_host_configure}" = xyes || test "x${enable_serial_target_configure}" = xyes; then echo '# serdep.tmp' > serdep.tmp +fi olditem= test "x${enable_serial_build_configure}" = xyes && for item in ${build_configdirs} ; do @@ -3010,7 +3281,8 @@ AC_SUBST_FILE(serialization_dependencies) # files altogether, and which should be passed on to subconfigures. # Also strip program-prefix, program-suffix, and program-transform-name, # so that we can pass down a consistent program-transform-name. -baseargs= +hbaseargs= +bbaseargs= tbaseargs= keep_next=no skip_next=no @@ -3026,7 +3298,8 @@ do *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac - baseargs="$baseargs '$ac_arg'" + hbaseargs="$hbaseargs '$ac_arg'" + bbaseargs="$bbaseargs '$ac_arg'" tbaseargs="$tbaseargs '$ac_arg'" keep_next=no continue @@ -3050,6 +3323,7 @@ do esac skip_targ=no + skip_barg=no case $ac_arg in changequote(,) --with-* | --without-*) @@ -3062,6 +3336,12 @@ changequote(,) *[-_]lib) lib=`echo "$libopt" | sed 's,[-_]lib$,,'` ;; + *[-_]prefix) + lib=`echo "$libopt" | sed 's,[-_]prefix$,,'` + ;; + *[-_]type) + lib=`echo "$libopt" | sed 's,[-_]type$,,'` + ;; *) lib=$libopt ;; @@ -3078,6 +3358,11 @@ changequote([,]) skip_targ=yes fi ;; + libintl | libiconv) + # We don't want libintl (and co.) in anything but the host arguments. + skip_targ=yes + skip_barg=yes + ;; esac ;; esac @@ -3086,7 +3371,8 @@ changequote([,]) --cache-file=/dev/null | \ -cache-file=/dev/null ) # Handled here to avoid the test to skip args below. - baseargs="$baseargs '$ac_arg'" + hbaseargs="$hbaseargs '$ac_arg'" + bbaseargs="$bbaseargs '$ac_arg'" tbaseargs="$tbaseargs '$ac_arg'" # Assert: $separate_arg should always be no. keep_next=$separate_arg @@ -3117,7 +3403,10 @@ changequote([,]) *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac - baseargs="$baseargs '$ac_arg'" + hbaseargs="$hbaseargs '$ac_arg'" + if test X"$skip_barg" = Xno; then + bbaseargs="$bbaseargs '$ac_arg'" + fi if test X"$skip_targ" = Xno; then tbaseargs="$tbaseargs '$ac_arg'" fi @@ -3132,7 +3421,8 @@ changequote([,]) done # Remove the initial space we just introduced and, as these will be # expanded by make, quote '$'. -baseargs=`echo "x$baseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'` +hbaseargs=`echo "x$hbaseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'` +bbaseargs=`echo "x$bbaseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'` # Add in --program-transform-name, after --program-prefix and # --program-suffix have been applied to it. Autoconf has already @@ -3146,15 +3436,24 @@ ${program_transform_name} EOF_SED gcc_transform_name=`cat conftestsed.out` rm -f conftestsed.out -baseargs="$baseargs --program-transform-name='${gcc_transform_name}'" +hbaseargs="$hbaseargs --program-transform-name='${gcc_transform_name}'" +bbaseargs="$bbaseargs --program-transform-name='${gcc_transform_name}'" tbaseargs="$tbaseargs --program-transform-name='${gcc_transform_name}'" if test "$silent" = yes; then - baseargs="$baseargs --silent" + bbaseargs="$bbaseargs --silent" + hbaseargs="$hbaseargs --silent" tbaseargs="$tbaseargs --silent" fi -baseargs="$baseargs --disable-option-checking" + +bbaseargs="$bbaseargs --disable-option-checking" +hbaseargs="$hbaseargs --disable-option-checking" tbaseargs="$tbaseargs --disable-option-checking" +if test "$enable_year2038" = no; then + baseargs="$baseargs --disable-year2038" + tbaseargs="$tbaseargs --disable-year2038" +fi + # Record and document user additions to sub configure arguments. AC_ARG_VAR([build_configargs], [additional configure arguments for build directories]) @@ -3168,7 +3467,7 @@ AC_ARG_VAR([target_configargs], # desired. We can't even use the same cache file for all build-side # libraries, as they're compiled differently; some with C, some with # C++ or with different feature-enabling options. -build_configargs="$build_configargs --cache-file=./config.cache ${baseargs}" +build_configargs="$build_configargs --cache-file=./config.cache ${bbaseargs}" # For host modules, accept cache file option, or specification as blank. case "${cache_file}" in @@ -3182,7 +3481,7 @@ esac # Host dirs don't like to share a cache file either, horribly enough. # This seems to be due to autoconf 2.5x stupidity. -host_configargs="$host_configargs --cache-file=./config.cache ${extra_host_args} ${baseargs}" +host_configargs="$host_configargs --cache-file=./config.cache ${extra_host_args} ${hbaseargs}" target_configargs="$target_configargs ${tbaseargs}" @@ -3321,6 +3620,7 @@ esac # our build compiler if desired. if test x"${build}" = x"${host}" ; then CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}} + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}} CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}} LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}} fi @@ -3345,6 +3645,17 @@ case "${target}" in mep*) FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary" ;; + # The VxWorks support for shared libraries is getting in + # incrementally. Make sure it doesn't get activated implicitly: + *vxworks*) + if test "${enable_shared-unset}" = unset ; then + enable_shared=no + # So the build of libraries knows ... + target_configargs="${target_configargs} --disable-shared" + # So gcc knows ... + host_configargs="${host_configargs} --disable-shared" + fi + ;; esac # Makefile fragments. @@ -3387,9 +3698,12 @@ AC_SUBST(AR_FOR_BUILD) AC_SUBST(AS_FOR_BUILD) AC_SUBST(CC_FOR_BUILD) AC_SUBST(CFLAGS_FOR_BUILD) +AC_SUBST(CPP_FOR_BUILD) +AC_SUBST(CPPFLAGS_FOR_BUILD) AC_SUBST(CXXFLAGS_FOR_BUILD) AC_SUBST(CXX_FOR_BUILD) AC_SUBST(DLLTOOL_FOR_BUILD) +AC_SUBST(DSYMUTIL_FOR_BUILD) AC_SUBST(GFORTRAN_FOR_BUILD) AC_SUBST(GOC_FOR_BUILD) AC_SUBST(GDC_FOR_BUILD) @@ -3469,6 +3783,7 @@ esac NCN_STRICT_CHECK_TOOLS(AR, ar) NCN_STRICT_CHECK_TOOLS(AS, as) NCN_STRICT_CHECK_TOOLS(DLLTOOL, dlltool) +NCN_STRICT_CHECK_TOOLS(DSYMUTIL, dsymutil) NCN_STRICT_CHECK_TOOLS(LD, ld) NCN_STRICT_CHECK_TOOLS(LIPO, lipo) NCN_STRICT_CHECK_TOOLS(NM, nm) @@ -3484,6 +3799,24 @@ AC_SUBST(CC) AC_SUBST(CXX) AC_SUBST(CFLAGS) AC_SUBST(CXXFLAGS) +AC_SUBST(GDC) +AC_SUBST(GDCFLAGS) +GDCFLAGS=${GDCFLAGS-${CFLAGS}} +AC_SUBST(PKG_CONFIG_PATH) + +GCC_PLUGIN_OPTION(PLUGIN_OPTION) +AR_PLUGIN_OPTION= +RANLIB_PLUGIN_OPTION= +if test -n "$PLUGIN_OPTION"; then + if $AR --help 2>&1 | grep -q "\--plugin"; then + AR_PLUGIN_OPTION="$PLUGIN_OPTION" + fi + if $RANLIB --help 2>&1 | grep -q "\--plugin"; then + RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION" + fi +fi +AC_SUBST(AR_PLUGIN_OPTION) +AC_SUBST(RANLIB_PLUGIN_OPTION) # Target tools. AC_ARG_WITH([build-time-tools], @@ -3504,10 +3837,12 @@ NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET}) NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran) NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo) NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc) +NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2) ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar) ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as) ACX_CHECK_INSTALLED_TARGET_TOOL(DLLTOOL_FOR_TARGET, dlltool) +ACX_CHECK_INSTALLED_TARGET_TOOL(DSYMUTIL_FOR_TARGET, dsymutil) ACX_CHECK_INSTALLED_TARGET_TOOL(LD_FOR_TARGET, ld) ACX_CHECK_INSTALLED_TARGET_TOOL(LIPO_FOR_TARGET, lipo) ACX_CHECK_INSTALLED_TARGET_TOOL(NM_FOR_TARGET, nm) @@ -3533,6 +3868,7 @@ GCC_TARGET_TOOL(c++ for libstdc++, RAW_CXX_FOR_TARGET, CXX, [gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs], c++) GCC_TARGET_TOOL(dlltool, DLLTOOL_FOR_TARGET, DLLTOOL, [binutils/dlltool]) +GCC_TARGET_TOOL(dsymutil, DSYMUTIL_FOR_TARGET, DSYMUTIL) GCC_TARGET_TOOL(gcc, GCC_FOR_TARGET, , [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/]) GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN, [gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran) @@ -3540,6 +3876,8 @@ GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC, [gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go) GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC, [gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d) +GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2, + [gcc/gm2 -B$$r/$(HOST_SUBDIR)/gcc/], m2) GCC_TARGET_TOOL(ld, LD_FOR_TARGET, LD, [ld/ld-new]) GCC_TARGET_TOOL(lipo, LIPO_FOR_TARGET, LIPO) GCC_TARGET_TOOL(nm, NM_FOR_TARGET, NM, [binutils/nm-new]) @@ -3666,9 +4004,11 @@ AC_SUBST(stage2_werror_flag) # Specify what files to not compare during bootstrap. compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*" +compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/M2Version*" +compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*" +compare_exclusions="$compare_exclusions | gcc/m2/gm2version*" case "$target" in hppa*64*-*-hpux*) ;; - hppa*-*-hpux*) compare_exclusions="$compare_exclusions | */libgcc/lib2funcs* | gcc/function-tests.o" ;; powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;; esac AC_SUBST(compare_exclusions)