Browse Source

build: add a config knob to enable gc-sections for all packages

This enables the linker's garbage collection for all packages which haven't
opted-out.

Signed-off-by: Andre Heider <[email protected]>
Andre Heider 2 years ago
parent
commit
aef8bab9d7
2 changed files with 9 additions and 1 deletions
  1. 8 0
      config/Config-build.in
  2. 1 1
      include/package.mk

+ 8 - 0
config/Config-build.in

@@ -144,6 +144,14 @@ menu "Global build settings"
 		help
 		  Adds -g3 to the CFLAGS.
 
+	config USE_GC_SECTIONS
+		bool
+		prompt "Dead code and data elimination for all packages (EXPERIMENTAL)"
+		help
+		  Places functions and data items into its own sections to use the linker's
+		  garbage collection capabilites.
+		  Packages can choose to opt-out via setting PKG_BUILD_FLAGS:=no-gc-sections
+
 	config IPV6
 		def_bool y
 

+ 1 - 1
include/package.mk

@@ -51,7 +51,7 @@ ifdef CONFIG_USE_MIPS16
     TARGET_CXXFLAGS += -mips16 -minterlink-mips16
   endif
 endif
-ifeq ($(call pkg_build_flag,gc-sections,0),1)
+ifeq ($(call pkg_build_flag,gc-sections,$(if $(CONFIG_USE_GC_SECTIONS),1,0)),1)
   TARGET_CFLAGS+= -ffunction-sections -fdata-sections
   TARGET_CXXFLAGS+= -ffunction-sections -fdata-sections
   TARGET_LDFLAGS+= -Wl,--gc-sections