Skip to content

Commit 68e5aaf

Browse files
fanquaketheunielichai
committed
build: add --enable-lto configuration option
Co-authored-by: Cory Fields <[email protected]> Co-authored-by: Elichai Turkel <[email protected]>
1 parent 41e6909 commit 68e5aaf

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

configure.ac

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
326331
AC_LANG_PUSH([C++])
327332

328333
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
370375
AX_CHECK_COMPILE_FLAG([-ftrapv], [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -ftrapv"], [], [$CXXFLAG_WERROR])
371376
fi
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+
373383
if 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)
18261836
AC_SUBST(HARDENED_CXXFLAGS)
18271837
AC_SUBST(HARDENED_CPPFLAGS)
18281838
AC_SUBST(HARDENED_LDFLAGS)
1839+
AC_SUBST(LTO_CXXFLAGS)
1840+
AC_SUBST(LTO_LDFLAGS)
18291841
AC_SUBST(PIC_FLAGS)
18301842
AC_SUBST(PIE_FLAGS)
18311843
AC_SUBST(SANITIZER_CXXFLAGS)
@@ -1941,6 +1953,7 @@ echo " sanitizers = $use_sanitizers"
19411953
echo " debug enabled = $enable_debug"
19421954
echo " gprof enabled = $enable_gprof"
19431955
echo " werror = $enable_werror"
1956+
echo " LTO = $enable_lto"
19441957
echo
19451958
echo " target os = $TARGET_OS"
19461959
echo " build os = $build_os"
@@ -1949,7 +1962,7 @@ echo " CC = $CC"
19491962
echo " CFLAGS = $PTHREAD_CFLAGS $CFLAGS"
19501963
echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CPPFLAGS"
19511964
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"
19541967
echo " ARFLAGS = $ARFLAGS"
19551968
echo

src/Makefile.am

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ print-%: FORCE
88

99
DIST_SUBDIRS = secp256k1
1010

11-
AM_LDFLAGS = $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS) $(GPROF_LDFLAGS) $(SANITIZER_LDFLAGS)
12-
AM_CXXFLAGS = $(DEBUG_CXXFLAGS) $(HARDENED_CXXFLAGS) $(WARN_CXXFLAGS) $(NOWARN_CXXFLAGS) $(ERROR_CXXFLAGS) $(GPROF_CXXFLAGS) $(SANITIZER_CXXFLAGS)
11+
AM_LDFLAGS = $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS) $(GPROF_LDFLAGS) $(SANITIZER_LDFLAGS) $(LTO_LDFLAGS)
12+
AM_CXXFLAGS = $(DEBUG_CXXFLAGS) $(HARDENED_CXXFLAGS) $(WARN_CXXFLAGS) $(NOWARN_CXXFLAGS) $(ERROR_CXXFLAGS) $(GPROF_CXXFLAGS) $(SANITIZER_CXXFLAGS) $(LTO_CXXFLAGS)
1313
AM_CPPFLAGS = $(DEBUG_CPPFLAGS) $(HARDENED_CPPFLAGS)
1414
AM_LIBTOOLFLAGS = --preserve-dup-deps
1515
PTHREAD_FLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)

0 commit comments

Comments
 (0)