mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-02-16 11:56:56 +00:00
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>
This commit is contained in:
parent
5c545bdb36
commit
da3700988d
@ -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
|
||||
|
@ -17,6 +17,8 @@ PKG_HASH:=7fe36a064101cd5c515e41b2be393dce3ca88adce59d6ee668e0af7c0c4570cd
|
||||
|
||||
PKG_CONFIG_DEPENDS := CONFIG_KEXEC_ZLIB CONFIG_KEXEC_LZMA
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/kexec-tools/Default
|
||||
@ -82,9 +84,6 @@ CONFIGURE_ARGS = \
|
||||
$(if $(CONFIG_KEXEC_LZMA),--with,--without)-lzma \
|
||||
TARGET_LD="$(TARGET_CROSS)ld"
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
CONFIGURE_VARS += \
|
||||
BUILD_CC="$(HOSTCC)" \
|
||||
TARGET_CC="$(TARGET_CC)"
|
||||
|
@ -26,6 +26,8 @@ PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_PACKAGE_libevent2-pthreads \
|
||||
CONFIG_PACKAGE_libevent2-mbedtls
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
@ -112,8 +114,8 @@ define Package/libevent2-pthreads/description
|
||||
threading & locking.
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += $(FPIC) -ffunction-sections -fdata-sections -flto
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -flto
|
||||
TARGET_CFLAGS += $(FPIC) -flto
|
||||
TARGET_LDFLAGS += -Wl,--as-needed -flto
|
||||
|
||||
CMAKE_OPTIONS += \
|
||||
-DEVENT__DISABLE_BENCHMARK:BOOL=ON \
|
||||
|
@ -20,6 +20,8 @@ PKG_CPE_ID:=cpe:/a:libnl_project:libnl
|
||||
PKG_INSTALL:=1
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/libnl/default
|
||||
@ -80,7 +82,7 @@ define Package/libnl/description
|
||||
message construction and parsing, object caching system, etc.
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections $(FPIC)
|
||||
TARGET_CFLAGS += $(FPIC)
|
||||
|
||||
CONFIGURE_ARGS += \
|
||||
--disable-debug
|
||||
|
@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=mbedtls
|
||||
PKG_VERSION:=2.28.2
|
||||
PKG_RELEASE:=2
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
PKG_BUILD_FLAGS:=no-mips16 gc-sections
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/ARMmbed/mbedtls/tar.gz/v$(PKG_VERSION)?
|
||||
@ -121,7 +121,6 @@ This package contains mbedtls helper programs for private key and
|
||||
CSR generation (gen_key, cert_req)
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections
|
||||
TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS))
|
||||
|
||||
CMAKE_OPTIONS += \
|
||||
|
@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=openssl
|
||||
PKG_VERSION:=3.0.8
|
||||
PKG_RELEASE:=4
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
PKG_BUILD_FLAGS:=no-mips16 gc-sections
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
@ -339,8 +339,7 @@ define Build/Configure
|
||||
)
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += $(FPIC) -ffunction-sections -fdata-sections
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
TARGET_CFLAGS += $(FPIC)
|
||||
|
||||
define Build/Compile
|
||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
||||
|
@ -21,6 +21,8 @@ PKG_LICENSE:=ISC
|
||||
|
||||
PKG_CONFIG_DEPENDS := CONFIG_IPV6
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
@ -42,8 +44,8 @@ define Package/firewall/conffiles
|
||||
/etc/firewall.user
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections -flto
|
||||
TARGET_CFLAGS += -flto
|
||||
TARGET_LDFLAGS += -flto
|
||||
CMAKE_OPTIONS += $(if $(CONFIG_IPV6),,-DDISABLE_IPV6=1)
|
||||
|
||||
define Package/firewall/install
|
||||
|
@ -23,7 +23,7 @@ PKG_CPE_ID:=cpe:/a:matt_johnston:dropbear_ssh_server
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_ASLR_PIE_REGULAR:=1
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
PKG_BUILD_FLAGS:=no-mips16 gc-sections
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
@ -142,8 +142,8 @@ DB_OPT_CONFIG = \
|
||||
DROPBEAR_SVR_AGENTFWD|CONFIG_DROPBEAR_AGENTFORWARD|1|0 \
|
||||
|
||||
|
||||
TARGET_CFLAGS += -DARGTYPE=3 -ffunction-sections -fdata-sections -flto
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections -flto=jobserver
|
||||
TARGET_CFLAGS += -DARGTYPE=3 -flto
|
||||
TARGET_LDFLAGS += -flto=jobserver
|
||||
|
||||
db_opt_add =echo '\#define $(1) $(2)' >> $(PKG_BUILD_DIR)/localoptions.h
|
||||
db_opt_replace =$(ESED) 's,^(\#define $(1)) .*$$$$,\1 $(2),g' $(PKG_BUILD_DIR)/sysoptions.h
|
||||
|
@ -32,6 +32,8 @@ PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_DRIVER_11AX_SUPPORT \
|
||||
CONFIG_WPA_ENABLE_WEP
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
EAPOL_TEST_PROVIDERS:=eapol-test eapol-test-openssl eapol-test-wolfssl
|
||||
|
||||
SUPPLICANT_PROVIDERS:=
|
||||
@ -585,8 +587,8 @@ TARGET_CPPFLAGS := \
|
||||
-D_GNU_SOURCE \
|
||||
$(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections -flto=jobserver -fuse-linker-plugin -lubox -lubus
|
||||
TARGET_CFLAGS += -flto
|
||||
TARGET_LDFLAGS += -flto=jobserver -fuse-linker-plugin -lubox -lubus
|
||||
|
||||
ifdef CONFIG_PACKAGE_kmod-cfg80211
|
||||
TARGET_LDFLAGS += -lm -lnl-tiny
|
||||
|
@ -26,6 +26,7 @@ PKG_VERSION:=$(PKG_RELEASE_VERSION).git-$(PKG_SOURCE_DATE)
|
||||
PKG_BUILD_DEPENDS:=libpcap
|
||||
|
||||
PKG_ASLR_PIE_REGULAR:=1
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
|
||||
@ -192,8 +193,8 @@ $(call Build/Configure/Default,, \
|
||||
$(PKG_BUILD_DIR)/pppd/plugins/pppoatm/linux/
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections -flto -fuse-linker-plugin
|
||||
TARGET_CFLAGS += -flto
|
||||
TARGET_LDFLAGS += -flto -fuse-linker-plugin
|
||||
|
||||
MAKE_FLAGS += COPTS="$(TARGET_CFLAGS)" \
|
||||
PRECOMPILED_FILTER=1 \
|
||||
|
@ -19,6 +19,8 @@ PKG_BUILD_DEPENDS:=iptables
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_CPE_ID:=cpe:/a:iproute2_project:iproute2
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
@ -171,8 +173,8 @@ define Build/Configure
|
||||
> $(PKG_BUILD_DIR)/include/SNAPSHOT.h
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections -Wl,--as-needed
|
||||
TARGET_CFLAGS += -flto
|
||||
TARGET_LDFLAGS += -Wl,--as-needed
|
||||
TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
|
||||
|
||||
MAKE_FLAGS += \
|
||||
|
@ -20,6 +20,7 @@ PKG_FIXUP:=autoreconf
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
PKG_INSTALL:=1
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_CPE_ID:=cpe:/a:netfilter_core_team:iptables
|
||||
@ -591,12 +592,8 @@ TARGET_CPPFLAGS := \
|
||||
TARGET_CFLAGS += \
|
||||
-I$(PKG_BUILD_DIR)/include \
|
||||
-I$(LINUX_DIR)/user_headers/include \
|
||||
-ffunction-sections -fdata-sections \
|
||||
-DNO_LEGACY
|
||||
|
||||
TARGET_LDFLAGS += \
|
||||
-Wl,--gc-sections
|
||||
|
||||
CONFIGURE_ARGS += \
|
||||
--enable-shared \
|
||||
--enable-static \
|
||||
|
@ -18,6 +18,8 @@ PKG_HASH:=f167bbe947dd53bb9ebc0c1dcef5db6ad73ac1d6084f2c6f9376c5c360cc4d4e
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/iw
|
||||
@ -55,8 +57,8 @@ ifeq ($(BUILD_VARIANT),full)
|
||||
endif
|
||||
|
||||
MAKE_FLAGS += \
|
||||
CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -ffunction-sections -fdata-sections" \
|
||||
LDFLAGS="$(TARGET_LDFLAGS) -Wl,--gc-sections -flto" \
|
||||
CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
|
||||
LDFLAGS="$(TARGET_LDFLAGS) -flto" \
|
||||
NL1FOUND="" NL2FOUND=Y \
|
||||
NLLIBNAME="libnl-tiny" \
|
||||
LIBS="-lm -lnl-tiny" \
|
||||
|
@ -20,6 +20,7 @@ PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_CPE_ID:=cpe:/a:tcpdump:tcpdump
|
||||
|
||||
PKG_INSTALL:=1
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@ -48,9 +49,6 @@ CONFIGURE_ARGS += \
|
||||
--without-crypto \
|
||||
$(call autoconf_bool,CONFIG_IPV6,ipv6)
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
ifeq ($(BUILD_VARIANT),mini)
|
||||
TARGET_CFLAGS += -DTCPDUMP_MINI
|
||||
CONFIGURE_ARGS += --disable-smb
|
||||
|
@ -14,6 +14,7 @@ PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
@ -32,9 +33,7 @@ define Package/umbim/description
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += \
|
||||
-I$(STAGING_DIR)/usr/include -ffunction-sections -fdata-sections
|
||||
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
-I$(STAGING_DIR)/usr/include
|
||||
|
||||
define Package/umbim/install
|
||||
$(INSTALL_DIR) $(1)/sbin
|
||||
|
@ -14,6 +14,7 @@ PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
@ -33,13 +34,9 @@ endef
|
||||
|
||||
TARGET_CFLAGS += \
|
||||
-I$(STAGING_DIR)/usr/include \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-Wno-error=dangling-pointer \
|
||||
-Wno-error=maybe-uninitialized
|
||||
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
CMAKE_OPTIONS += \
|
||||
-DDEBUG=1
|
||||
|
||||
|
@ -28,6 +28,8 @@ PKG_CONFIG_DEPENDS += \
|
||||
|
||||
HOST_BUILD_DEPENDS:=libubox/host
|
||||
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
@ -57,7 +59,6 @@ define Package/opkg/conffiles
|
||||
/etc/opkg/customfeeds.conf
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections
|
||||
EXTRA_CFLAGS += $(TARGET_CPPFLAGS)
|
||||
|
||||
CMAKE_OPTIONS += \
|
||||
|
@ -23,6 +23,7 @@ PKG_BUILD_DEPENDS:=util-linux e2fsprogs/host
|
||||
PKG_INSTALL:=1
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
@ -142,7 +143,7 @@ $(call Package/e2fsprogs)
|
||||
DEPENDS:= +e2fsprogs
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += $(FPIC) -ffunction-sections -fdata-sections -flto
|
||||
TARGET_CFLAGS += $(FPIC) -flto
|
||||
|
||||
TARGET_LDFLAGS += -flto
|
||||
|
||||
@ -171,7 +172,6 @@ define Build/Compile
|
||||
V=$(if $(findstring c,$(OPENWRT_VERBOSE)),1,) \
|
||||
subst
|
||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
||||
LDFLAGS=-Wl,--gc-sections \
|
||||
BUILDCC="$(HOSTCC)" \
|
||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
||||
ELF_OTHER_LIBS="$(TARGET_LDFLAGS) -luuid" \
|
||||
|
@ -19,6 +19,7 @@ PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_CPE_ID:=cpe:/a:mdadm_project:mdadm
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -43,7 +44,6 @@ define Package/mdadm/conffiles
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += \
|
||||
-ffunction-sections -fdata-sections \
|
||||
-DHAVE_STDINT_H -DNO_COROSYNC -DNO_DLM -DUSE_PTHREADS \
|
||||
-DCONFFILE='\"/var/etc/mdadm.conf\"' \
|
||||
-DMAP_DIR='\"/var/run/mdadm\"' \
|
||||
@ -53,8 +53,6 @@ TARGET_CFLAGS += \
|
||||
|
||||
TARGET_CXFLAGS = -DNO_LIBUDEV
|
||||
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
MAKE_FLAGS += \
|
||||
CHECK_RUN_DIR=0 \
|
||||
CXFLAGS="$(TARGET_CXFLAGS)"
|
||||
|
@ -19,6 +19,7 @@ PKG_INSTALL:=1
|
||||
PKG_FIXUP:=autoreconf
|
||||
|
||||
PKG_FLAGS:=nonshared
|
||||
PKG_BUILD_FLAGS:=gc-sections
|
||||
|
||||
PKG_BUILD_DEPENDS:=util-linux
|
||||
|
||||
@ -64,9 +65,6 @@ CONFIGURE_ARGS += \
|
||||
--without-zstd \
|
||||
--without-lzo
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
define Package/ubi-utils/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) \
|
||||
|
Loading…
Reference in New Issue
Block a user