1 # This file is part of the OpenADK project. OpenADK is copyrighted
2 # material, please see the LICENCE file in the top-level directory.
6 # does not change CONFIGURE_ARGS in minimal mode
7 ifeq ($(filter minimal
,${CONFIG_STYLE}),)
9 CONFIGURE_ARGS
+= --enable-debug
13 CONFIGURE_ENV
+= GCC_HONOUR_COPTS
=s \
14 PATH
='${TARGET_PATH}' \
15 CONFIG_SHELL
='$(strip ${SHELL})' \
16 CFLAGS
='$(strip ${TARGET_CFLAGS})' \
17 CXXFLAGS
='$(strip ${TARGET_CXXFLAGS})' \
18 CPPFLAGS
='$(strip ${TARGET_CPPFLAGS})' \
19 LDFLAGS
='$(strip ${TARGET_LDFLAGS})' \
20 ${HOST_CONFIGURE_OPTS} \
21 PKG_CONFIG_LIBDIR
='${STAGING_TARGET_DIR}/usr/lib/pkgconfig' \
22 ac_cv_func_realloc_0_nonnull
=yes \
23 ac_cv_func_malloc_0_nonnull
=yes
25 CONFIGURE_ENV
+= ${TARGET_CONFIGURE_OPTS} cross_compiling
=yes
28 CONFIGURE_PROG?
= configure
30 # this is environment for 'make all' and 'make install'
32 # this is arguments for 'make all' and 'make install'
34 # this is arguments for 'make all' ONLY
36 # this is arguments for 'make install' ONLY
39 INSTALL_TARGET?
= install
41 MAKE_ENV
+= $(GCC_CHECK
) \
42 PATH
='${TARGET_PATH}' \
43 WRKDIR
='${WRKDIR}' WRKDIST
='${WRKDIST}' \
44 WRKSRC
='${WRKSRC}' WRKBUILD
='${WRKBUILD}' \
45 CFLAGS
='$(strip ${TARGET_CFLAGS})' \
46 CXXFLAGS
='$(strip ${TARGET_CXXFLAGS})' \
47 CPPFLAGS
='$(strip ${TARGET_CPPFLAGS})' \
48 LDFLAGS
='$(strip ${TARGET_LDFLAGS})' \
49 ${HOST_CONFIGURE_OPTS} \
50 PKG_CONFIG_LIBDIR
='${STAGING_TARGET_DIR}/usr/lib/pkgconfig'
52 MAKE_ENV
+= ${TARGET_CONFIGURE_OPTS}
57 MAKE_FLAGS
+= ${XAKE_FLAGS} V
=1
58 FAKE_FLAGS
+= ${XAKE_FLAGS}
60 ifeq ($(strip ${WRKDIR_BSD}),)
61 WRKDIR_BASE
:= ${BUILD_DIR}
63 WRKDIR_BASE
:= $(shell pwd
)
66 _EXTRACT_COOKIE
= ${WRKDIST}/.extract_done
67 _PATCH_COOKIE
= ${WRKDIST}/.prepared
68 _CONFIGURE_COOKIE
= ${WRKBUILD}/.configure_done
69 _BUILD_COOKIE
= ${WRKBUILD}/.build_done
70 _FAKE_COOKIE
= ${WRKINST}/.fake_done
71 _IPKGS_COOKIE
= ${PACKAGE_DIR}/.stamps
/${PKG_NAME}\x01${PKG_VERSION}-${PKG_RELEASE}
74 include ${TOPDIR}/mk
/buildhlp.mk
76 # defined in buildhlp.mk ('extract' can fail, use 'patch' then)
77 extract
: ${_EXTRACT_COOKIE}
78 patch
: ${_PATCH_COOKIE}
80 # defined below (will be moved to pkg-bottom.mk!)
81 configure
: ${_CONFIGURE_COOKIE}
82 build
: ${_BUILD_COOKIE}
85 @if
[ -f
${TOPDIR}/.rebuild.
${PKG_NAME} ];then \
87 rm -f
${TOPDIR}/.rebuild.
${PKG_NAME}; \
90 # our recursive build entry point
91 build-all-pkgs
: ${_IPKGS_COOKIE}
93 # there are some parameters to the PKG_template function
94 # 1.) Config.in identifier ADK_PACKAGE_$(1)
95 # 2.) name of the package, for single package mostly $(PKG_NAME)
96 # 3.) package version (upstream version) and package release (adk version),
97 # always $(PKG_VERSION)-$(PKG_RELEASE)
98 # 4.) dependencies to other packages, $(PKG_DEPENDS)
99 # 5.) description for the package, $(PKG_DESCR)
100 # 6.) section of the package, $(PKG_SECTION)
101 # 7.) special package options
102 # noscripts -> do not install scripts to $(STAGING_TARGET_DIR)/target/scripts
103 # (needed for example for autoconf/automake)
104 # noremove -> do not remove files from $(STAGING_TARGET_DIR)/target while
105 # cleaning (needed for toolchain packages like glibc/eglibc)
106 # should be package format independent and modular in the future
113 IPKG_
$(1)= $(PACKAGE_DIR
)/$(2)_
$(3)_
${CPU_ARCH}.
${PKG_SUFFIX}
114 IDIR_
$(1)= $(WRKDIR
)/fake-
${CPU_ARCH}/pkg-
$(2)
115 ifneq (${ADK_PACKAGE_
$(1)}${DEVELOPER},)
116 ALL_IPKGS
+= $$(IPKG_
$(1))
117 ALL_IDIRS
+= $${IDIR_
$(1)}
118 ALL_POSTINST
+= $(2)-install
121 INFO_
$(1)= $(PKG_STATE_DIR
)/info/$(2).list
123 ifeq ($(ADK_PACKAGE_
$(1)),y
)
124 install-targets
: $$(INFO_
$(1))
127 IDEPEND_
$(1):= $$(strip $(4))
129 _ALL_CONTROLS
+= $$(IDIR_
$(1))/CONTROL
/control
130 ICONTROL_
$(1)?
= $(WRKDIR
)/.
$(2).control
131 $$(IDIR_
$(1))/CONTROL
/control
: ${_PATCH_COOKIE}
132 @echo
"Package: $$(shell echo $(2) | tr '_' '-')" > $(WRKDIR
)/.
$(2).control
133 @echo
"Section: $(6)" >> $(WRKDIR
)/.
$(2).control
134 @echo
"Description: $(5)" >> $(WRKDIR
)/.
$(2).control
135 ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh
$${IDIR_
$(1)} $${ICONTROL_
$(1)} $(3) ${CPU_ARCH}
136 @adeps
='$$(strip $${IDEPEND_$(1)})'; if
[[ -n
$$$$adeps ]]; then \
140 for dep in
$$$$adeps; do \
141 if
[[ $$$$last = kernel
&& $$$$dep = \
(* ]]; then \
142 deps
="$$$$deps $$$$dep"; \
144 deps
="$$$$deps$$$$comma$$$$dep"; \
149 echo
"Depends: $$$$deps" | tr
'_' '-' >>$${IDIR_
$(1)}/CONTROL
/control
; \
151 @for file in conffiles preinst postinst prerm postrm
; do \
152 [ ! -f .
/files
/$(2).
$$$$file ] || cp .
/files
/$(2).
$$$$file $$(IDIR_
$(1))/CONTROL
/$$$$file; \
155 $$(IPKG_
$(1)): $$(IDIR_
$(1))/CONTROL
/control
$${_FAKE_COOKIE}
157 $${RSTRIP} $${IDIR_
$(1)} $(MAKE_TRACE
)
159 ifeq ($(ADK_DEBUG_STRIP
),y
)
160 $${RSTRIP} $${IDIR_
$(1)} $(MAKE_TRACE
)
162 ifeq (${ADK_LEAVE_ETC_ALONE}$(filter force_etc
,$(7)),y
)
163 -rm -rf
$${IDIR_
$(1)}/etc
165 ifeq (${ADK_INSTALL_PACKAGE_INIT_SCRIPTS},y
)
166 @for file in
$$$$(ls .
/files
/*.init
2>/dev
/null
); do \
167 fname
=$$$$(echo
$$$$file| sed
-e
"s#.*/##" -e
"s#.init##"); \
168 check=$$$$(grep PKG
$$$$file|cut
-d
' ' -f
2); \
169 if
[ "$$$$check" == $(2) ];then \
170 mkdir
-p
$$(IDIR_
$(1))/etc
/init.d
&& cp
$$$$file $$(IDIR_
$(1))/etc
/init.d
/$$$$fname; \
173 @cd
$${IDIR_
$(1)}; for script in etc
/init.d
/*; do \
174 [[ -e
$$$$script ]] || continue
; \
175 chmod
0755 "$$$$script"; \
178 ifneq (${ADK_INSTALL_PACKAGE_NETWORK_SCRIPTS},y
)
179 -rm -rf
$${IDIR_
$(1)}/etc
/network
182 @mkdir
-p
$${PACKAGE_DIR} '$${STAGING_PKG_DIR}' \
183 '$${STAGING_DIR}/scripts'
184 ifeq (,$(filter noremove
,$(7)))
185 @if
test -s
'$${STAGING_PKG_DIR}/$(1)'; then \
186 cd
'$${STAGING_DIR}'; \
189 done
<'$${STAGING_PKG_DIR}/$(1)'; \
192 @
rm -f
'$${STAGING_PKG_DIR}/$(1)'
193 -@cd
$${IDIR_
$(1)}; \
194 x
=$$$$(find tmp var
-mindepth
1 2>/dev
/null
); if
[[ -n
$$$$x ]]; then \
195 echo
'WARNING: $${IPKG_$(1)} installs files into a' \
196 'ramdisk location:' >&2; \
197 echo
"$$$$x" | sed
's/^/- /' >&2; \
199 if
[ "${PKG_NAME}" != "uClibc" -a
"${PKG_NAME}" != "glibc" -a
"${PKG_NAME}" != "eglibc" -a
"${PKG_NAME}" != "libpthread" -a
"${PKG_NAME}" != "libstdcxx" -a
"${PKG_NAME}" != "libgcc" -a
"${PKG_NAME}" != "libthread-db" ];then \
200 find lib \
( -name lib\
*.so\
* -o
-name lib\
*.a \
) \
201 -exec echo
'WARNING: $${IPKG_$(1)} installs files in /lib -' \
202 ' fix this!' >&2 \
; -quit
2>/dev
/null
; fi
; \
203 find usr
! -type d
2>/dev
/null | \
204 grep
-E
-v
-e
'^usr/lib/pkgconfig' -e
'^usr/share' -e
'^usr/doc' -e
'^usr/src' -e
'^usr/man' -e
'^usr/info' -e
'^usr/lib/libc.so' -e
'^usr/bin/[a-z0-9-]+-config' | \
205 tee
'$${STAGING_PKG_DIR}/$(1)' | \
206 $(TOOLS_DIR
)/cpio
-padlmu
'$${STAGING_DIR}'
207 @cd
'$${STAGING_DIR}'; grep
'usr/lib/.*\.la$$$$' \
208 '$${STAGING_PKG_DIR}/$(1)' | while read fn
; do \
210 $(SED
) "s,\(^libdir='\| \|-L\|^dependency_libs='\)/usr/lib,\1$(STAGING_TARGET_DIR)/usr/lib,g" $$$$fn; \
212 ifeq (,$(filter noscripts
,$(7)))
213 @cd
'$${STAGING_TARGET_DIR}'; grep
'usr/s*bin/' \
214 '$${STAGING_PKG_DIR}/$(1)' | \
216 b
="$$$$(dd if="$$$$fn" bs=2 count=1 2>/dev/null)"; \
217 [[ $$$$b = '#!' ]] || continue
; \
218 cp
"$$$$fn" scripts
/; \
219 echo
"scripts/$$$$(basename "$$$$fn")" \
220 >>'$${STAGING_PKG_DIR}/$(1)'; \
223 ifeq (,$(filter libmix
,$(7)))
224 ifeq (,$(filter libonly
,$(7)))
225 $${PKG_BUILD} $${IDIR_
$(1)} $${PACKAGE_DIR} $(MAKE_TRACE
)
229 clean-targets
: clean-dev-
$(1)
232 ifeq (,$(filter noremove
,$(7)))
233 @if
test -s
'$${STAGING_PKG_DIR}/$(1)'; then \
234 cd
'$${STAGING_DIR}'; \
237 done
<'$${STAGING_PKG_DIR}/$(1)'; \
240 rm -f
'$${STAGING_PKG_DIR}/$(1)'
242 $$(INFO_
$(1)): $$(IPKG_
$(1))
243 $(PKG_INSTALL
) $$(IPKG_
$(1))
248 @
$(CMD_TRACE
) "installing... "
249 @
$(MAKE
) install-targets
$(MAKE_TRACE
)
253 @
$(CMD_TRACE
) "cleaning... "
254 @
$(MAKE
) clean-targets
$(MAKE_TRACE
)
255 rm -rf
${WRKDIR} ${ALL_IPKGS} ${PACKAGE_DIR}/.stamps
/${PKG_NAME}\x01*
258 rm -f
${FULLDISTFILES}
260 .PHONY
: all refetch extract patch configure \
261 build rebuild fake package
install clean build-all-pkgs