diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2016-05-18 18:13:13 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2016-05-18 18:43:25 +0200 |
commit | d662a5dc70b1fbf5c589f359cdcecd4052ea7581 (patch) | |
tree | d2d65fba25e4c231da2479feec1d455647380f0c | |
parent | c3c109282e42b2669f66ceabb5420d2def6a86b9 (diff) | |
download | NetworkManager-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.ac | 25 |
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 ------------------------- |