summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-05-18 18:13:13 +0200
committerLubomir Rintel <lkundrak@v3.sk>2016-05-18 18:43:25 +0200
commitd662a5dc70b1fbf5c589f359cdcecd4052ea7581 (patch)
treed2d65fba25e4c231da2479feec1d455647380f0c
parentc3c109282e42b2669f66ceabb5420d2def6a86b9 (diff)
downloadNetworkManager-lr/lto.tar.gz
build: enable LTO by defaultlr/lto
It reduces NetworkManager size by chopping off the unused parts of the generated dbus glue and more. That's a nice improvement and the slow down is not unbearable. LTO can still be disabled with --disable-lto. With LTO: 740.37user 94.89system 4:13.83elapsed 329%CPU (0avgtext+0avgdata 118316maxresident)k text data bss dec hex filename 2435437 74224 8704 2518365 266d5d src/NetworkManager Without LTO: 359.73user 71.94system 1:29.67elapsed 481%CPU (0avgtext+0avgdata 137948maxresident)k text data bss dec hex filename 2772228 74848 9272 2856348 2b959c src/NetworkManager
-rw-r--r--configure.ac25
1 files changed, 20 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index be271c1159..44b7d61011 100644
--- a/configure.ac
+++ b/configure.ac
@@ -928,14 +928,29 @@ if test "${enable_more_logging}" = "yes"; then
AC_DEFINE(NM_MORE_LOGGING, [1], [Define if more debug logging is enabled])
fi
-AC_ARG_ENABLE(lto, AS_HELP_STRING([--enable-lto], [Enable Link Time Optimization for smaller size (default: no)]))
-if (test "${enable_lto}" = "yes"); then
+AC_ARG_ENABLE(lto, AS_HELP_STRING([--enable-lto], [Enable Link Time Optimization for smaller size (default: yes if supported)]))
+if (test "${enable_lto}" != "no"); then
+ CFLAGS_SAVED="$CFLAGS"
CFLAGS="-flto $CFLAGS"
-else
- enable_lto='no'
+ AC_MSG_CHECKING([whether compiler accepts -flto])
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ /* Older GCC doesn't support serializing optimize() in gimple for LTO */
+ #pragma GCC optimize("O0")
+ ])], [
+ AC_MSG_RESULT(yes)
+ enable_lto="yes"
+ ],[
+ AC_MSG_RESULT(no)
+ if (test "${enable_lto}" = "yes"); then
+ AC_MSG_ERROR([LTO requested but not supported.])
+ else
+ CFLAGS="$CFLAGS_SAVED"
+ enable_lto="no"
+ fi
+ ])
+ unset CFLAGS_SAVED
fi
-
dnl -------------------------
dnl Vala bindings
dnl -------------------------