1 # Makefile for the NSLU2 Linux development system
2 # Licensed under the GPL v2 or later
4 HOST_MACHINE
:=$(shell uname
-m | sed \
5 -e
's/i[3-9]86/i386/' \
7 -e
's/armv5teb/armeb/' \
11 BITBAKE_VERSION
= tags/bitbake-1.8
.10
17 prefetch
: prefetch-unslung prefetch-slugos prefetch-angstrom prefetch-optware
21 [ ! -e unslung
] ||
${MAKE} unslung
22 [ ! -e slugos
] ||
${MAKE} slugosbe slugosle
23 [ ! -e optware
] ||
${MAKE} optware
24 [ ! -e openwrt
] ||
${MAKE} openwrt
25 [ ! -e angstrom
] ||
${MAKE} angstrombe angstromle
28 ifneq ($(HOST_MACHINE
),armeb
)
29 setup
: setup-common setup-bitbake setup-openembedded setup-unslung \
30 setup-slugos setup-angstrom setup-optware setup-openwrt
32 setup
: setup-common setup-optware
35 .PHONY
: setup-developer
36 setup-developer
: setup-common setup-bitbake setup-openembedded setup-optware-developer setup-openwrt-developer
39 ifneq ($(HOST_MACHINE
),armeb
)
40 update
: update-common update-bitbake update-openembedded update-optware update-openwrt
42 update
: update-common update-optware
46 status
: status-common status-bitbake status-openembedded status-optware status-openwrt
49 clobber: clobber-unslung clobber-slugos clobber-angstrom \
50 clobber-optware clobber-openwrt
53 distclean: distclean-common distclean-bitbake distclean-openembedded \
54 distclean-unslung distclean-slugos distclean-angstrom \
55 distclean-optware distclean-releases distclean-openwrt
57 .PHONY
: prefetch-optware
60 for f in optware
/platforms
/packages-
*.mk
; do \
61 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
62 [ ! -e optware
/$$target ] || make prefetch-optware-
$$target ; \
65 .PHONY
: prefetch-optware-
%
66 prefetch-optware-
%: optware
/%/.configured
67 ( cd optware
/$* ; ${MAKE} source
)
69 .PHONY
: prefetch-unslung-
%-beta
70 prefetch-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
71 ( cd releases
/unslung-
$*-beta
; ${MAKE} prefetch
)
74 prefetch-
%: %/.configured bitbake
/.svn
/entries openembedded
/.git
/config
75 ( cd
$* ; ${MAKE} prefetch
)
77 .PHONY
: unslung unslung-image
78 unslung unslung-image
: unslung
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
80 ${MAKE} setup-machine-nslu2be setup-distro-unslung setup-image-unslung-image
; \
83 .PHONY
: slugosbe slugosbe-image
84 slugosbe slugosbe-image
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
86 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image
; \
89 .PHONY
: slugosle slugosle-image
90 slugosle slugosle-image
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
92 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image
; \
95 .PHONY
: angstrombe angstrombe-image
96 angstrombe angstrombe-image
: angstrom
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
98 ${MAKE} setup-machine-ixp4xxbe setup-distro-angstrom-2008.1 setup-image-base-image
; \
101 .PHONY
: angstromle angstromle-image
102 angstromle angstromle-image
: angstrom
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
104 ${MAKE} setup-machine-ixp4xxle setup-distro-angstrom-2008.1 setup-image-base-image
; \
107 .PHONY
: openwrt openwrt-image
108 openwrt openwrt-image
: openwrt
/.svn
/entries
109 ( cd openwrt
; ${MAKE} -k world
)
111 .PHONY
: unslung-packages
112 unslung-packages
: unslung
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
114 ${MAKE} setup-machine-nslu2be setup-distro-unslung setup-image-unslung-image setup-packages-unslung-packages
; \
117 .PHONY
: slugosbe-packages
118 slugosbe-packages
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
120 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
123 .PHONY
: slugosle-packages
124 slugosle-packages
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
126 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
129 .PHONY
: angstrombe-packages
130 angstrombe-packages
: angstrom
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
132 ${MAKE} setup-machine-ixp4xxbe setup-distro-angstrom-2008.1 setup-image-base-image setup-packages-meta-angstrom
; \
135 .PHONY
: angstrombe-packages
136 angstromle-packages
: angstrom
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
138 ${MAKE} setup-machine-ixp4xxle setup-distro-angstrom-2008.1 setup-image-base-image setup-packages-meta-angstrom
; \
141 .PHONY
: openwrt-packages
142 openwrt-packages
: openwrt
/.svn
/entries
143 ( cd openwrt
; ${MAKE} -k world
)
146 %-packages
: %/.configured bitbake
/.svn
/entries openembedded
/.git
/config
147 ( cd
$* ; ${MAKE} -k distro
)
149 .PHONY
: openwrt-index
150 openwrt-index
: openwrt
/.svn
/entries
151 ( cd openwrt
; ${MAKE} -k package
/index
)
154 %-index
: %/.configured bitbake
/.svn
/entries openembedded
/.git
/config
155 ( cd
$* ; ${MAKE} -k index
)
159 [ ! -e optware
] || \
160 for f in optware
/platforms
/packages-
*.mk
; do \
161 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
162 [ ! -e optware
/$$target ] || make optware-
$$target ; \
166 optware-
%: optware
/%/.configured
167 ( cd optware
/$* ; ${MAKE} autoclean
; ${MAKE} -k
)
169 slugosle-
%-beta
: update-slugos-
%-beta build-slugosle-
%-beta
172 slugosbe-
%-beta
: update-slugos-
%-beta build-slugosbe-
%-beta
175 unslung-
%-beta
: update-unslung-
%-beta build-unslung-
%-beta
178 openwrt-
%: update-openwrt-
% build-openwrt-
%
181 # The following two targets are deprecated,
182 # but are preserved for building old releases.
184 debianslug-
%-beta
: update-slugos-
%-beta build-debianslug-
%-beta
187 openslug-
%-beta
: update-slugos-
%-beta build-openslug-
%-beta
190 build-slugosle-
%-beta
: releases
/slugos-
%-beta
/.configured
191 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosle-distro
)
193 build-slugosbe-
%-beta
: releases
/slugos-
%-beta
/.configured
194 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosbe-distro
)
196 build-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
197 ( cd releases
/unslung-
$*-beta
; ${MAKE} -k unslung-distro
)
199 build-openwrt-
%: releases
/openwrt-
%/.configured
200 ( cd releases
/openwrt-
$* ; ${MAKE} -k world package
/index
)
202 # The following two targets are deprecated,
203 # but are preserved for building old releases.
205 build-debianslug-
%-beta
: releases
/slugos-
%-beta
/.configured
206 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k debianslug-distro
)
208 build-openslug-
%-beta
: releases
/slugos-
%-beta
/.configured
209 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k openslug-distro
)
211 OE_SNAPSHOT_SITE
:= http
://www.openembedded.org
/snapshots
214 .PRECIOUS
: common
/.git
/config
215 setup-common common
/.git
/config
:
216 [ -e common
/.git
/config
] || \
217 ( git clone git
://repo.or.cz
/nslu2-linux
/master.git common
&& \
219 ln
-s common
/Makefile Makefile
)
220 touch common
/.git
/config
222 .PHONY
: setup-bitbake
223 .PRECIOUS
: bitbake
/.svn
/entries
224 setup-bitbake bitbake
/.svn
/entries
:
225 [ -e bitbake
/.svn
/entries
] || \
226 ( svn
co svn
://svn.berlios.de
/bitbake
/${BITBAKE_VERSION} bitbake
)
227 touch bitbake
/.svn
/entries
229 .PHONY
: setup-openembedded
230 .PRECIOUS
: openembedded
/.git
/config
231 setup-openembedded openembedded
/.git
/config
:
232 [ -e openembedded
/.git
/config
] || \
233 ( git clone git
://git.openembedded.net
/openembedded openembedded
; \
235 git config
--add remote.
origin.fetch
'+refs/heads/*:refs/remotes/*' )
236 ( cd openembedded
&& \
237 ( git branch | egrep
-e
' org.openembedded.dev$$' > /dev
/null || \
238 git checkout
-b org.openembedded.dev
--track
origin/org.openembedded.dev
))
239 ( cd openembedded
&& git checkout org.openembedded.dev
)
240 touch openembedded
/.git
/config
242 .PHONY
: setup-optware
243 .PRECIOUS
: optware
/.svn
/entries
244 setup-optware optware
/.svn
/entries
:
245 [ -e downloads
] ||
( mkdir
-p downloads
)
246 [ -e optware
/.svn
/entries
] || \
247 ( svn
co http
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
248 touch optware
/.svn
/entries
250 .PHONY
: setup-optware-
%
251 setup-optware-
%: optware
/.svn
/entries
252 ${MAKE} optware
/$*/.configured
254 .PHONY
: setup-optware-developer
255 setup-optware-developer
:
256 [ ! -e optware
] ||
( mv optware optware-user
)
257 [ -e optware
/.svn
/entries
] || \
258 ( svn
co https
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
259 ${MAKE} setup-optware
261 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
262 .PRECIOUS
: optware
/%/.configured
263 optware
/%/.configured
: optware
/.svn
/entries
264 [ -e downloads
] ||
( mkdir
-p downloads
)
265 [ -e optware
/$*/Makefile
] ||
( \
266 mkdir
-p optware
/$* ; \
267 echo
"OPTWARE_TARGET=$*" > optware
/$*/Makefile
; \
268 echo
"include ../Makefile" >> optware
/$*/Makefile
; \
269 ln
-s ..
/..
/downloads optware
/$*/downloads
; \
270 ln
-s ..
/make optware
/$*/make
; \
271 ln
-s ..
/scripts optware
/$*/scripts
; \
272 ln
-s ..
/sources optware
/$*/sources
; \
274 touch optware
/$*/.configured
276 .PHONY
: setup-openwrt
277 .PRECIOUS
: openwrt
/.svn
/entries
278 setup-openwrt openwrt
/.svn
/entries
: common
/.git
/config
279 [ -e downloads
] ||
( mkdir
-p downloads
)
280 [ -e openwrt
/Makefile
] || \
281 ( svn
co https
://svn.openwrt.org
/openwrt
/trunk openwrt
)
282 [ -e openwrt
/dl
] ||
( ln
-s ..
/downloads openwrt
/dl
)
283 [ -e openwrt
/.config
] ||
( cp common
/conf
/openwrt.config openwrt
/.config
)
285 .
/scripts
/feeds update
; \
286 .
/scripts
/feeds
install -a
; \
288 touch openwrt
/.svn
/entries
290 .PHONY
: setup-openwrt-developer
291 setup-openwrt-developer
:
292 [ ! -e openwrt
] ||
( mv openwrt openwrt-user
)
293 svn
co https
://${LOGNAME}@svn.openwrt.org
/openwrt
/trunk openwrt
294 ${MAKE} setup-openwrt
296 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
297 .PHONY
: setup-openwrt-
%
298 .PRECIOUS
: releases
/openwrt-
%/.configured
299 setup-openwrt-
% releases
/openwrt-
%/.configured
:
300 [ -e downloads
] ||
( mkdir
-p downloads
)
301 [ -e releases
/openwrt-
$* ] ||
( \
302 mkdir
-p releases
; \
303 svn checkout https
://svn.openwrt.org
/openwrt
/tags/$* \
304 releases
/openwrt-
$* \
306 [ -e releases
/openwrt-
$*/dl
] || ln
-s ..
/..
/downloads releases
/openwrt-
$*/dl
307 [ -e releases
/openwrt-
$*/.config
] || \
308 ( cp common
/conf
/openwrt-
$*.config releases
/openwrt-
$*/.config
)
309 touch releases
/openwrt-
$*/.configured
311 .PHONY
: setup-unslung setup-slugos setup-angstrom
312 setup-unslung setup-slugos setup-angstrom
: setup-
%:
313 rm -rf
$*/.configured
314 ${MAKE} $*/.configured
316 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
317 .PHONY
: setup-unslung-
%-beta
318 .PRECIOUS
: releases
/unslung-
%-beta
/.configured
319 setup-unslung-
%-beta releases
/unslung-
%-beta
/.configured
:
320 [ -e releases
/unslung-
$*-beta
] ||
( \
321 mkdir
-p releases
; \
322 svn checkout http
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
323 releases
/unslung-
$*-beta \
325 ( cd releases
/unslung-
$*-beta
; ${MAKE} setup-env
)
326 [ -e downloads
] ||
( mkdir
-p downloads
)
327 [ -e releases
/unslung-
$*-beta
/downloads
] || \
328 ln
-s ..
/..
/downloads releases
/unslung-
$*-beta
/
329 touch releases
/unslung-
$*-beta
/.configured
331 .PHONY
: setup-unslung-
%-beta-developer
332 setup-unslung-
%-beta-developer
:
333 [ -e releases
/unslung-
$*-beta
] ||
( \
334 mkdir
-p releases
; \
335 svn checkout https
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
336 releases
/unslung-
$*-beta \
338 ${MAKE} setup-unslung-
$*-beta
340 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
341 .PHONY
: setup-slugos-
%-beta
342 .PRECIOUS
: releases
/slugos-
%-beta
/.configured
343 setup-slugos-
%-beta releases
/slugos-
%-beta
/.configured
:
344 [ -e releases
/slugos-
$*-beta
] ||
( \
345 mkdir
-p releases
; \
346 svn checkout http
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
347 releases
/slugos-
$*-beta \
349 ( cd releases
/slugos-
$*-beta
; ${MAKE} setup-env
)
350 [ -e downloads
] ||
( mkdir
-p downloads
)
351 [ -e releases
/slugos-
$*-beta
/downloads
] || \
352 ln
-s ..
/..
/downloads releases
/slugos-
$*-beta
/
353 touch releases
/slugos-
$*-beta
/.configured
355 .PHONY
: setup-slugos-
%-beta-developer
356 setup-slugos-
%-beta-developer
:
357 [ -e releases
/slugos-
$*-beta
] ||
( \
358 mkdir
-p releases
; \
359 svn checkout https
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
360 releases
/slugos-
$*-beta \
362 ${MAKE} setup-slugos-
$*-beta
364 .PRECIOUS
: %/.configured
365 %/.configured
: common
/.git
/config
366 [ -d
$* ] ||
( mkdir
-p
$* )
367 [ -e downloads
] ||
( mkdir
-p downloads
)
368 [ -e
$*/Makefile
] ||
( cd
$* ; ln
-sf ..
/common
/openembedded.mk Makefile
)
369 [ -e
$*/setup-env
] ||
( cd
$* ; ln
-sf ..
/common
/setup-env .
)
370 [ -e
$*/downloads
] ||
( cd
$* ; ln
-sf ..
/downloads .
)
371 [ -e
$*/bitbake
] ||
( cd
$* ; ln
-sf ..
/bitbake .
)
372 [ -e
$*/openembedded
] ||
( cd
$* ; ln
-sf ..
/openembedded .
)
373 [ -d
$*/conf
] ||
( mkdir
-p
$*/conf
)
374 [ -e
$*/conf
/local.conf.sample
] || \
375 ( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/local.conf.sample .
)
376 [ -e
$*/conf
/site.conf
] ||
( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/site.conf .
)
377 [ -e
$*/conf
/auto.conf
] ||
( \
378 echo
"DISTRO=\"$*\"" > $*/conf
/auto.conf
; \
379 echo
"MACHINE=\"nslu2be\"" >> $*/conf
/auto.conf
; \
380 echo
"IMAGE_TARGET=\"$*-image\"" >> $*/conf
/auto.conf
; \
381 echo
"DISTRO_TARGET=\"$*-packages\"" >> $*/conf
/auto.conf
; \
383 [ -e
$*/conf
/local.conf
] ||
( cd
$*/conf
; touch local.conf
)
387 .PHONY
: setup-host-debian
389 sudo apt-get
install \
390 autoconf automake1.9 \
391 bison build-essential bzip2 \
397 libncurses5-dev libtool \
411 m4 pkg-config python python-dev python2.4 python2.4
-dev \
414 .PHONY
: setup-host-ubuntu
416 sudo apt-get
install \
417 autoconf automake automake1.9 \
420 devio diffstat docbook \
423 gcc gcc-3.3 g
++ gawk gcj gettext gfortran git git-core groff-base \
427 libc6-dev libglib2.0
-dev libncurses5-dev libssl-dev libtool \
431 patch pkg-config python python-dev python2.4 python2.4
-dev \
434 sdcc sed sharutils subversion sun-java5-jdk sysutils \
435 tcl8.4 texinfo texi2html \
439 @echo
"To get python2.4-psyco (Recommended to speed up builds), please read"
440 @echo
"http://ubuntuguide.org/#extrarepositories"
441 @echo
"NOTE: python2.4-psyco will not work on 64-bit archs"
444 .PHONY
: setup-host-gentoo
468 .PHONY
: setup-host-centos
489 sudo rpm
-ivh http
://www.python.org
/pyvault
/centos-4-i386
/help2man-1.29
-1.noarch.rpm
491 .PHONY
: update-common
492 update-common
: common
/.git
/config
493 ( cd common
; git pull
)
495 .PHONY
: update-bitbake
496 update-bitbake
: bitbake
/.svn
/entries
497 ( cd bitbake
; svn up
)
499 .PHONY
: update-openembedded
500 update-openembedded
: openembedded
/.git
/config
501 ( cd openembedded
; git pull
)
503 .PHONY
: update-optware
504 update-optware
: optware
/.svn
/entries
505 ( cd optware
; svn update
)
507 .PHONY
: update-openwrt
508 update-openwrt
: openwrt
/.svn
/entries
509 ( cd openwrt
; svn update
; .
/scripts
/feeds update
)
511 update-slugos-
%-beta
: releases
/slugos-
%-beta
/.configured
512 ( cd releases
/slugos-
$*-beta
; svn update
)
514 update-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
515 ( cd releases
/unslung-
$*-beta
; svn update
)
517 update-openwrt-
%: releases
/openwrt-
%/.configured
518 ( cd releases
/openwrt-
$* ; svn update
)
520 .PHONY
: check-makefile
522 ( wget
-q
-O
- http
://www.nslu2-linux.org
/Makefile | diff
-u Makefile
- )
524 .PHONY
: status-common
525 status-common
: common
/.git
/config
526 ( cd common
; git diff
--stat
)
528 .PHONY
: status-bitbake
529 status-bitbake
: bitbake
/.svn
/entries
530 ( cd bitbake
; svn status
)
532 .PHONY
: status-openembedded
533 status-openembedded
: openembedded
/.git
/config
534 ( cd openembedded
; git diff
--stat
)
536 .PHONY
: status-optware
537 status-optware
: optware
/.svn
/entries
538 ( cd optware
; svn status
)
540 .PHONY
: status-openwrt
541 status-openwrt
: openwrt
/.svn
/entries
542 ( cd openwrt
; svn status
)
544 status-slugosbe-
%-beta
:
545 ( cd releases
/slugosbe-
$*-beta
; svn status
)
547 status-unslung-
%-beta
:
548 ( cd releases
/unslung-
$*-beta
; svn status
)
550 .PHONY
: clobber-unslung
552 [ ! -e unslung
/Makefile
] ||
( cd unslung
; ${MAKE} clobber )
554 .PHONY
: clobber-slugos
556 [ ! -e slugos
/Makefile
] ||
( cd slugos
; ${MAKE} clobber )
558 .PHONY
: clobber-angstrom
560 [ ! -e angstrom
/Makefile
] ||
( cd angstrom
; ${MAKE} clobber )
562 .PHONY
: clobber-openwrt
564 [ ! -e openwrt
/Makefile
] ||
( cd openwrt
; ${MAKE} clean )
566 .PHONY
: clobber-optware
568 [ ! -e optware
] || \
569 for f in optware
/platforms
/packages-
*.mk
; do \
570 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
571 [ ! -e optware
/$$target ] || make clobber-optware-
$$target ; \
574 .PHONY
: clobber-optware-
%
576 [ ! -e optware
/$*/Makefile
] ||
( cd optware
/$* ; ${MAKE} distclean )
578 .PHONY
: distclean-common
582 .PHONY
: distclean-bitbake
586 .PHONY
: distclean-openembedded
587 distclean-openembedded
:
590 .PHONY
: distclean-unslung
594 .PHONY
: distclean-slugos
598 .PHONY
: distclean-angstrom
602 .PHONY
: distclean-openwrt
606 .PHONY
: distclean-optware
610 .PHONY
: distclean-releases
615 distclean: distclean-common distclean-bitbake distclean-openembedded distclean-openwrt \
616 distclean-unslung distclean-slugos distclean-angstrom distclean-optware \
620 # Targets for use by those with write access to the repositories
623 push
: push-common push-openembedded
626 push-common
: update-common
627 ( cd common
; git push ssh
://repo.or.cz
/srv
/git
/nslu2-linux
/master.git
)
629 .PHONY
: push-openembedded
630 push-openembedded
: update-openembedded
631 ( cd openembedded
; git push ssh
://git@git.openembedded.net
/openembedded
)