aboutsummaryrefslogtreecommitdiffstats
path: root/include/package.mk
diff options
context:
space:
mode:
authorAndre Heider <a.heider@gmail.com>2023-02-02 21:33:38 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2023-03-21 18:28:22 +0100
commit07730ff3465d3cede3026cdd1c17453930f055ce (patch)
tree71c8f06b42de3b1ff0d1c02c0068d718c3a08a62 /include/package.mk
parentda3700988d9e34e380bae21ee23d5458a7e972b4 (diff)
downloadupstream-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/package.mk')
-rw-r--r--include/package.mk7
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