Support the PGO build for binutils+gdb
Add the --enable-pgo-build[=lto] configure option. When binutils+gdb is not built together with GCC, --enable-pgo-build enables the PGO build: 1. First build with -fprofile-generate. 2. Use "make maybe-check-*" to generate profiling data and pass -i to make to ignore errors when generating profiling data. 3. Use "make clean" to remove the previous build. 4. Rebuild with -fprofile-use. With --enable-pgo-build=lto, -flto=jobserver -ffat-lto-objects are used together with -fprofile-generate and -fprofile-use. Add '+' to the command line for recursive make to support -flto=jobserver -ffat-lto-objects. NB: --enable-pgo-build=lto enables the PGO build with LTO while --enable-lto enables LTO support in toolchain. PR binutils/26766 * Makefile.tpl (BUILD_CFLAGS): New. (CFLAGS): Append $(BUILD_CFLAGS). (CXXFLAGS): Likewise. (PGO_BUILD_GEN_FLAGS_TO_PASS): New. (PGO_BUILD_TRAINING_CFLAGS): Likewise. (PGO_BUILD_TRAINING_CXXFLAGS): Likewise. (PGO_BUILD_TRAINING_FLAGS_TO_PASS): Likewise. (PGO_BUILD_TRAINING_MFLAGS): Likewise. (PGO_BUILD_USE_FLAGS_TO_PASS): Likewise. (PGO-TRAINING-TARGETS): Likewise. (PGO_BUILD_TRAINING): Likewise. (all): Add '+' to the command line for recursive make. Support the PGO build. * configure.ac: Add --enable-pgo-build[=lto]. AC_SUBST PGO_BUILD_GEN_CFLAGS, PGO_BUILD_USE_CFLAGS and PGO_BUILD_LTO_CFLAGS. Enable the PGO build in Makefile. * Makefile.in: Regenerated. * configure: Likewise.
This commit is contained in:
parent
a4966cd965
commit
af019bfde9
22
ChangeLog
22
ChangeLog
@ -1,3 +1,25 @@
|
||||
2021-01-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR binutils/26766
|
||||
* Makefile.tpl (BUILD_CFLAGS): New.
|
||||
(CFLAGS): Append $(BUILD_CFLAGS).
|
||||
(CXXFLAGS): Likewise.
|
||||
(PGO_BUILD_GEN_FLAGS_TO_PASS): New.
|
||||
(PGO_BUILD_TRAINING_CFLAGS): Likewise.
|
||||
(PGO_BUILD_TRAINING_CXXFLAGS): Likewise.
|
||||
(PGO_BUILD_TRAINING_FLAGS_TO_PASS): Likewise.
|
||||
(PGO_BUILD_TRAINING_MFLAGS): Likewise.
|
||||
(PGO_BUILD_USE_FLAGS_TO_PASS): Likewise.
|
||||
(PGO-TRAINING-TARGETS): Likewise.
|
||||
(PGO_BUILD_TRAINING): Likewise.
|
||||
(all): Add '+' to the command line for recursive make. Support
|
||||
the PGO build.
|
||||
* configure.ac: Add --enable-pgo-build[=lto].
|
||||
AC_SUBST PGO_BUILD_GEN_CFLAGS, PGO_BUILD_USE_CFLAGS and
|
||||
PGO_BUILD_LTO_CFLAGS. Enable the PGO build in Makefile.
|
||||
* Makefile.in: Regenerated.
|
||||
* configure: Likewise.
|
||||
|
||||
2021-01-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* Makefile.tpl (AR): Add @AR_PLUGIN_OPTION@
|
||||
|
63
Makefile.in
63
Makefile.in
@ -412,6 +412,49 @@ CXXFLAGS = @CXXFLAGS@
|
||||
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
||||
GOCFLAGS = $(CFLAGS)
|
||||
|
||||
# Pass additional PGO and LTO compiler options to the PGO build.
|
||||
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
||||
override CFLAGS += $(BUILD_CFLAGS)
|
||||
override CXXFLAGS += $(BUILD_CFLAGS)
|
||||
|
||||
# Additional PGO and LTO compiler options to generate profiling data
|
||||
# for the PGO build.
|
||||
PGO_BUILD_GEN_FLAGS_TO_PASS = \
|
||||
PGO_BUILD_CFLAGS="@PGO_BUILD_GEN_CFLAGS@" \
|
||||
PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
|
||||
|
||||
# NB: Filter out any compiler options which may fail PGO training runs.
|
||||
PGO_BUILD_TRAINING_CFLAGS:= \
|
||||
$(filter-out -Werror=%,$(CFLAGS))
|
||||
PGO_BUILD_TRAINING_CXXFLAGS:=\
|
||||
$(filter-out -Werror=%,$(CXXFLAGS))
|
||||
PGO_BUILD_TRAINING_CFLAGS:= \
|
||||
$(filter-out -Wall,$(PGO_BUILD_TRAINING_CFLAGS))
|
||||
PGO_BUILD_TRAINING_CXXFLAGS:= \
|
||||
$(filter-out -Wall,$(PGO_BUILD_TRAINING_CXXFLAGS))
|
||||
PGO_BUILD_TRAINING_CFLAGS:= \
|
||||
$(filter-out -specs=%,$(PGO_BUILD_TRAINING_CFLAGS))
|
||||
PGO_BUILD_TRAINING_CXXFLAGS:= \
|
||||
$(filter-out -specs=%,$(PGO_BUILD_TRAINING_CXXFLAGS))
|
||||
PGO_BUILD_TRAINING_FLAGS_TO_PASS = \
|
||||
PGO_BUILD_TRAINING=yes \
|
||||
CFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CFLAGS)" \
|
||||
CXXFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CXXFLAGS)"
|
||||
|
||||
# Ignore "make check" errors in PGO training runs.
|
||||
PGO_BUILD_TRAINING_MFLAGS = -i
|
||||
|
||||
# Additional PGO and LTO compiler options to use profiling data for the
|
||||
# PGO build.
|
||||
PGO_BUILD_USE_FLAGS_TO_PASS = \
|
||||
PGO_BUILD_CFLAGS="@PGO_BUILD_USE_CFLAGS@" \
|
||||
PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
|
||||
|
||||
# PGO training targets for the PGO build. FIXME: Add gold tests to
|
||||
# training.
|
||||
PGO-TRAINING-TARGETS = binutils gas gdb ld sim
|
||||
PGO_BUILD_TRAINING = $(addprefix maybe-check-,$(PGO-TRAINING-TARGETS))
|
||||
|
||||
CREATE_GCOV = create_gcov
|
||||
|
||||
TFLAGS =
|
||||
@ -985,6 +1028,12 @@ configure-target: \
|
||||
|
||||
# The target built for a native non-bootstrap build.
|
||||
.PHONY: all
|
||||
|
||||
# --enable-pgo-build enables the PGO build.
|
||||
# 1. First build with -fprofile-generate.
|
||||
# 2. Use "make maybe-check-*" to generate profiling data.
|
||||
# 3. Use "make clean" to remove the previous build.
|
||||
# 4. Rebuild with -fprofile-use.
|
||||
all:
|
||||
@if gcc-bootstrap
|
||||
[ -f stage_final ] || echo stage3 > stage_final
|
||||
@ -993,7 +1042,7 @@ all:
|
||||
$(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble
|
||||
@endif gcc-bootstrap
|
||||
@: $(MAKE); $(unstage)
|
||||
@r=`${PWD_COMMAND}`; export r; \
|
||||
+@r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
@if gcc-bootstrap
|
||||
if [ -f stage_last ]; then \
|
||||
@ -1001,7 +1050,17 @@ all:
|
||||
$(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \
|
||||
else \
|
||||
@endif gcc-bootstrap
|
||||
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target \
|
||||
$(MAKE) $(RECURSE_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_GEN_FLAGS_TO_PASS) all-host all-target \
|
||||
@if pgo-build
|
||||
&& $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_TRAINING_MFLAGS) \
|
||||
$(PGO_BUILD_TRAINING_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_TRAINING) \
|
||||
&& $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean \
|
||||
&& $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_USE_FLAGS_TO_PASS) all-host all-target \
|
||||
@endif pgo-build
|
||||
@if gcc-bootstrap
|
||||
; \
|
||||
fi \
|
||||
|
58
Makefile.tpl
58
Makefile.tpl
@ -415,6 +415,45 @@ CXXFLAGS = @CXXFLAGS@
|
||||
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
||||
GOCFLAGS = $(CFLAGS)
|
||||
|
||||
# Pass additional PGO and LTO compiler options to the PGO build.
|
||||
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
||||
override CFLAGS += $(BUILD_CFLAGS)
|
||||
override CXXFLAGS += $(BUILD_CFLAGS)
|
||||
|
||||
# Additional PGO and LTO compiler options to generate profiling data
|
||||
# for the PGO build.
|
||||
PGO_BUILD_GEN_FLAGS_TO_PASS = \
|
||||
PGO_BUILD_CFLAGS="@PGO_BUILD_GEN_CFLAGS@" \
|
||||
PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
|
||||
|
||||
# NB: Filter out any compiler options which may fail PGO training runs.
|
||||
PGO_BUILD_TRAINING_CFLAGS:= \
|
||||
$(filter-out -Werror=%,$(CFLAGS))
|
||||
PGO_BUILD_TRAINING_CXXFLAGS:=\
|
||||
$(filter-out -Werror=%,$(CXXFLAGS))
|
||||
PGO_BUILD_TRAINING_CFLAGS:= \
|
||||
$(filter-out -Wall,$(PGO_BUILD_TRAINING_CFLAGS))
|
||||
PGO_BUILD_TRAINING_CXXFLAGS:= \
|
||||
$(filter-out -Wall,$(PGO_BUILD_TRAINING_CXXFLAGS))
|
||||
PGO_BUILD_TRAINING_CFLAGS:= \
|
||||
$(filter-out -specs=%,$(PGO_BUILD_TRAINING_CFLAGS))
|
||||
PGO_BUILD_TRAINING_CXXFLAGS:= \
|
||||
$(filter-out -specs=%,$(PGO_BUILD_TRAINING_CXXFLAGS))
|
||||
PGO_BUILD_TRAINING_FLAGS_TO_PASS = \
|
||||
CFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CFLAGS)" \
|
||||
CXXFLAGS_FOR_TARGET="$(PGO_BUILD_TRAINING_CXXFLAGS)"
|
||||
|
||||
# Additional PGO and LTO compiler options to use profiling data for the
|
||||
# PGO build.
|
||||
PGO_BUILD_USE_FLAGS_TO_PASS = \
|
||||
PGO_BUILD_CFLAGS="@PGO_BUILD_USE_CFLAGS@" \
|
||||
PGO_BUILD_LTO_CFLAGS="@PGO_BUILD_LTO_CFLAGS@"
|
||||
|
||||
# PGO training targets for the PGO build. FIXME: Add gold tests to
|
||||
# training.
|
||||
PGO-TRAINING-TARGETS = binutils gas gdb ld sim
|
||||
PGO_BUILD_TRAINING = $(addprefix maybe-check-,$(PGO-TRAINING-TARGETS))
|
||||
|
||||
CREATE_GCOV = create_gcov
|
||||
|
||||
TFLAGS =
|
||||
@ -719,6 +758,12 @@ configure-target: [+
|
||||
|
||||
# The target built for a native non-bootstrap build.
|
||||
.PHONY: all
|
||||
|
||||
# --enable-pgo-build enables the PGO build.
|
||||
# 1. First build with -fprofile-generate.
|
||||
# 2. Use "make maybe-check-*" to generate profiling data.
|
||||
# 3. Use "make clean" to remove the previous build.
|
||||
# 4. Rebuild with -fprofile-use.
|
||||
all:
|
||||
@if gcc-bootstrap
|
||||
[ -f stage_final ] || echo stage3 > stage_final
|
||||
@ -727,7 +772,7 @@ all:
|
||||
$(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble
|
||||
@endif gcc-bootstrap
|
||||
@: $(MAKE); $(unstage)
|
||||
@r=`${PWD_COMMAND}`; export r; \
|
||||
+@r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
@if gcc-bootstrap
|
||||
if [ -f stage_last ]; then \
|
||||
@ -735,7 +780,16 @@ all:
|
||||
$(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \
|
||||
else \
|
||||
@endif gcc-bootstrap
|
||||
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target \
|
||||
$(MAKE) $(RECURSE_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_GEN_FLAGS_TO_PASS) all-host all-target \
|
||||
@if pgo-build
|
||||
&& $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_TRAINING_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_TRAINING) \
|
||||
&& $(MAKE) $(RECURSE_FLAGS_TO_PASS) clean \
|
||||
&& $(MAKE) $(RECURSE_FLAGS_TO_PASS) \
|
||||
$(PGO_BUILD_USE_FLAGS_TO_PASS) all-host all-target \
|
||||
@endif pgo-build
|
||||
@if gcc-bootstrap
|
||||
; \
|
||||
fi \
|
||||
|
100
configure
vendored
100
configure
vendored
@ -692,6 +692,9 @@ extra_mpc_gmp_configure_flags
|
||||
extra_mpfr_configure_flags
|
||||
gmpinc
|
||||
gmplibs
|
||||
PGO_BUILD_LTO_CFLAGS
|
||||
PGO_BUILD_USE_CFLAGS
|
||||
PGO_BUILD_GEN_CFLAGS
|
||||
do_compare
|
||||
GNATMAKE
|
||||
GNATBIND
|
||||
@ -792,6 +795,7 @@ enable_libssp
|
||||
enable_libstdcxx
|
||||
enable_liboffloadmic
|
||||
enable_bootstrap
|
||||
enable_pgo_build
|
||||
with_mpc
|
||||
with_mpc_include
|
||||
with_mpc_lib
|
||||
@ -1522,6 +1526,8 @@ Optional Features:
|
||||
--enable-liboffloadmic=ARG
|
||||
build liboffloadmic [ARG={no,host,target}]
|
||||
--enable-bootstrap enable bootstrapping [yes if native build]
|
||||
--enable-pgo-build[=lto]
|
||||
enable the PGO build
|
||||
--disable-isl-version-check
|
||||
disable check for isl version
|
||||
--enable-lto enable link time optimization support
|
||||
@ -5422,6 +5428,91 @@ if test "$enable_bootstrap:$GXX" = "yes:yes"; then
|
||||
CXX="$CXX -std=gnu++98"
|
||||
fi
|
||||
|
||||
# Check whether --enable-pgo-build was given.
|
||||
if test "${enable_pgo_build+set}" = set; then :
|
||||
enableval=$enable_pgo_build; enable_pgo_build=$enableval
|
||||
else
|
||||
enable_pgo_build=no
|
||||
fi
|
||||
|
||||
|
||||
# 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)
|
||||
as_fn_error $? "cannot perform the PGO bootstrap when building a compiler" "$LINENO" 5 ;;
|
||||
|
||||
*)
|
||||
as_fn_error $? "invalid option for --enable-pgo-build" "$LINENO" 5
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$enable_pgo_build" != "no"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fprofile-generate" >&5
|
||||
$as_echo_n "checking whether the compiler supports -fprofile-generate... " >&6; }
|
||||
old_CFLAGS="$CFLAGS"
|
||||
PGO_BUILD_GEN_CFLAGS="-fprofile-generate"
|
||||
CFLAGS="$CFLAGS $PGO_BUILD_CFLAGS"
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
int foo;
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
|
||||
else
|
||||
PGO_BUILD_GEN_CFLAGS=
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
CFLAGS="$old_CFLAGS"
|
||||
if test -n "$PGO_BUILD_GEN_CFLAGS"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
PGO_BUILD_USE_CFLAGS="-fprofile-use"
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
as_fn_error $? "cannot perform the PGO build without -fprofile-generate" "$LINENO" 5
|
||||
fi
|
||||
|
||||
if test "$enable_pgo_build" = "lto"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -flto=jobserver -ffat-lto-objects" >&5
|
||||
$as_echo_n "checking whether the compiler supports -flto=jobserver -ffat-lto-objects... " >&6; }
|
||||
old_CFLAGS="$CFLAGS"
|
||||
PGO_BUILD_LTO_CFLAGS="-flto=jobserver -ffat-lto-objects"
|
||||
CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
int foo;
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
|
||||
else
|
||||
PGO_BUILD_LTO_CFLAGS=
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
CFLAGS="$old_CFLAGS"
|
||||
if test -n "$PGO_BUILD_LTO_CFLAGS"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: LTO is disabled for the PGO build" >&5
|
||||
$as_echo "$as_me: WARNING: LTO is disabled for the PGO build" >&2;}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
# Used for setting $lt_cv_objdir
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
|
||||
$as_echo_n "checking for objdir... " >&6; }
|
||||
@ -5611,8 +5702,7 @@ if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then
|
||||
# Check for the recommended and required versions of GMP.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of gmp.h" >&5
|
||||
$as_echo_n "checking for the correct version of gmp.h... " >&6; }
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include "gmp.h"
|
||||
int
|
||||
@ -7331,6 +7421,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.
|
||||
|
||||
# Check whether --enable-serial-configure was given.
|
||||
|
65
configure.ac
65
configure.ac
@ -1375,6 +1375,65 @@ if test "$enable_bootstrap:$GXX" = "yes:yes"; then
|
||||
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
|
||||
|
||||
@ -2847,6 +2906,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],
|
||||
|
Loading…
x
Reference in New Issue
Block a user