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
.18
17 prefetch
: prefetch-unslung prefetch-slugos prefetch-unslung prefetch-optware
21 [ ! -e unslung
] ||
${MAKE} unslung
22 [ ! -e slugos
] ||
${MAKE} slugosbe slugosle
23 [ ! -e optware
] ||
${MAKE} optware
24 [ ! -e openwrt
] ||
${MAKE} openwrt
27 ifneq ($(HOST_MACHINE
),armeb
)
28 setup
: setup-common setup-bitbake setup-openembedded setup-unslung \
29 setup-slugos setup-optware setup-openwrt
31 setup
: setup-common setup-optware
34 .PHONY
: setup-developer
35 setup-developer
: setup-common setup-bitbake setup-openembedded setup-unslung-developer setup-optware-developer setup-openwrt-developer
38 ifneq ($(HOST_MACHINE
),armeb
)
39 update
: update-common update-bitbake update-openembedded update-unslung update-optware update-openwrt
41 update
: update-common update-optware
45 status
: status-common status-bitbake status-openembedded status-unslung status-optware status-openwrt
48 clobber: clobber-unslung clobber-slugos \
49 clobber-optware clobber-openwrt
52 distclean: distclean-common distclean-bitbake distclean-openembedded \
53 distclean-unslung distclean-slugos \
54 distclean-optware distclean-releases distclean-openwrt
56 .PHONY
: prefetch-unslung
57 prefetch-unslung
: unslung
/.configured
58 ( cd unslung
; ${MAKE} prefetch
)
60 .PHONY
: prefetch-optware
63 for f in optware
/platforms
/packages-
*.mk
; do \
64 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
65 [ ! -e optware
/$$target ] || make prefetch-optware-
$$target ; \
68 .PHONY
: prefetch-optware-
%
69 prefetch-optware-
%: optware
/%/.configured
70 ( cd optware
/$* ; ${MAKE} source
)
72 .PHONY
: prefetch-unslung-
%-beta
73 prefetch-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
74 ( cd releases
/unslung-
$*-beta
; ${MAKE} prefetch
)
77 prefetch-
%: %/.configured bitbake
/.svn
/entries openembedded
/.git
/config
78 ( cd
$* ; ${MAKE} prefetch
)
80 .PHONY
: unslung unslung-image
81 unslung unslung-image
: unslung
/.configured
85 .PHONY
: slugosbe slugosbe-image
86 slugosbe slugosbe-image
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
88 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image
; \
91 .PHONY
: slugosle slugosle-image
92 slugosle slugosle-image
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
94 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image
; \
97 .PHONY
: openwrt openwrt-image
98 openwrt openwrt-image
: openwrt
/.svn
/entries
99 ( cd openwrt
; ${MAKE} -k world
)
101 .PHONY
: unslung-packages
102 unslung-packages
: unslung
/.configured
106 .PHONY
: slugosbe-packages
107 slugosbe-packages
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
109 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
112 .PHONY
: slugosle-packages
113 slugosle-packages
: slugos
/.configured bitbake
/.svn
/entries openembedded
/.git
/config
115 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
118 .PHONY
: openwrt-packages
119 openwrt-packages
: openwrt
/.svn
/entries
120 ( cd openwrt
; ${MAKE} -k world
)
123 %-packages
: %/.configured bitbake
/.svn
/entries openembedded
/.git
/config
124 ( cd
$* ; ${MAKE} -k distro
)
126 .PHONY
: openwrt-index
127 openwrt-index
: openwrt
/.svn
/entries
128 ( cd openwrt
; ${MAKE} -k package
/index
)
131 %-index
: %/.configured bitbake
/.svn
/entries openembedded
/.git
/config
132 ( cd
$* ; ${MAKE} -k index
)
136 [ ! -e optware
] || \
137 for f in optware
/platforms
/packages-
*.mk
; do \
138 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
139 [ ! -e optware
/$$target ] || make optware-
$$target ; \
143 optware-
%: optware
/%/.configured
144 ( cd optware
/$* ; ${MAKE} autoclean
; ${MAKE} -k
)
146 slugosle-
%-beta
: update-slugos-
%-beta build-slugosle-
%-beta
149 slugosle-
%-beta-image
: update-slugos-
%-beta build-slugosle-
%-beta-image
152 slugosbe-
%-beta
: update-slugos-
%-beta build-slugosbe-
%-beta
155 slugosbe-
%-beta-image
: update-slugos-
%-beta build-slugosbe-
%-beta-image
158 unslung-
%-beta
: update-unslung-
%-beta build-unslung-
%-beta
161 openwrt-
%: update-openwrt-
% build-openwrt-
%
164 # The following two targets are deprecated,
165 # but are preserved for building old releases.
167 debianslug-
%-beta
: update-slugos-
%-beta build-debianslug-
%-beta
170 openslug-
%-beta
: update-slugos-
%-beta build-openslug-
%-beta
173 build-slugosle-
%-beta
: releases
/slugos-
%-beta
/.configured
174 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosle-distro
)
176 build-slugosle-
%-beta-image
: releases
/slugos-
%-beta
/.configured
177 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosle-image
)
179 build-slugosbe-
%-beta
: releases
/slugos-
%-beta
/.configured
180 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosbe-distro
)
182 build-slugosbe-
%-beta-image
: releases
/slugos-
%-beta
/.configured
183 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosbe-image
)
185 build-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
186 ( cd releases
/unslung-
$*-beta
; ${MAKE} -k unslung-distro
)
188 build-openwrt-
%: releases
/openwrt-
%/.configured
189 ( cd releases
/openwrt-
$* ; ${MAKE} -k world package
/index
)
191 # The following two targets are deprecated,
192 # but are preserved for building old releases.
194 build-debianslug-
%-beta
: releases
/slugos-
%-beta
/.configured
195 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k debianslug-distro
)
197 build-openslug-
%-beta
: releases
/slugos-
%-beta
/.configured
198 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k openslug-distro
)
200 OE_SNAPSHOT_SITE
:= http
://www.openembedded.org
/snapshots
203 .PRECIOUS
: common
/.git
/config
204 setup-common common
/.git
/config
:
205 [ -e common
/.git
/config
] || \
206 ( git clone git
://repo.or.cz
/nslu2-linux
/master.git common
&& \
208 ln
-s common
/Makefile Makefile
)
209 touch common
/.git
/config
211 .PHONY
: setup-bitbake
212 .PRECIOUS
: bitbake
/.svn
/entries
213 setup-bitbake bitbake
/.svn
/entries
:
214 [ -e bitbake
/.svn
/entries
] || \
215 ( svn
co svn
://svn.berlios.de
/bitbake
/${BITBAKE_VERSION} bitbake
)
216 touch bitbake
/.svn
/entries
218 .PHONY
: setup-openembedded
219 .PRECIOUS
: openembedded
/.git
/config
220 setup-openembedded openembedded
/.git
/config
:
221 [ -e openembedded
/.git
/config
] || \
222 ( git clone git
://git.openembedded.org
/openembedded openembedded
; \
224 git config
--add remote.
origin.fetch
'+refs/heads/*:refs/remotes/*' )
225 ( cd openembedded
&& \
226 ( git branch | egrep
-e
' org.openembedded.dev$$' > /dev
/null || \
227 git checkout
-b org.openembedded.dev
--track
origin/org.openembedded.dev
))
228 ( cd openembedded
&& git checkout org.openembedded.dev
)
229 touch openembedded
/.git
/config
231 .PHONY
: setup-unslung
232 .PRECIOUS
: unslung
/.svn
/entries
233 setup-unslung unslung
/.svn
/entries
:
234 [ -e downloads
] ||
( mkdir
-p downloads
)
235 [ -e unslung
/.svn
/entries
] || \
236 ( svn
co http
://svn.nslu2-linux.org
/svnroot
/unslung
/trunk unslung
)
237 touch unslung
/.svn
/entries
239 .PHONY
: setup-unslung-
%
240 setup-unslung-
%: unslung
/.svn
/entries
241 ${MAKE} unslung
/$*/.configured
243 .PHONY
: setup-unslung-developer
244 setup-unslung-developer
:
245 [ ! -e unslung
] ||
( mv unslung unslung-user
)
246 [ -e unslung
/.svn
/entries
] || \
247 ( svn
co https
://svn.nslu2-linux.org
/svnroot
/unslung
/trunk unslung
)
248 ${MAKE} setup-unslung
250 .PRECIOUS
: unslung
/.configured
251 unslung
/.configured
: common
/.git
/config unslung
/.svn
/entries
252 [ -e downloads
] ||
( mkdir
-p downloads
)
253 [ -e unslung
/downloads
] ||
( cd unslung
; ln
-sf ..
/downloads .
)
254 rm -rf unslung
/tmp
/cache
255 touch unslung
/.configured
257 .PHONY
: setup-optware
258 .PRECIOUS
: optware
/.svn
/entries
259 setup-optware optware
/.svn
/entries
:
260 [ -e downloads
] ||
( mkdir
-p downloads
)
261 [ -e optware
/.svn
/entries
] || \
262 ( svn
co http
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
263 touch optware
/.svn
/entries
265 .PHONY
: setup-optware-
%
266 setup-optware-
%: optware
/.svn
/entries
267 ${MAKE} optware
/$*/.configured
269 .PHONY
: setup-optware-developer
270 setup-optware-developer
:
271 [ ! -e optware
] ||
( mv optware optware-user
)
272 [ -e optware
/.svn
/entries
] || \
273 ( svn
co https
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
274 ${MAKE} setup-optware
276 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
277 .PRECIOUS
: optware
/%/.configured
278 optware
/%/.configured
: optware
/.svn
/entries
279 [ -e downloads
] ||
( mkdir
-p downloads
)
280 [ -e optware
/$*/Makefile
] ||
( \
281 mkdir
-p optware
/$* ; \
282 echo
"OPTWARE_TARGET=$*" > optware
/$*/Makefile
; \
283 echo
"include ../Makefile" >> optware
/$*/Makefile
; \
284 ln
-s ..
/..
/downloads optware
/$*/downloads
; \
285 ln
-s ..
/make optware
/$*/make
; \
286 ln
-s ..
/scripts optware
/$*/scripts
; \
287 ln
-s ..
/sources optware
/$*/sources
; \
289 touch optware
/$*/.configured
291 .PHONY
: setup-openwrt
292 .PRECIOUS
: openwrt
/.svn
/entries
293 setup-openwrt openwrt
/.svn
/entries
: common
/.git
/config
294 [ -e downloads
] ||
( mkdir
-p downloads
)
295 [ -e openwrt
/Makefile
] || \
296 ( svn
co https
://svn.openwrt.org
/openwrt
/trunk openwrt
)
297 [ -e openwrt
/dl
] ||
( ln
-s ..
/downloads openwrt
/dl
)
298 [ -e openwrt
/.config
] ||
( cp common
/conf
/openwrt.config openwrt
/.config
)
300 .
/scripts
/feeds update
; \
301 .
/scripts
/feeds
install -a
; \
303 touch openwrt
/.svn
/entries
305 .PHONY
: setup-openwrt-developer
306 setup-openwrt-developer
:
307 [ ! -e openwrt
] ||
( mv openwrt openwrt-user
)
308 svn
co https
://${LOGNAME}@svn.openwrt.org
/openwrt
/trunk openwrt
309 ${MAKE} setup-openwrt
311 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
312 .PHONY
: setup-openwrt-
%
313 .PRECIOUS
: releases
/openwrt-
%/.configured
314 setup-openwrt-
% releases
/openwrt-
%/.configured
:
315 [ -e downloads
] ||
( mkdir
-p downloads
)
316 [ -e releases
/openwrt-
$* ] ||
( \
317 mkdir
-p releases
; \
318 ( svn checkout https
://svn.openwrt.org
/openwrt
/tags/$* \
319 releases
/openwrt-
$* | \
320 svn checkout https
://svn.openwrt.org
/openwrt
/branches
/$* \
321 releases
/openwrt-
$* ) \
323 [ -e releases
/openwrt-
$*/dl
] || ln
-s ..
/..
/downloads releases
/openwrt-
$*/dl
324 [ -e releases
/openwrt-
$*/.config
] || \
325 ( cp common
/conf
/openwrt-
$*.config releases
/openwrt-
$*/.config
)
326 touch releases
/openwrt-
$*/.configured
329 setup-slugos
: setup-
%:
330 rm -rf
$*/.configured
331 ${MAKE} $*/.configured
333 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
334 .PHONY
: setup-unslung-
%-beta
335 .PRECIOUS
: releases
/unslung-
%-beta
/.configured
336 setup-unslung-
%-beta releases
/unslung-
%-beta
/.configured
:
337 [ -e releases
/unslung-
$*-beta
] ||
( \
338 mkdir
-p releases
; \
339 svn checkout http
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
340 releases
/unslung-
$*-beta \
342 ( cd releases
/unslung-
$*-beta
; ${MAKE} setup-env
)
343 [ -e downloads
] ||
( mkdir
-p downloads
)
344 [ -e releases
/unslung-
$*-beta
/downloads
] || \
345 ln
-s ..
/..
/downloads releases
/unslung-
$*-beta
/
346 touch releases
/unslung-
$*-beta
/.configured
348 .PHONY
: setup-unslung-
%-beta-developer
349 setup-unslung-
%-beta-developer
:
350 [ -e releases
/unslung-
$*-beta
] ||
( \
351 mkdir
-p releases
; \
352 svn checkout https
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
353 releases
/unslung-
$*-beta \
355 ${MAKE} setup-unslung-
$*-beta
357 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
358 .PHONY
: setup-slugos-
%-beta
359 .PRECIOUS
: releases
/slugos-
%-beta
/.configured
360 setup-slugos-
%-beta releases
/slugos-
%-beta
/.configured
:
361 [ -e releases
/slugos-
$*-beta
] ||
( \
362 mkdir
-p releases
; \
363 svn checkout http
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
364 releases
/slugos-
$*-beta \
366 ( cd releases
/slugos-
$*-beta
; ${MAKE} setup-env
)
367 [ -e downloads
] ||
( mkdir
-p downloads
)
368 [ -e releases
/slugos-
$*-beta
/downloads
] || \
369 ln
-s ..
/..
/downloads releases
/slugos-
$*-beta
/
370 touch releases
/slugos-
$*-beta
/.configured
372 .PHONY
: setup-slugos-
%-beta-developer
373 setup-slugos-
%-beta-developer
:
374 [ -e releases
/slugos-
$*-beta
] ||
( \
375 mkdir
-p releases
; \
376 svn checkout https
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
377 releases
/slugos-
$*-beta \
379 ${MAKE} setup-slugos-
$*-beta
381 .PRECIOUS
: %/.configured
382 %/.configured
: common
/.git
/config
383 [ -d
$* ] ||
( mkdir
-p
$* )
384 [ -e downloads
] ||
( mkdir
-p downloads
)
385 [ -e
$*/Makefile
] ||
( cd
$* ; ln
-sf ..
/common
/openembedded.mk Makefile
)
386 [ -e
$*/setup-env
] ||
( cd
$* ; ln
-sf ..
/common
/setup-env .
)
387 [ -e
$*/downloads
] ||
( cd
$* ; ln
-sf ..
/downloads .
)
388 [ -e
$*/bitbake
] ||
( cd
$* ; ln
-sf ..
/bitbake .
)
389 [ -e
$*/openembedded
] ||
( cd
$* ; ln
-sf ..
/openembedded .
)
390 [ -d
$*/conf
] ||
( mkdir
-p
$*/conf
)
391 [ -e
$*/conf
/local.conf.sample
] || \
392 ( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/local.conf.sample .
)
393 [ -e
$*/conf
/site.conf
] ||
( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/site.conf .
)
394 [ -e
$*/conf
/auto.conf
] ||
( \
395 echo
"DISTRO=\"$*\"" > $*/conf
/auto.conf
; \
396 echo
"MACHINE=\"nslu2be\"" >> $*/conf
/auto.conf
; \
397 echo
"IMAGE_TARGET=\"$*-image\"" >> $*/conf
/auto.conf
; \
398 echo
"DISTRO_TARGET=\"$*-packages\"" >> $*/conf
/auto.conf
; \
400 [ -e
$*/conf
/local.conf
] ||
( cd
$*/conf
; touch local.conf
)
404 .PHONY
: setup-host-debian
406 sudo apt-get
install \
407 autoconf automake1.9 \
408 bison build-essential bzip2 \
414 libncurses5-dev libtool \
428 m4 pkg-config python python-dev python2.4 python2.4
-dev \
431 .PHONY
: setup-host-ubuntu
433 sudo apt-get
install \
434 autoconf automake automake1.9 \
437 devio diffstat docbook \
440 gcc gcc-3.3 g
++ gawk gcj gettext gfortran git git-core groff-base \
444 libc6-dev libglib2.0
-dev libncurses5-dev libssl-dev libtool \
448 patch pkg-config python python-dev python2.4 python2.4
-dev \
451 sdcc sed sharutils subversion sun-java5-jdk sysutils \
452 tcl8.4 texinfo texi2html \
456 @echo
"To get python2.4-psyco (Recommended to speed up builds), please read"
457 @echo
"http://ubuntuguide.org/#extrarepositories"
458 @echo
"NOTE: python2.4-psyco will not work on 64-bit archs"
461 .PHONY
: setup-host-gentoo
485 .PHONY
: setup-host-centos
506 sudo rpm
-ivh http
://www.python.org
/pyvault
/centos-4-i386
/help2man-1.29
-1.noarch.rpm
508 .PHONY
: update-common
509 update-common
: common
/.git
/config
510 ( cd common
; git pull
)
512 .PHONY
: update-bitbake
513 update-bitbake
: bitbake
/.svn
/entries
514 ( cd bitbake
; svn up
)
516 .PHONY
: update-openembedded
517 update-openembedded
: openembedded
/.git
/config
518 ( cd openembedded
; git pull
)
520 .PHONY
: update-unslung
521 update-unslung
: unslung
/.svn
/entries
522 ( cd unslung
; svn update
)
524 .PHONY
: update-optware
525 update-optware
: optware
/.svn
/entries
526 ( cd optware
; svn update
)
528 .PHONY
: update-openwrt
529 update-openwrt
: openwrt
/.svn
/entries
530 ( cd openwrt
; svn update
; .
/scripts
/feeds update
-a
; .
/scripts
/feeds
install -a
)
532 update-slugos-
%-beta
: releases
/slugos-
%-beta
/.configured
533 ( cd releases
/slugos-
$*-beta
; svn update
)
535 update-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
536 ( cd releases
/unslung-
$*-beta
; svn update
)
538 update-openwrt-
%: releases
/openwrt-
%/.configured
539 ( cd releases
/openwrt-
$* ; svn update
; .
/scripts
/feeds update
-a
; .
/scripts
/feeds
install -a
)
541 .PHONY
: check-makefile
543 ( wget
-q
-O
- http
://www.nslu2-linux.org
/Makefile | diff
-u Makefile
- )
545 .PHONY
: status-common
546 status-common
: common
/.git
/config
547 ( cd common
; git diff
--stat
)
549 .PHONY
: status-bitbake
550 status-bitbake
: bitbake
/.svn
/entries
551 ( cd bitbake
; svn status
)
553 .PHONY
: status-openembedded
554 status-openembedded
: openembedded
/.git
/config
555 ( cd openembedded
; git diff
--stat
)
557 .PHONY
: status-unslung
558 status-unslung
: unslung
/.svn
/entries
559 ( cd unslung
; svn status
)
561 .PHONY
: status-optware
562 status-optware
: optware
/.svn
/entries
563 ( cd optware
; svn status
)
565 .PHONY
: status-openwrt
566 status-openwrt
: openwrt
/.svn
/entries
567 ( cd openwrt
; svn status
)
569 status-slugosbe-
%-beta
:
570 ( cd releases
/slugosbe-
$*-beta
; svn status
)
572 status-unslung-
%-beta
:
573 ( cd releases
/unslung-
$*-beta
; svn status
)
575 .PHONY
: clobber-unslung
577 [ ! -e unslung
/Makefile
] ||
( cd unslung
; ${MAKE} clobber )
579 .PHONY
: clobber-slugos
581 [ ! -e slugos
/Makefile
] ||
( cd slugos
; ${MAKE} clobber )
583 .PHONY
: clobber-openwrt
585 [ ! -e openwrt
/Makefile
] ||
( cd openwrt
; ${MAKE} clean )
587 .PHONY
: clobber-optware
589 [ ! -e optware
] || \
590 for f in optware
/platforms
/packages-
*.mk
; do \
591 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
592 [ ! -e optware
/$$target ] || make clobber-optware-
$$target ; \
595 .PHONY
: clobber-optware-
%
597 [ ! -e optware
/$*/Makefile
] ||
( cd optware
/$* ; ${MAKE} distclean )
599 .PHONY
: distclean-common
603 .PHONY
: distclean-bitbake
607 .PHONY
: distclean-openembedded
608 distclean-openembedded
:
611 .PHONY
: distclean-unslung
615 .PHONY
: distclean-slugos
619 .PHONY
: distclean-openwrt
623 .PHONY
: distclean-optware
627 .PHONY
: distclean-releases
632 distclean: distclean-common distclean-bitbake distclean-openembedded distclean-openwrt \
633 distclean-unslung distclean-slugos distclean-optware \
637 # Targets for use by those with write access to the repositories
640 push
: push-common push-openembedded
643 push-common
: update-common
644 ( cd common
; git push ssh
://repo.or.cz
/srv
/git
/nslu2-linux
/master.git
)
646 .PHONY
: push-openembedded
647 push-openembedded
: update-openembedded
648 ( cd openembedded
; git push ssh
://git@git.openembedded.org
/openembedded
)