summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>2010-10-05 21:45:51 +0200
committerLennart Poettering <lennart@poettering.net>2010-10-05 21:45:51 +0200
commit9b85fc6a89386582bfe792dba881800b0a093839 (patch)
treefd6b1cc21d0ce5c78a5a774aed7678185a337878
parentdf37291a5198818e5bb1d11c34ba134aa3d79d96 (diff)
build-sys: Add compiler and linker flags to reduce binary size
Reduce number of exported symbols with -fvisibility=hidden by default, this is safe as we're not generating and loadable library and our binaries should have no exported symbol other than main(). This alone reduces around 4kb per binary. It will also request GCC to emit every function and data variable in its own section, then request the linker to remove unused sections. This reduces the size of utility tools (/lib/systemd/systemd-*) by half or even more (in my system some binaries went from 84kb to 32kb).
-rw-r--r--configure.ac7
1 files changed, 6 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 753adc5096..562921a958 100644
--- a/configure.ac
+++ b/configure.ac
@@ -86,7 +86,12 @@ CC_CHECK_CFLAGS_APPEND([ \
-ffast-math \
-fno-common \
-fdiagnostics-show-option \
- -fno-strict-aliasing])
+ -fno-strict-aliasing \
+ -fvisibility=hidden \
+ -ffunction-sections \
+ -fdata-sections \
+ -Wl,--as-needed \
+ -Wl,--gc-sections])
LT_PREREQ(2.2)
LT_INIT