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 | ( cd $(TOPDIR)/files; find -type f ) | \ |
68 | ( cd $(TARGET_DIR); while :; do \ |
69 | read FILE; \ |
70 | [ -z "$$FILE" ] && break; \ |
71 | [ -L "$$FILE" ] || continue; \ |
72 | echo "Removing symlink $(TARGET_DIR)/$$FILE"; \ |
73 | rm -f "$$FILE"; \ |
74 | done; ); \ |
75 | $(CP) $(TOPDIR)/files/. $(TARGET_DIR); \ |
76 | fi |
77 | @mkdir -p $(TARGET_DIR)/etc/rc.d |
78 | @( \ |
79 | cd $(TARGET_DIR); \ |
80 | for script in ./etc/init.d/*; do \ |
81 | grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \ |
82 | IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) ./etc/rc.common $$script enable; \ |
83 | done || true \ |
84 | ) |
85 | @-find $(TARGET_DIR) -name CVS | $(XARGS) rm -rf |
86 | @-find $(TARGET_DIR) -name .svn | $(XARGS) rm -rf |
87 | @-find $(TARGET_DIR) -name '.#*' | $(XARGS) rm -f |
88 | $(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/opkg) |
89 | $(call mklibs) |
90 | |
91 | $(curdir)/index: FORCE |
92 | @(cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . > Packages && \ |
93 | gzip -9c Packages > Packages.gz \ |
94 | ) |
95 | |
96 | $(curdir)/flags-install:= -j1 |
97 | |
98 | $(eval $(call stampfile,$(curdir),package,prereq,.config)) |
99 | $(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build)) |
100 | $(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build)) |
101 | $(eval $(call stampfile,$(curdir),package,install,$(TMP_DIR)/.build)) |
102 | $(eval $(call stampfile,$(curdir),package,rootfs-prepare,$(TMP_DIR)/.build)) |
103 | |
104 | $(eval $(call subdir,$(curdir))) |
105 | |