build: remove --enable-lto

This has outlived its usefulness, doesn't gel well with
newer compilers & `-flto` related options, i.e thin vs full, or `=auto`,
and having `-flto` as the only option means that sometimes this just
needs to be worked around, i.e in oss-fuzz:
https://github.com/google/oss-fuzz/blob/master/projects/bitcoin-core/build.sh.

While it was convenient when `-flto` was newer, support for `-flto` is now
in all compilers we use, and there's also no-longer any real need
for us to treat `-flto` different to any other optimization option.

Remove it, to remove build complexity, and so there's no need
to port a similar option to CMake.

Note that the LTO option remains in depends, because we still a way to
build packages that have LTO specific patches/options.

If we decide to merge this, I'll follow up downstream in oss-fuzz first,
to make sure we don't break the build.
This commit is contained in:
fanquake 2023-12-06 12:26:02 +00:00
parent c80f57ba57
commit 2d1b1c7dae
No known key found for this signature in database
GPG key ID: 2EEB9F5CC09526C1
11 changed files with 5 additions and 57 deletions

View file

@ -321,11 +321,6 @@ AC_ARG_ENABLE([external-signer],
[use_external_signer=$enableval], [use_external_signer=$enableval],
[use_external_signer=auto]) [use_external_signer=auto])
AC_ARG_ENABLE([lto],
[AS_HELP_STRING([--enable-lto],[build using LTO (default is no)])],
[enable_lto=$enableval],
[enable_lto=no])
AC_LANG_PUSH([C++]) AC_LANG_PUSH([C++])
dnl Check for a flag to turn compiler warnings into errors. This is helpful for checks which may dnl Check for a flag to turn compiler warnings into errors. This is helpful for checks which may
@ -377,11 +372,6 @@ if test "$enable_debug" = "yes"; then
AX_CHECK_COMPILE_FLAG([-ftrapv], [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -ftrapv"], [], [$CXXFLAG_WERROR]) AX_CHECK_COMPILE_FLAG([-ftrapv], [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -ftrapv"], [], [$CXXFLAG_WERROR])
fi fi
if test "$enable_lto" = "yes"; then
AX_CHECK_COMPILE_FLAG([-flto], [LTO_CXXFLAGS="$LTO_CXXFLAGS -flto"], [AC_MSG_ERROR([compile failed with -flto])], [$CXXFLAG_WERROR])
AX_CHECK_LINK_FLAG([-flto], [LTO_LDFLAGS="$LTO_LDFLAGS -flto"], [AC_MSG_ERROR([link failed with -flto])], [$CXXFLAG_WERROR])
fi
if test "$use_sanitizers" != ""; then if test "$use_sanitizers" != ""; then
dnl First check if the compiler accepts flags. If an incompatible pair like dnl First check if the compiler accepts flags. If an incompatible pair like
dnl -fsanitize=address,thread is used here, this check will fail. This will also dnl -fsanitize=address,thread is used here, this check will fail. This will also
@ -1893,8 +1883,6 @@ AC_SUBST(GPROF_LDFLAGS)
AC_SUBST(HARDENED_CXXFLAGS) AC_SUBST(HARDENED_CXXFLAGS)
AC_SUBST(HARDENED_CPPFLAGS) AC_SUBST(HARDENED_CPPFLAGS)
AC_SUBST(HARDENED_LDFLAGS) AC_SUBST(HARDENED_LDFLAGS)
AC_SUBST(LTO_CXXFLAGS)
AC_SUBST(LTO_LDFLAGS)
AC_SUBST(PIC_FLAGS) AC_SUBST(PIC_FLAGS)
AC_SUBST(PIE_FLAGS) AC_SUBST(PIE_FLAGS)
AC_SUBST(SANITIZER_CXXFLAGS) AC_SUBST(SANITIZER_CXXFLAGS)
@ -2002,7 +1990,6 @@ echo " sanitizers = $use_sanitizers"
echo " debug enabled = $enable_debug" echo " debug enabled = $enable_debug"
echo " gprof enabled = $enable_gprof" echo " gprof enabled = $enable_gprof"
echo " werror = $enable_werror" echo " werror = $enable_werror"
echo " LTO = $enable_lto"
echo echo
echo " target os = $host_os" echo " target os = $host_os"
echo " build os = $build_os" echo " build os = $build_os"
@ -2011,8 +1998,8 @@ echo " CC = $CC"
echo " CFLAGS = $PTHREAD_CFLAGS $CFLAGS" echo " CFLAGS = $PTHREAD_CFLAGS $CFLAGS"
echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CORE_CPPFLAGS $CPPFLAGS" echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CORE_CPPFLAGS $CPPFLAGS"
echo " CXX = $CXX" echo " CXX = $CXX"
echo " CXXFLAGS = $LTO_CXXFLAGS $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CORE_CXXFLAGS $CXXFLAGS" echo " CXXFLAGS = $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CORE_CXXFLAGS $CXXFLAGS"
echo " LDFLAGS = $LTO_LDFLAGS $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $CORE_LDFLAGS $LDFLAGS" echo " LDFLAGS = $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $CORE_LDFLAGS $LDFLAGS"
echo " AR = $AR" echo " AR = $AR"
echo " ARFLAGS = $ARFLAGS" echo " ARFLAGS = $ARFLAGS"
echo echo

View file

@ -123,7 +123,7 @@ The following can be set when running make: `make FOO=bar`
- `LOG`: Use file-based logging for individual packages. During a package build its log file - `LOG`: Use file-based logging for individual packages. During a package build its log file
resides in the `depends` directory, and the log file is printed out automatically in case resides in the `depends` directory, and the log file is printed out automatically in case
of build error. After successful build log files are moved along with package archives of build error. After successful build log files are moved along with package archives
- `LTO`: Use LTO when building packages. - `LTO`: Enable options needed for LTO. Does not add `-flto` related options to *FLAGS.
- `NO_HARDEN=1`: Don't use hardening options when building packages - `NO_HARDEN=1`: Don't use hardening options when building packages
If some packages are not built, for example `make NO_WALLET=1`, the appropriate If some packages are not built, for example `make NO_WALLET=1`, the appropriate

View file

@ -78,10 +78,6 @@ if test "@host_os@" = darwin; then
BREW=no BREW=no
fi fi
if test -z "$enable_lto" && test -n "@lto@"; then
enable_lto=yes
fi
if test -z "$enable_hardening" && test -n "@no_harden@"; then if test -z "$enable_hardening" && test -n "@no_harden@"; then
enable_hardening=no enable_hardening=no
fi fi

View file

@ -9,11 +9,6 @@ endif
android_CFLAGS=-std=$(C_STANDARD) android_CFLAGS=-std=$(C_STANDARD)
android_CXXFLAGS=-std=$(CXX_STANDARD) android_CXXFLAGS=-std=$(CXX_STANDARD)
ifneq ($(LTO),)
android_CFLAGS += -flto
android_LDFLAGS += -flto
endif
android_AR=$(ANDROID_TOOLCHAIN_BIN)/llvm-ar android_AR=$(ANDROID_TOOLCHAIN_BIN)/llvm-ar
android_RANLIB=$(ANDROID_TOOLCHAIN_BIN)/llvm-ranlib android_RANLIB=$(ANDROID_TOOLCHAIN_BIN)/llvm-ranlib

View file

@ -97,12 +97,6 @@ darwin_CFLAGS=-pipe -std=$(C_STANDARD)
darwin_CXXFLAGS=-pipe -std=$(CXX_STANDARD) darwin_CXXFLAGS=-pipe -std=$(CXX_STANDARD)
darwin_LDFLAGS=-Wl,-platform_version,macos,$(OSX_MIN_VERSION),$(OSX_SDK_VERSION) darwin_LDFLAGS=-Wl,-platform_version,macos,$(OSX_MIN_VERSION),$(OSX_SDK_VERSION)
ifneq ($(LTO),)
darwin_CFLAGS += -flto
darwin_CXXFLAGS += -flto
darwin_LDFLAGS += -flto
endif
darwin_release_CFLAGS=-O2 darwin_release_CFLAGS=-O2
darwin_release_CXXFLAGS=$(darwin_release_CFLAGS) darwin_release_CXXFLAGS=$(darwin_release_CFLAGS)

View file

@ -1,12 +1,6 @@
freebsd_CFLAGS=-pipe -std=$(C_STANDARD) freebsd_CFLAGS=-pipe -std=$(C_STANDARD)
freebsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) freebsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD)
ifneq ($(LTO),)
freebsd_CFLAGS += -flto
freebsd_CXXFLAGS += -flto
freebsd_LDFLAGS += -flto
endif
freebsd_release_CFLAGS=-O2 freebsd_release_CFLAGS=-O2
freebsd_release_CXXFLAGS=$(freebsd_release_CFLAGS) freebsd_release_CXXFLAGS=$(freebsd_release_CFLAGS)

View file

@ -2,10 +2,6 @@ linux_CFLAGS=-pipe -std=$(C_STANDARD)
linux_CXXFLAGS=-pipe -std=$(CXX_STANDARD) linux_CXXFLAGS=-pipe -std=$(CXX_STANDARD)
ifneq ($(LTO),) ifneq ($(LTO),)
linux_CFLAGS += -flto
linux_CXXFLAGS += -flto
linux_LDFLAGS += -flto
linux_AR = $(host_toolchain)gcc-ar linux_AR = $(host_toolchain)gcc-ar
linux_NM = $(host_toolchain)gcc-nm linux_NM = $(host_toolchain)gcc-nm
linux_RANLIB = $(host_toolchain)gcc-ranlib linux_RANLIB = $(host_toolchain)gcc-ranlib

View file

@ -6,10 +6,6 @@ mingw32_CFLAGS=-pipe -std=$(C_STANDARD)
mingw32_CXXFLAGS=-pipe -std=$(CXX_STANDARD) mingw32_CXXFLAGS=-pipe -std=$(CXX_STANDARD)
ifneq ($(LTO),) ifneq ($(LTO),)
mingw32_CFLAGS += -flto
mingw32_CXXFLAGS += -flto
mingw32_LDFLAGS += -flto
mingw32_AR = $(host_toolchain)gcc-ar mingw32_AR = $(host_toolchain)gcc-ar
mingw32_NM = $(host_toolchain)gcc-nm mingw32_NM = $(host_toolchain)gcc-nm
mingw32_RANLIB = $(host_toolchain)gcc-ranlib mingw32_RANLIB = $(host_toolchain)gcc-ranlib

View file

@ -2,10 +2,6 @@ netbsd_CFLAGS=-pipe -std=$(C_STANDARD)
netbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) netbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD)
ifneq ($(LTO),) ifneq ($(LTO),)
netbsd_CFLAGS += -flto
netbsd_CXXFLAGS += -flto
netbsd_LDFLAGS += -flto
netbsd_AR = $(host_toolchain)gcc-ar netbsd_AR = $(host_toolchain)gcc-ar
netbsd_NM = $(host_toolchain)gcc-nm netbsd_NM = $(host_toolchain)gcc-nm
netbsd_RANLIB = $(host_toolchain)gcc-ranlib netbsd_RANLIB = $(host_toolchain)gcc-ranlib

View file

@ -1,12 +1,6 @@
openbsd_CFLAGS=-pipe -std=$(C_STANDARD) openbsd_CFLAGS=-pipe -std=$(C_STANDARD)
openbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) openbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD)
ifneq ($(LTO),)
openbsd_CFLAGS += -flto
openbsd_CXXFLAGS += -flto
openbsd_LDFLAGS += -flto
endif
openbsd_release_CFLAGS=-O2 openbsd_release_CFLAGS=-O2
openbsd_release_CXXFLAGS=$(openbsd_release_CFLAGS) openbsd_release_CXXFLAGS=$(openbsd_release_CFLAGS)

View file

@ -8,8 +8,8 @@ print-%: FORCE
DIST_SUBDIRS = secp256k1 DIST_SUBDIRS = secp256k1
AM_LDFLAGS = $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS) $(GPROF_LDFLAGS) $(SANITIZER_LDFLAGS) $(LTO_LDFLAGS) $(CORE_LDFLAGS) AM_LDFLAGS = $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS) $(GPROF_LDFLAGS) $(SANITIZER_LDFLAGS) $(CORE_LDFLAGS)
AM_CXXFLAGS = $(DEBUG_CXXFLAGS) $(HARDENED_CXXFLAGS) $(WARN_CXXFLAGS) $(NOWARN_CXXFLAGS) $(ERROR_CXXFLAGS) $(GPROF_CXXFLAGS) $(SANITIZER_CXXFLAGS) $(LTO_CXXFLAGS) $(CORE_CXXFLAGS) AM_CXXFLAGS = $(DEBUG_CXXFLAGS) $(HARDENED_CXXFLAGS) $(WARN_CXXFLAGS) $(NOWARN_CXXFLAGS) $(ERROR_CXXFLAGS) $(GPROF_CXXFLAGS) $(SANITIZER_CXXFLAGS) $(CORE_CXXFLAGS)
AM_CPPFLAGS = $(DEBUG_CPPFLAGS) $(HARDENED_CPPFLAGS) $(CORE_CPPFLAGS) AM_CPPFLAGS = $(DEBUG_CPPFLAGS) $(HARDENED_CPPFLAGS) $(CORE_CPPFLAGS)
AM_LIBTOOLFLAGS = --preserve-dup-deps AM_LIBTOOLFLAGS = --preserve-dup-deps
PTHREAD_FLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) PTHREAD_FLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)