@@ -323,6 +323,11 @@ AC_ARG_ENABLE([external-signer],
323323 [ use_external_signer=$enableval] ,
324324 [ use_external_signer=yes] )
325325
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+
326331AC_LANG_PUSH ( [ C++] )
327332
328333dnl 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
370375 AX_CHECK_COMPILE_FLAG ( [ -ftrapv] , [ DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -ftrapv"] , [ ] , [ $CXXFLAG_WERROR] )
371376fi
372377
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+
373383if test x$use_sanitizers != x; then
374384 dnl First check if the compiler accepts flags. If an incompatible pair like
375385 dnl -fsanitize=address,thread is used here, this check will fail. This will also
@@ -1826,6 +1836,8 @@ AC_SUBST(GPROF_LDFLAGS)
18261836AC_SUBST ( HARDENED_CXXFLAGS )
18271837AC_SUBST ( HARDENED_CPPFLAGS )
18281838AC_SUBST ( HARDENED_LDFLAGS )
1839+ AC_SUBST ( LTO_CXXFLAGS )
1840+ AC_SUBST ( LTO_LDFLAGS )
18291841AC_SUBST ( PIC_FLAGS )
18301842AC_SUBST ( PIE_FLAGS )
18311843AC_SUBST ( SANITIZER_CXXFLAGS )
@@ -1941,6 +1953,7 @@ echo " sanitizers = $use_sanitizers"
19411953echo " debug enabled = $enable_debug"
19421954echo " gprof enabled = $enable_gprof"
19431955echo " werror = $enable_werror"
1956+ echo " LTO = $enable_lto"
19441957echo
19451958echo " target os = $TARGET_OS"
19461959echo " build os = $build_os"
@@ -1949,7 +1962,7 @@ echo " CC = $CC"
19491962echo " CFLAGS = $PTHREAD_CFLAGS $CFLAGS"
19501963echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CPPFLAGS"
19511964echo " 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"
19541967echo " ARFLAGS = $ARFLAGS"
19551968echo
0 commit comments