diff options
author | Andre Heider <a.heider@gmail.com> | 2023-02-02 21:16:21 +0100 |
---|---|---|
committer | Christian Marangi <ansuelsmth@gmail.com> | 2023-03-21 18:28:22 +0100 |
commit | da3700988d9e34e380bae21ee23d5458a7e972b4 (patch) | |
tree | 20d82e514ac77f4f0de8deb7f1274a8f409646df /include | |
parent | 5c545bdb365a78b8995ddfa441a6018f7ff3c011 (diff) | |
download | upstream-da3700988d9e34e380bae21ee23d5458a7e972b4.tar.gz upstream-da3700988d9e34e380bae21ee23d5458a7e972b4.tar.bz2 upstream-da3700988d9e34e380bae21ee23d5458a7e972b4.zip |
treewide: add support for "gc-sections" in PKG_BUILD_FLAGS
This reduces open coding and allows to easily add a knob to
enable it treewide, where chosen packages can still opt-out via
"no-gc-sections".
Note: libnl, mbedtls and opkg only used the CFLAGS part without the
LDFLAGS counterpart. That doesn't help at all if the goal is to produce
smaller binaries. I consider that an accident, and this fixes it.
Note: there are also packages using only the LDFLAGS part. I didn't
touch those, as gc might have been disabled via CFLAGS intentionally.
Signed-off-by: Andre Heider <a.heider@gmail.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/package.mk | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/include/package.mk b/include/package.mk index a1717a603d..4d97cda00f 100644 --- a/include/package.mk +++ b/include/package.mk @@ -30,7 +30,7 @@ ifneq ($(strip $(PKG_USE_MIPS16)),1) PKG_BUILD_FLAGS+=no-mips16 endif -__unknown_flags=$(filter-out no-iremap no-mips16,$(PKG_BUILD_FLAGS)) +__unknown_flags=$(filter-out no-iremap no-mips16 gc-sections no-gc-sections,$(PKG_BUILD_FLAGS)) ifneq ($(__unknown_flags),) $(error unknown PKG_BUILD_FLAGS: $(__unknown_flags)) endif @@ -51,6 +51,11 @@ ifdef CONFIG_USE_MIPS16 TARGET_CXXFLAGS += -mips16 -minterlink-mips16 endif endif +ifeq ($(call pkg_build_flag,gc-sections,0),1) + TARGET_CFLAGS+= -ffunction-sections -fdata-sections + TARGET_CXXFLAGS+= -ffunction-sections -fdata-sections + TARGET_LDFLAGS+= -Wl,--gc-sections +endif include $(INCLUDE_DIR)/hardening.mk include $(INCLUDE_DIR)/prereq.mk |