1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-27 16:43:09 +02:00

integrate mklibs.py support into the build process

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17173 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nbd 2009-08-08 02:25:03 +00:00
parent 479aa972ad
commit c18a2411a7
2 changed files with 43 additions and 0 deletions

View File

@ -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

View File

@ -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 && \