@@ -323,6 +323,11 @@ AC_ARG_ENABLE([external-signer],
323
323
[ use_external_signer=$enableval] ,
324
324
[ use_external_signer=yes] )
325
325
326
+ AC_ARG_ENABLE ( [ lto] ,
327
+ [ AS_HELP_STRING ( [ --enable-lto] ,[ build using LTO (default is no)] ) ] ,
328
+ [ enable_lto=$enableval] ,
329
+ [ enable_lto=no] )
330
+
326
331
AC_LANG_PUSH ( [ C++] )
327
332
328
333
dnl Check for a flag to turn compiler warnings into errors. This is helpful for checks which may
@@ -370,6 +375,11 @@ if test "x$enable_debug" = xyes; then
370
375
AX_CHECK_COMPILE_FLAG ( [ -ftrapv] , [ DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -ftrapv"] , [ ] , [ $CXXFLAG_WERROR] )
371
376
fi
372
377
378
+ if test "x$enable_lto" = "xyes"; then
379
+ AX_CHECK_COMPILE_FLAG ( [ -flto] , [ LTO_CXXFLAGS="$LTO_CXXFLAGS -flto"] , [ AC_MSG_ERROR ( [ compile failed with -flto] ) ] , [ $CXXFLAG_WERROR] )
380
+ AX_CHECK_LINK_FLAG ( [ -flto] , [ LTO_LDFLAGS="$LTO_LDFLAGS -flto"] , [ AC_MSG_ERROR ( [ link failed with -flto] ) ] , [ $CXXFLAG_WERROR] )
381
+ fi
382
+
373
383
if test x$use_sanitizers != x; then
374
384
dnl First check if the compiler accepts flags. If an incompatible pair like
375
385
dnl -fsanitize=address,thread is used here, this check will fail. This will also
@@ -1826,6 +1836,8 @@ AC_SUBST(GPROF_LDFLAGS)
1826
1836
AC_SUBST ( HARDENED_CXXFLAGS )
1827
1837
AC_SUBST ( HARDENED_CPPFLAGS )
1828
1838
AC_SUBST ( HARDENED_LDFLAGS )
1839
+ AC_SUBST ( LTO_CXXFLAGS )
1840
+ AC_SUBST ( LTO_LDFLAGS )
1829
1841
AC_SUBST ( PIC_FLAGS )
1830
1842
AC_SUBST ( PIE_FLAGS )
1831
1843
AC_SUBST ( SANITIZER_CXXFLAGS )
@@ -1941,6 +1953,7 @@ echo " sanitizers = $use_sanitizers"
1941
1953
echo " debug enabled = $enable_debug"
1942
1954
echo " gprof enabled = $enable_gprof"
1943
1955
echo " werror = $enable_werror"
1956
+ echo " LTO = $enable_lto"
1944
1957
echo
1945
1958
echo " target os = $TARGET_OS"
1946
1959
echo " build os = $build_os"
@@ -1949,7 +1962,7 @@ echo " CC = $CC"
1949
1962
echo " CFLAGS = $PTHREAD_CFLAGS $CFLAGS"
1950
1963
echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CPPFLAGS"
1951
1964
echo " CXX = $CXX"
1952
- echo " CXXFLAGS = $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CXXFLAGS"
1953
- echo " LDFLAGS = $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $LDFLAGS"
1965
+ echo " CXXFLAGS = $LTO_CXXFLAGS $ DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CXXFLAGS"
1966
+ echo " LDFLAGS = $LTO_LDFLAGS $ PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $LDFLAGS"
1954
1967
echo " ARFLAGS = $ARFLAGS"
1955
1968
echo
0 commit comments