integrate mklibs.py support into the build process

SVN-Revision: 17173
v19.07.3_mercusys_ac12_duma
Felix Fietkau 15 years ago
parent d9f9d74f69
commit b1a2f4b2b8

@ -126,6 +126,14 @@ choice
endchoice endchoice
config USE_MKLIBS
bool "Strip unnecessary functions from libraries"
help
Reduces libraries to only those functions that are necessary for using all
selected packages (including those selected as <M>)
Note that this will make the system libraries incompatible with most of the packages
that are not selected during the build process
comment "Package build options" comment "Package build options"
config DEBUG config DEBUG

@ -25,6 +25,40 @@ $(curdir)/install:=$(curdir)/install-cleanup
$(curdir)/cleanup: $(TMP_DIR)/.build $(curdir)/cleanup: $(TMP_DIR)/.build
rm -rf $(TARGET_DIR) $(STAGING_DIR_ROOT) rm -rf $(TARGET_DIR) $(STAGING_DIR_ROOT)
ifdef CONFIG_USE_MKLIBS
define mklibs
rm -rf $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-out
# first find all programs and add them to the mklibs list
find $(STAGING_DIR_ROOT) -type f -perm +100 -exec \
file -r -N -F '' {} + | \
awk ' /executable.*dynamically/ { print $$1 }' > $(TMP_DIR)/mklibs-progs
# find all loadable objects that are not regular libraries and add them to the list as well
find $(STAGING_DIR_ROOT) -type f -name \*.so\* -exec \
file -r -N -F '' {} + | \
awk ' /shared object/ { print $$1 }' >> $(TMP_DIR)/mklibs-progs
mkdir -p $(TMP_DIR)/mklibs-out
$(STAGING_DIR_HOST)/bin/mklibs.py -D -v \
-d $(TMP_DIR)/mklibs-out \
--sysroot $(STAGING_DIR_ROOT) \
-L /lib \
-L /usr/lib \
--ldlib $(patsubst $(STAGING_DIR_ROOT)/%,/%,$(firstword $(wildcard \
$(foreach name,ld-uClibc.so.* ld-linux.so.*, \
$(STAGING_DIR_ROOT)/lib/$(name) \
)))) \
--target $(REAL_GNU_TARGET_NAME) \
`cat $(TMP_DIR)/mklibs-progs` 2>&1
$(RSTRIP) $(TMP_DIR)/mklibs-out
for lib in `ls $(TMP_DIR)/mklibs-out/*.so.* 2>/dev/null`; do \
LIB="$${lib##*/}"; \
DEST="`ls "$(TARGET_DIR)/lib/$$LIB" "$(TARGET_DIR)/usr/lib/$$LIB" 2>/dev/null`"; \
[ -n "$$DEST" ] || continue; \
echo "Copying stripped library $$lib to $$DEST"; \
cp "$$lib" "$$DEST" || exit 1; \
done
endef
endif
$(curdir)/rootfs-prepare: $(TMP_DIR)/.build $(curdir)/rootfs-prepare: $(TMP_DIR)/.build
@-$(MAKE) package/preconfig @-$(MAKE) package/preconfig
@if [ -d $(TOPDIR)/files ]; then \ @if [ -d $(TOPDIR)/files ]; then \
@ -42,6 +76,7 @@ $(curdir)/rootfs-prepare: $(TMP_DIR)/.build
@-find $(TARGET_DIR) -name .svn | $(XARGS) rm -rf @-find $(TARGET_DIR) -name .svn | $(XARGS) rm -rf
@-find $(TARGET_DIR) -name '.#*' | $(XARGS) rm -f @-find $(TARGET_DIR) -name '.#*' | $(XARGS) rm -f
$(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/ipkg) $(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/ipkg)
$(call mklibs)
$(curdir)/index: FORCE $(curdir)/index: FORCE
@(cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . > Packages && \ @(cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . > Packages && \

Loading…
Cancel
Save