diff options
author | Andre Heider <a.heider@gmail.com> | 2023-02-02 21:33:38 +0100 |
---|---|---|
committer | Christian Marangi <ansuelsmth@gmail.com> | 2023-03-21 18:28:22 +0100 |
commit | 07730ff3465d3cede3026cdd1c17453930f055ce (patch) | |
tree | 71c8f06b42de3b1ff0d1c02c0068d718c3a08a62 /include | |
parent | da3700988d9e34e380bae21ee23d5458a7e972b4 (diff) | |
download | upstream-07730ff3465d3cede3026cdd1c17453930f055ce.tar.gz upstream-07730ff3465d3cede3026cdd1c17453930f055ce.tar.bz2 upstream-07730ff3465d3cede3026cdd1c17453930f055ce.zip |
treewide: add support for "lto" 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-lto".
Some packages used LTO, but not the linker plugin. This unifies 'em
all to attempt to produce better code.
Quoting man gcc(1):
"This improves the quality of optimization by exposing more code to the
link-time optimizer."
Also use -flto=auto instead of -flto=jobserver, as it's not guaranteed
that every buildsystem uses +$(MAKE) correctly.
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 4d97cda00f..0fb947f035 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 gc-sections no-gc-sections,$(PKG_BUILD_FLAGS)) +__unknown_flags=$(filter-out no-iremap no-mips16 gc-sections no-gc-sections lto no-lto,$(PKG_BUILD_FLAGS)) ifneq ($(__unknown_flags),) $(error unknown PKG_BUILD_FLAGS: $(__unknown_flags)) endif @@ -56,6 +56,11 @@ ifeq ($(call pkg_build_flag,gc-sections,0),1) TARGET_CXXFLAGS+= -ffunction-sections -fdata-sections TARGET_LDFLAGS+= -Wl,--gc-sections endif +ifeq ($(call pkg_build_flag,lto,0),1) + TARGET_CFLAGS+= -flto=auto -fno-fat-lto-objects + TARGET_CXXFLAGS+= -flto=auto -fno-fat-lto-objects + TARGET_LDFLAGS+= -flto=auto -fuse-linker-plugin +endif include $(INCLUDE_DIR)/hardening.mk include $(INCLUDE_DIR)/prereq.mk |