Commit 2a97045d authored by Thomas De Schampheleire's avatar Thomas De Schampheleire Committed by Peter Korsgaard
Browse files

build: add option to exclude executables/dirs from being stripped



Sometimes it may be desirable to keep debug symbols for some binaries and
libraries on the target. This commit introduces the config option
BR2_STRIP_EXCLUDE_FILES, which is interpreted as a list of such binaries
and libraries, and the option BR2_STRIP_EXCLUDE_DIRS, which indicates
directories excluded from stripping entirely.
These exclusions are passed to the find command in the target-finalize step.

Signed-off-by: default avatarSven Neumann <s.neumann@raumfeld.com>
Signed-off-by: default avatarThomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Acked-by: default avatarArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 75f18de6
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -283,6 +283,25 @@ config BR2_STRIP_none
	  filesystem.
endchoice

config BR2_STRIP_EXCLUDE_FILES
	string "executables that should not be stripped"
	depends on !BR2_STRIP_none
	default ""
	help
	  You may specify a space-separated list of binaries and libraries
	  here that should not be stripped on the target.

config BR2_STRIP_EXCLUDE_DIRS
	string "directories that should be skipped when stripping"
	depends on !BR2_STRIP_none
	default ""
	help
	  You may specify a space-separated list of directories that should
	  be skipped when stripping. Binaries and libraries in these
	  directories will not be touched.
	  The directories should be specified relative to the target directory,
	  without leading slash.

choice
	prompt "gcc optimization level"
	default BR2_OPTIMIZE_S
+8 −2
Original line number Diff line number Diff line
@@ -386,6 +386,13 @@ $(BUILD_DIR)/.root:

$(TARGET_DIR): $(BUILD_DIR)/.root

STRIP_FIND_CMD = find $(TARGET_DIR)
ifneq (,$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS)))
STRIP_FIND_CMD += \( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \) -prune -o
endif
STRIP_FIND_CMD += -type f -perm +111
STRIP_FIND_CMD += -not \( $(call findfileclauses,libthread_db*.so* $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) -print

target-finalize:
ifeq ($(BR2_HAVE_DEVFILES),y)
	( support/scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
@@ -410,8 +417,7 @@ endif
ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY),y)
	find $(TARGET_DIR)/usr/lib/ -name '*.py' -print0 | xargs -0 rm -f
endif
	find $(TARGET_DIR) -type f -perm +111 '!' -name 'libthread_db*.so*' | \
		xargs $(STRIPCMD) 2>/dev/null || true
	$(STRIP_FIND_CMD) | xargs $(STRIPCMD) 2>/dev/null || true
	find $(TARGET_DIR)/lib/modules -type f -name '*.ko' | \
		xargs -r $(KSTRIPCMD) || true