English Language flag
// Log In
// CVSweb
Project: FreeWRT
// Summary // Activity // Search // Tracker // Lists // News // SCM // Wiki

SCM Repository

ViewVC logotype

Contents of /branches/common-nfo/mk/package.mk

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3427 - (show annotations) (download)
Wed Aug 8 11:08:41 2007 UTC (6 years, 6 months ago) by tg
File size: 6052 byte(s)
merge in trunk rev. 3426
1 # $FreeWRT$
2 #-
3 # This file is part of the FreeWRT project. FreeWRT is copyrighted
4 # material, please see the LICENCE file in the top-level directory
5 # or at http://www.freewrt.org/licence for details.
6
7 # BSD-style
8 #all: build
9 # same as recursive-descend
10 all: build-all-ipkgs
11
12 TCFLAGS:= ${TARGET_CFLAGS}
13 TCXXFLAGS:= ${TARGET_CFLAGS}
14 TCPPFLAGS:= ${TARGET_CPPFLAGS} -DNDEBUG
15 TLDFLAGS:= ${TARGET_LDFLAGS} -Wl,-rpath -Wl,/usr/lib \
16 -Wl,-rpath-link -Wl,${STAGING_DIR}/usr/lib \
17 -L${STAGING_DIR}/lib -L${STAGING_DIR}/usr/lib
18 ifeq ($(FWRT_IPV6),y)
19 CONFIGURE_ARGS+= --enable-ipv6
20 else
21 CONFIGURE_ARGS+= --disable-ipv6
22 endif
23 CONFIGURE_ENV+= ${TARGET_CONFIGURE_OPTS} \
24 ${HOST_CONFIGURE_OPTS} \
25 CC='${TARGET_CC}' CXX='${TARGET_CXX}' \
26 CFLAGS='$(strip ${TCFLAGS})' \
27 CXXFLAGS='$(strip ${TCXXFLAGS})' \
28 CPPFLAGS='$(strip ${TCPPFLAGS})' \
29 LDFLAGS='$(strip ${TLDFLAGS})' \
30 PKG_CONFIG_PATH='${STAGING_DIR}/usr/lib/pkgconfig' \
31 ac_cv_func_realloc_0_nonnull=yes \
32 ac_cv_func_malloc_0_nonnull=yes
33 MAKE_FILE?= Makefile
34 # this is environment for 'make all' and 'make install'
35 MAKE_ENV?=
36 # this is arguments for 'make all' and 'make install'
37 XAKE_FLAGS?=
38 # this is arguments for 'make all' ONLY
39 MAKE_FLAGS?=
40 # this is arguments for 'make install' ONLY
41 FAKE_FLAGS?=
42 ALL_TARGET?= all
43 INSTALL_TARGET?= install
44 MAKE_ENV+= PATH='${TARGET_PATH}' \
45 ${HOST_CONFIGURE_OPTS} \
46 WRKDIR='${WRKDIR}' WRKDIST='${WRKDIST}' \
47 WRKSRC='${WRKSRC}' WRKBUILD='${WRKBUILD}' \
48 CC='${TARGET_CC}' CXX='${TARGET_CXX}' \
49 AR='${TARGET_CROSS}ar' RANLIB='${TARGET_CROSS}ranlib' \
50 NM='${TARGET_CROSS}nm' \
51 CFLAGS='$(strip ${TCFLAGS})' \
52 CXXFLAGS='$(strip ${TCXXFLAGS})' \
53 CPPFLAGS='$(strip ${TCPPFLAGS})' \
54 LDFLAGS='$(strip ${TLDFLAGS})'
55 MAKE_FLAGS+= ${XAKE_FLAGS}
56 FAKE_FLAGS+= ${XAKE_FLAGS}
57
58 ifeq ($(strip ${WRKDIR_BSD}),)
59 WRKDIR_BASE:= ${BUILD_DIR}
60 else
61 WRKDIR_BASE:= $(shell pwd)
62 endif
63
64 _EXTRACT_COOKIE= ${WRKDIST}/.extract_done
65 _PATCH_COOKIE= ${WRKDIST}/.prepared
66 _CONFIGURE_COOKIE= ${WRKBUILD}/.configure_done
67 _BUILD_COOKIE= ${WRKBUILD}/.build_done
68 _FAKE_COOKIE= ${WRKINST}/.fake_done
69 _IPKGS_COOKIE= ${PACKAGE_DIR}/.stamps/${PKG_NAME}${PKG_VERSION}-${PKG_RELEASE}
70
71 _IN_PACKAGE:= 1
72 include ${TOPDIR}/mk/buildhlp.mk
73 -include info.mk
74
75 # defined in buildhlp.mk ('extract' can fail, use 'patch' then)
76 extract: ${_EXTRACT_COOKIE}
77 patch: ${_PATCH_COOKIE}
78
79 # defined below (will be moved to pkg-bottom.mk!)
80 configure: ${_CONFIGURE_COOKIE}
81 build: ${_BUILD_COOKIE}
82 fake: ${_FAKE_COOKIE}
83
84 # our recursive build entry point
85 build-all-ipkgs: ${_IPKGS_COOKIE}
86
87 define PKG_template
88 IPKG_$(1)= $(PACKAGE_DIR)/$(2)_$(3)_$(4).ipk
89 IDIR_$(1)= $(WRKDIR)/fake-${ARCH}/ipkg-$(2)
90 FWWIF_IDIR?= $${IDIR_$(1)}
91 ifneq (${FWRT_PACKAGE_$(1)}${DEVELOPER},)
92 ALL_IPKGS+= $$(IPKG_$(1))
93 ALL_IDIRS+= $${IDIR_$(1)}
94 endif
95 INFO_$(1)= $(IPKG_STATE_DIR)/info/$(2).list
96
97 ifeq ($(FWRT_PACKAGE_$(1)),y)
98 install-targets: $$(INFO_$(1))
99 endif
100
101 IDEPEND_$(1):= $$(strip $(5))
102
103 _ALL_CONTROLS+= $$(IDIR_$(1))/CONTROL/control
104 ICONTROL_$(1)?= ipkg/$(2).control
105 $$(IDIR_$(1))/CONTROL/control: ${_PATCH_COOKIE}
106 ${MBSH} ${SCRIPT_DIR}/make-ipkg-dir.sh $${IDIR_$(1)} $${ICONTROL_$(1)} $(3) $(4)
107 adeps='$$(strip $${IDEPEND_$(1)})'; if [[ -n $$$$adeps ]]; then \
108 comma=; \
109 deps=; \
110 last=; \
111 for dep in $$$$adeps; do \
112 if [[ $$$$last = kernel && $$$$dep = \(* ]]; then \
113 deps="$$$$deps $$$$dep"; \
114 else \
115 deps="$$$$deps$$$$comma$$$$dep"; \
116 fi; \
117 comma=", "; \
118 last=$$$$dep; \
119 done; \
120 echo "Depends: $$$$deps" >>$${IDIR_$(1)}/CONTROL/control; \
121 fi
122 for file in conffiles preinst postinst prerm postrm; do \
123 [ ! -f ./ipkg/$(2).$$$$file ] || cp ./ipkg/$(2).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file; \
124 done
125
126 $$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $${_FAKE_COOKIE}
127 $${RSTRIP} $${IDIR_$(1)}
128 cd $${IDIR_$(1)}; for script in etc/init.d/*; do \
129 [[ -e $$$$script ]] || continue; \
130 chmod 0755 "$$$$script"; \
131 done
132 @mkdir -p $${PACKAGE_DIR} '$${STAGING_PARENT}/pkg' \
133 '$${STAGING_DIR}/scripts'
134 @if test -s '$${STAGING_PARENT}/pkg/$(1)'; then \
135 cd '$${STAGING_DIR}'; \
136 while read fn; do \
137 rm -f "$$$$fn"; \
138 done <'$${STAGING_PARENT}/pkg/$(1)'; \
139 fi
140 @rm -f '$${STAGING_PARENT}/pkg/$(1)'
141 @cd $${IDIR_$(1)}; \
142 x=$$$$(find tmp var 2>/dev/null); if [[ -n $$$$x ]]; then \
143 echo 'WARNING: $${IPKG_$(1)} installs files into a' \
144 'ramdisk location:' >&2; \
145 echo "$$$$x" | sed 's/^/- /' >&2; \
146 fi; \
147 find lib \( -name lib\*.so\* -o -name lib\*.a \) \
148 -exec echo 'WARNING: $${IPKG_$(1)} installs files in /lib -' \
149 ' fix this!' >&2 \; -quit 2>/dev/null; \
150 find usr ! -type d 2>/dev/null | \
151 grep -v -e '^usr/share' -e '^usr/man' -e '^usr/info' | \
152 tee '$${STAGING_PARENT}/pkg/$(1)' | \
153 cpio -apdlmu '$${STAGING_DIR}'
154 @cd '$${STAGING_DIR}'; grep 'usr/lib/.*\.la$$$$' \
155 '$${STAGING_PARENT}/pkg/$(1)' | while read fn; do \
156 chmod u+w $$$$fn; \
157 printf '%s\nwq\n' '/^libdir='\''*/s##&${STAGING_DIR}#' | \
158 ed -s $$$$fn; \
159 done; grep 'usr/s*bin/' '$${STAGING_PARENT}/pkg/$(1)' | \
160 while read fn; do \
161 b="$$$$(dd if="$$$$fn" bs=2 count=1 2>/dev/null)"; \
162 [[ $$$$b = '#!' ]] || continue; \
163 cp "$$$$fn" scripts/; \
164 echo "scripts/$$$$(basename "$$$$fn")" \
165 >>'$${STAGING_PARENT}/pkg/$(1)'; \
166 done
167 $${IPKG_BUILD} $${IDIR_$(1)} $${PACKAGE_DIR}
168
169 clean-targets: clean-dev-$(1)
170
171 clean-dev-$(1):
172 @if test -s '$${STAGING_PARENT}/pkg/$(1)'; then \
173 cd '$${STAGING_DIR}'; \
174 while read fn; do \
175 rm -f "$$$$fn"; \
176 done <'$${STAGING_PARENT}/pkg/$(1)'; \
177 fi
178 @rm -f '$${STAGING_PARENT}/pkg/$(1)'
179
180 $$(INFO_$(1)): $$(IPKG_$(1))
181 $(IPKG) install $$(IPKG_$(1))
182 endef
183
184 install-targets:
185 install:
186 @$(CMD_TRACE) "installing... "
187 @$(MAKE) install-targets $(MAKE_TRACE)
188
189 clean-targets:
190 clean:
191 @$(CMD_TRACE) "cleaning... "
192 @$(MAKE) clean-targets $(MAKE_TRACE)
193 rm -rf ${WRKDIR} ${ALL_IPKGS} ${PACKAGE_DIR}/.stamps/${PKG_NAME}*
194
195 distclean: clean
196 rm -f ${FULLDISTFILES}
197
198 .PHONY: all refetch extract patch configure \
199 build fake package install clean build-all-ipkgs

root@freewrt.org:443
ViewVC Help
Powered by ViewVC 1.1.20