# 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, 2020 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
m4_include(config/override.m4)
m4_include(config/proginstall.m4)
m4_include(config/elf.m4)
-m4_include(config/debuginfod.m4)
+m4_include(config/gcc-plugin.m4)
m4_include([libtool.m4])
m4_include([ltoptions.m4])
m4_include([ltsugar.m4])
# 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 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 gotools"
# 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)
arm-wince-pe)
noconfigdirs="$noconfigdirs target-libffi"
;;
- arm*-*-symbianelf*)
- noconfigdirs="$noconfigdirs target-libffi"
- ;;
cris-*-* | crisv32-*-*)
case "${target}" in
*-*-linux*)
;;
esac
+# Only allow gdbserver on some systems.
+if test -d ${srcdir}/gdbserver; then
+ if test x$enable_gdbserver = x; then
+ AC_MSG_CHECKING([for gdbserver support])
+ if (srcdir=${srcdir}/gdbserver; \
+ . ${srcdir}/configure.srv; \
+ test -n "$UNSUPPORTED")
+ then
+ AC_MSG_RESULT([no])
+ noconfigdirs="$noconfigdirs gdbserver"
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ fi
+fi
+
# Disable libgo for some systems where it is known to not work.
# For testing, you can easily override this with --enable-libgo.
if test x$enable_libgo = x; then
noconfigdirs="$noconfigdirs ld gas gdb gprof sim"
noconfigdirs="$noconfigdirs $target_libraries"
;;
+ pdp11-*-*)
+ noconfigdirs="$noconfigdirs gdb gprof"
+ ;;
powerpc-*-aix*)
# copied from rs6000-*-* entry
noconfigdirs="$noconfigdirs gprof"
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
CXX="$CXX -std=gnu++98"
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
gmpinc=
have_gmp=no
-# Check for debuginfod
-AC_DEBUGINFOD
-
# Specify a location for mpc
# check for this first so it ends up on the link line before mpfr.
AC_ARG_WITH(mpc,
CONFIGURE_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-configure-/g`
INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
-# gdb depends on gnulib, but as nothing else does, only include it if
-# gdb is built.
-if echo " ${configdirs} " | grep " gdb " > /dev/null 2>&1 ; then
- # The Makefile provides the ordering, so it's enough here to add
- # gnulib to the list.
- configdirs="${configdirs} gnulib"
-fi
+# gdb and gdbserver depend on gnulib and gdbsupport, but as nothing
+# else does, only include them if one of these is built. The Makefile
+# provides the ordering, so it's enough here to add to the list.
+case " ${configdirs} " in
+ *\ gdb\ *)
+ configdirs="${configdirs} gnulib gdbsupport"
+ ;;
+ *\ gdbserver\ *)
+ configdirs="${configdirs} gnulib gdbsupport"
+ ;;
+esac
# Strip out unwanted targets.
/^@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],
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
+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
+else
+ if test "$enable_pgo_build" != "no"; then
+ AC_MSG_ERROR([AR with --plugin and rc is required for LTO build])
+ fi
+fi
+AC_SUBST(AR_PLUGIN_OPTION)
+AC_SUBST(RANLIB_PLUGIN_OPTION)
+
# Target tools.
AC_ARG_WITH([build-time-tools],
[AS_HELP_STRING([--with-build-time-tools=PATH],