summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>2015-07-16 15:27:57 +0200
committerJan Alexander Steffens (heftig) <jan.steffens@gmail.com>2015-07-16 16:17:08 +0200
commit4fecbe59dadaed314b792ed35ef5dc24c7047a18 (patch)
tree2a0c72a223a7a8ec77fb0f8264fe59af85cbe4b2
parent2ec7c4279e4cbbe668c5dfb0ab447b74deaa294b (diff)
build-sys: Use slim LTO objects if possible
While 235c6e6 gets LTO builds running again, it goes back to using fat LTO objects instead of using gcc-{ar,nm,ranlib}. Building these fat objects takes significantly more time. Use the suggested solution and look for gcc-{ar,nm,ranlib}, which launch the binutils tools with the appropriate --plugin parameter. GCC versions that do not ship these should either default to -ffat-lto-objects or do not support LTO at all. On another note, nm from binutils 2.25 seems to be smart enough to load the LTO plugin when needed without having to specify --plugin.
-rw-r--r--configure.ac7
1 files changed, 6 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 999f9f84d3..724a3f3428 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,6 +38,11 @@ AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax no-di
AM_SILENT_RULES([yes])
AC_CANONICAL_HOST
AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
+
+AC_CHECK_TOOLS([AR], [gcc-ar ar], [:])
+AC_CHECK_TOOLS([NM], [gcc-nm nm], [:])
+AC_CHECK_TOOLS([RANLIB], [gcc-ranlib ranlib], [:])
+
LT_PREREQ(2.2)
LT_INIT([disable-static])
@@ -196,7 +201,7 @@ AS_CASE([$CC], [*clang*],
AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
[CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
- -flto -ffat-lto-objects])],
+ -flto])],
[AC_MSG_RESULT([skipping -flto, optimization not enabled])])
AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")