1 | # |
2 | # Copyright (C) 2006-2010 OpenWrt.org |
3 | # |
4 | # This is free software, licensed under the GNU General Public License v2. |
5 | # See /LICENSE for more information. |
6 | # |
7 | |
8 | curdir:=package |
9 | |
10 | -include $(TMP_DIR)/.packagedeps |
11 | $(curdir)/builddirs:=$(sort $(package-) $(package-y) $(package-m)) |
12 | ifeq ($(SDK),1) |
13 | $(curdir)/builddirs-install:=. |
14 | else |
15 | $(curdir)/builddirs-default:=. $(sort $(package-y) $(package-m)) |
16 | $(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m)) |
17 | $(curdir)/builddirs-install:=. $(sort $(package-y)) |
18 | endif |
19 | ifneq ($(IGNORE_ERRORS),) |
20 | $(curdir)/builddirs-ignore-compile:= $(if $(filter n m y, $(IGNORE_ERRORS)),$(foreach m,$(IGNORE_ERRORS),$(package-$(subst n,,$(m)))),$(package-m) $(package-)) |
21 | endif |
22 | |
23 | $(curdir)/install:=$(curdir)/install-cleanup |
24 | |
25 | $(curdir)/cleanup: $(TMP_DIR)/.build |
26 | - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755 |
27 | rm -rf $(TARGET_DIR) $(STAGING_DIR_ROOT) |
28 | |
29 | ifdef CONFIG_USE_MKLIBS |
30 | define mklibs |
31 | rm -rf $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-out |
32 | # first find all programs and add them to the mklibs list |
33 | find $(STAGING_DIR_ROOT) -type f -perm +100 -exec \ |
34 | file -r -N -F '' {} + | \ |
35 | awk ' /executable.*dynamically/ { print $$1 }' > $(TMP_DIR)/mklibs-progs |
36 | # find all loadable objects that are not regular libraries and add them to the list as well |
37 | find $(STAGING_DIR_ROOT) -type f -name \*.so\* -exec \ |
38 | file -r -N -F '' {} + | \ |
39 | awk ' /shared object/ { print $$1 }' >> $(TMP_DIR)/mklibs-progs |
40 | mkdir -p $(TMP_DIR)/mklibs-out |
41 | $(STAGING_DIR_HOST)/bin/mklibs.py -D \ |
42 | -d $(TMP_DIR)/mklibs-out \ |
43 | --sysroot $(STAGING_DIR_ROOT) \ |
44 | -L /lib \ |
45 | -L /usr/lib \ |
46 | -L /usr/lib/ebtables \ |
47 | --ldlib $(patsubst $(STAGING_DIR_ROOT)/%,/%,$(firstword $(wildcard \ |
48 | $(foreach name,ld-uClibc.so.* ld-linux.so.* ld-*.so, \ |
49 | $(STAGING_DIR_ROOT)/lib/$(name) \ |
50 | )))) \ |
51 | --target $(REAL_GNU_TARGET_NAME) \ |
52 | `cat $(TMP_DIR)/mklibs-progs` 2>&1 |
53 | $(RSTRIP) $(TMP_DIR)/mklibs-out |
54 | for lib in `ls $(TMP_DIR)/mklibs-out/*.so.* 2>/dev/null`; do \ |
55 | LIB="$${lib##*/}"; \ |
56 | DEST="`ls "$(TARGET_DIR)/lib/$$LIB" "$(TARGET_DIR)/usr/lib/$$LIB" 2>/dev/null`"; \ |
57 | [ -n "$$DEST" ] || continue; \ |
58 | echo "Copying stripped library $$lib to $$DEST"; \ |
59 | cp "$$lib" "$$DEST" || exit 1; \ |
60 | done |
61 | endef |
62 | endif |
63 | |
64 | $(curdir)/rootfs-prepare: $(TMP_DIR)/.build |
65 | @-$(MAKE) package/preconfig |
66 | @if [ -d $(TOPDIR)/files ]; then \ |
67 | $(CP) $(TOPDIR)/files/. $(TARGET_DIR); \ |
68 | fi |
69 | @mkdir -p $(TARGET_DIR)/etc/rc.d |
70 | @( \ |
71 | cd $(TARGET_DIR); \ |
72 | for script in ./etc/init.d/*; do \ |
73 | grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \ |
74 | IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) ./etc/rc.common $$script enable; \ |
75 | done || true \ |
76 | ) |
77 | @-find $(TARGET_DIR) -name CVS | $(XARGS) rm -rf |
78 | @-find $(TARGET_DIR) -name .svn | $(XARGS) rm -rf |
79 | @-find $(TARGET_DIR) -name '.#*' | $(XARGS) rm -f |
80 | $(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/opkg) |
81 | $(call mklibs) |
82 | |
83 | $(curdir)/index: FORCE |
84 | @(cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . > Packages && \ |
85 | gzip -9c Packages > Packages.gz \ |
86 | ) |
87 | |
88 | $(curdir)/flags-install:= -j1 |
89 | |
90 | $(eval $(call stampfile,$(curdir),package,prereq,.config)) |
91 | $(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build)) |
92 | $(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build)) |
93 | $(eval $(call stampfile,$(curdir),package,install,$(TMP_DIR)/.build)) |
94 | $(eval $(call stampfile,$(curdir),package,rootfs-prepare,$(TMP_DIR)/.build)) |
95 | |
96 | $(eval $(call subdir,$(curdir))) |
97 | |