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/' \
12 BITBAKE_VERSION
= 1.10.2
18 prefetch
: prefetch-slugos prefetch-optware
22 [ ! -e slugos
] ||
${MAKE} slugosbe slugosle
23 [ ! -e optware
] ||
${MAKE} optware
26 ifneq ($(HOST_MACHINE
),armeb
)
27 setup
: setup-common setup-bitbake setup-openembedded \
28 setup-slugos setup-optware
30 setup
: setup-common setup-optware
33 .PHONY
: setup-developer
34 setup-developer
: setup-common setup-bitbake setup-openembedded setup-optware-developer
37 ifneq ($(HOST_MACHINE
),armeb
)
38 update
: update-common update-bitbake update-openembedded update-optware
40 update
: update-common update-optware
44 status
: status-common status-bitbake status-openembedded status-optware
47 clobber: clobber-slugos \
51 distclean: distclean-common distclean-bitbake distclean-openembedded \
53 distclean-optware distclean-releases
55 .PHONY
: prefetch-unslung
56 prefetch-unslung
: unslung
/.configured
57 ( cd unslung
; ${MAKE} prefetch
)
59 .PHONY
: prefetch-optware
62 for f in optware
/platforms
/packages-
*.mk
; do \
63 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
64 [ ! -e optware
/$$target ] || make prefetch-optware-
$$target ; \
67 .PHONY
: prefetch-optware-
%
68 prefetch-optware-
%: optware
/%/.configured
69 ( cd optware
/$* ; ${MAKE} source
)
71 .PHONY
: prefetch-unslung-
%-beta
72 prefetch-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
73 ( cd releases
/unslung-
$*-beta
; ${MAKE} prefetch
)
76 prefetch-
%: %/.configured bitbake
/.git
/config openembedded
/.git
/config
77 ( cd
$* ; ${MAKE} prefetch
)
79 .PHONY
: unslung unslung-image
80 unslung unslung-image
: unslung
/.configured
84 .PHONY
: slugosbe slugosbe-image
85 slugosbe slugosbe-image
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
87 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image
; \
90 .PHONY
: slugosle slugosle-image
91 slugosle slugosle-image
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
93 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image
; \
96 .PHONY
: openwrt openwrt-image
97 openwrt openwrt-image
: openwrt
/.svn
/entries
98 ( cd openwrt
; ${MAKE} -k world
)
100 .PHONY
: unslung-packages
101 unslung-packages
: unslung
/.configured
105 .PHONY
: slugosbe-packages
106 slugosbe-packages
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
108 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
111 .PHONY
: slugosle-packages
112 slugosle-packages
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
114 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
117 .PHONY
: openwrt-packages
118 openwrt-packages
: openwrt
/.svn
/entries
119 ( cd openwrt
; ${MAKE} -k world
)
122 %-packages
: %/.configured bitbake
/.git
/config openembedded
/.git
/config
123 ( cd
$* ; ${MAKE} -k distro
)
125 .PHONY
: openwrt-index
126 openwrt-index
: openwrt
/.svn
/entries
127 ( cd openwrt
; ${MAKE} -k package
/index
)
130 %-index
: %/.configured bitbake
/.git
/config openembedded
/.git
/config
131 ( cd
$* ; ${MAKE} -k index
)
135 [ ! -e optware
] || \
136 for f in optware
/platforms
/packages-
*.mk
; do \
137 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
138 [ ! -e optware
/$$target ] || make optware-
$$target ; \
142 optware-
%: optware
/%/.configured
143 ( cd optware
/$* ; ${MAKE} autoclean
; ${MAKE} -k
)
145 slugosle-
%-beta
: update-slugos-
%-beta build-slugosle-
%-beta
148 slugosle-
%-beta-image
: update-slugos-
%-beta build-slugosle-
%-beta-image
151 slugosbe-
%-beta
: update-slugos-
%-beta build-slugosbe-
%-beta
154 slugosbe-
%-beta-image
: update-slugos-
%-beta build-slugosbe-
%-beta-image
157 unslung-
%-beta
: update-unslung-
%-beta build-unslung-
%-beta
160 openwrt-
%: update-openwrt-
% build-openwrt-
%
163 # The following two targets are deprecated,
164 # but are preserved for building old releases.
166 debianslug-
%-beta
: update-slugos-
%-beta build-debianslug-
%-beta
169 openslug-
%-beta
: update-slugos-
%-beta build-openslug-
%-beta
172 build-slugosle-
%-beta
: releases
/slugos-
%-beta
/.configured
173 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosle-distro
)
175 build-slugosle-
%-beta-image
: releases
/slugos-
%-beta
/.configured
176 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosle-image
)
178 build-slugosbe-
%-beta
: releases
/slugos-
%-beta
/.configured
179 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosbe-distro
)
181 build-slugosbe-
%-beta-image
: releases
/slugos-
%-beta
/.configured
182 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosbe-image
)
184 build-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
185 ( cd releases
/unslung-
$*-beta
; ${MAKE} -k unslung-distro
)
187 build-openwrt-
%: releases
/openwrt-
%/.configured
188 ( cd releases
/openwrt-
$* ; ${MAKE} -k world package
/index
)
190 # The following two targets are deprecated,
191 # but are preserved for building old releases.
193 build-debianslug-
%-beta
: releases
/slugos-
%-beta
/.configured
194 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k debianslug-distro
)
196 build-openslug-
%-beta
: releases
/slugos-
%-beta
/.configured
197 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k openslug-distro
)
199 OE_SNAPSHOT_SITE
:= http
://www.openembedded.org
/snapshots
202 .PRECIOUS
: common
/.git
/config
203 setup-common common
/.git
/config
:
204 [ -e common
/.git
/config
] || \
205 ( git clone git
://repo.or.cz
/nslu2-linux
/master.git common
&& \
207 ln
-s common
/Makefile Makefile
)
208 touch common
/.git
/config
210 .PHONY
: setup-bitbake
211 .PRECIOUS
: bitbake
/.git
/config
212 setup-bitbake bitbake
/.git
/config
:
213 [ -d bitbake
/.svn
] && \
214 mv bitbake bitbake_svn_obsolete
215 [ -e bitbake
/.git
/config
] || \
216 ( git clone git
://git.openembedded.org
/bitbake bitbake
; \
218 git checkout
-b
${BITBAKE_BRANCH} --track
origin/${BITBAKE_BRANCH} && \
219 git checkout
${BITBAKE_VERSION} )
221 .PHONY
: setup-openembedded
222 .PRECIOUS
: openembedded
/.git
/config
223 setup-openembedded openembedded
/.git
/config
:
224 [ -e openembedded
/.git
/config
] || \
225 ( git clone git
://git.openembedded.org
/openembedded openembedded
; \
227 git config
--add remote.
origin.fetch
'+refs/heads/*:refs/remotes/*' )
228 ( cd openembedded
&& \
229 ( git branch | egrep
-e
' org.openembedded.dev$$' > /dev
/null || \
230 git checkout
-b org.openembedded.dev
--track
origin/org.openembedded.dev
))
231 ( cd openembedded
&& git checkout org.openembedded.dev
)
232 touch openembedded
/.git
/config
234 .PHONY
: setup-unslung
235 .PRECIOUS
: unslung
/.svn
/entries
236 setup-unslung unslung
/.svn
/entries
:
237 [ -e downloads
] ||
( mkdir
-p downloads
)
238 [ -e unslung
/.svn
/entries
] || \
239 ( svn
co http
://svn.nslu2-linux.org
/svnroot
/unslung
/trunk unslung
)
240 touch unslung
/.svn
/entries
242 .PHONY
: setup-unslung-
%
243 setup-unslung-
%: unslung
/.svn
/entries
244 ${MAKE} unslung
/$*/.configured
246 .PHONY
: setup-unslung-developer
247 setup-unslung-developer
:
248 [ ! -e unslung
] ||
( mv unslung unslung-user
)
249 [ -e unslung
/.svn
/entries
] || \
250 ( svn
co https
://svn.nslu2-linux.org
/svnroot
/unslung
/trunk unslung
)
251 ${MAKE} setup-unslung
253 .PRECIOUS
: unslung
/.configured
254 unslung
/.configured
: common
/.git
/config unslung
/.svn
/entries
255 [ -e downloads
] ||
( mkdir
-p downloads
)
256 [ -e unslung
/downloads
] ||
( cd unslung
; ln
-sf ..
/downloads .
)
257 rm -rf unslung
/tmp
/cache
258 touch unslung
/.configured
260 .PHONY
: setup-optware
261 .PRECIOUS
: optware
/.svn
/entries
262 setup-optware optware
/.svn
/entries
:
263 [ -e downloads
] ||
( mkdir
-p downloads
)
264 [ -e optware
/.svn
/entries
] || \
265 ( svn
co http
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
266 touch optware
/.svn
/entries
268 .PHONY
: setup-optware-
%
269 setup-optware-
%: optware
/.svn
/entries
270 ${MAKE} optware
/$*/.configured
272 .PHONY
: setup-optware-developer
273 setup-optware-developer
:
274 [ ! -e optware
] ||
( mv optware optware-user
)
275 [ -e optware
/.svn
/entries
] || \
276 ( svn
co https
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
277 ${MAKE} setup-optware
279 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
280 .PRECIOUS
: optware
/%/.configured
281 optware
/%/.configured
: optware
/.svn
/entries
282 [ -e downloads
] ||
( mkdir
-p downloads
)
283 [ -e optware
/$*/Makefile
] ||
( \
284 mkdir
-p optware
/$* ; \
285 echo
"OPTWARE_TARGET=$*" > optware
/$*/Makefile
; \
286 echo
"include ../Makefile" >> optware
/$*/Makefile
; \
287 ln
-s ..
/..
/downloads optware
/$*/downloads
; \
288 ln
-s ..
/make optware
/$*/make
; \
289 ln
-s ..
/scripts optware
/$*/scripts
; \
290 ln
-s ..
/sources optware
/$*/sources
; \
292 touch optware
/$*/.configured
294 .PHONY
: setup-openwrt
295 .PRECIOUS
: openwrt
/.svn
/entries
296 setup-openwrt openwrt
/.svn
/entries
: common
/.git
/config
297 [ -e downloads
] ||
( mkdir
-p downloads
)
298 [ -e openwrt
/Makefile
] || \
299 ( svn
co https
://svn.openwrt.org
/openwrt
/trunk openwrt
)
300 [ -e openwrt
/dl
] ||
( ln
-s ..
/downloads openwrt
/dl
)
301 [ -e openwrt
/.config
] ||
( cp common
/conf
/openwrt.config openwrt
/.config
)
303 .
/scripts
/feeds update
; \
304 .
/scripts
/feeds
install -a
; \
306 touch openwrt
/.svn
/entries
308 .PHONY
: setup-openwrt-developer
309 setup-openwrt-developer
:
310 [ ! -e openwrt
] ||
( mv openwrt openwrt-user
)
311 svn
co https
://${LOGNAME}@svn.openwrt.org
/openwrt
/trunk openwrt
312 ${MAKE} setup-openwrt
314 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
315 .PHONY
: setup-openwrt-
%
316 .PRECIOUS
: releases
/openwrt-
%/.configured
317 setup-openwrt-
% releases
/openwrt-
%/.configured
:
318 [ -e downloads
] ||
( mkdir
-p downloads
)
319 [ -e releases
/openwrt-
$* ] ||
( \
320 mkdir
-p releases
; \
321 ( svn checkout https
://svn.openwrt.org
/openwrt
/tags/$* \
322 releases
/openwrt-
$* | \
323 svn checkout https
://svn.openwrt.org
/openwrt
/branches
/$* \
324 releases
/openwrt-
$* ) \
326 [ -e releases
/openwrt-
$*/dl
] || ln
-s ..
/..
/downloads releases
/openwrt-
$*/dl
327 [ -e releases
/openwrt-
$*/.config
] || \
328 ( cp common
/conf
/openwrt-
$*.config releases
/openwrt-
$*/.config
)
329 touch releases
/openwrt-
$*/.configured
332 setup-slugos
: setup-
%:
333 rm -rf
$*/.configured
334 ${MAKE} $*/.configured
336 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
337 .PHONY
: setup-unslung-
%-beta
338 .PRECIOUS
: releases
/unslung-
%-beta
/.configured
339 setup-unslung-
%-beta releases
/unslung-
%-beta
/.configured
:
340 [ -e releases
/unslung-
$*-beta
] ||
( \
341 mkdir
-p releases
; \
342 svn checkout http
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
343 releases
/unslung-
$*-beta \
345 ( cd releases
/unslung-
$*-beta
; ${MAKE} setup-env
)
346 [ -e downloads
] ||
( mkdir
-p downloads
)
347 [ -e releases
/unslung-
$*-beta
/downloads
] || \
348 ln
-s ..
/..
/downloads releases
/unslung-
$*-beta
/
349 touch releases
/unslung-
$*-beta
/.configured
351 .PHONY
: setup-unslung-
%-beta-developer
352 setup-unslung-
%-beta-developer
:
353 [ -e releases
/unslung-
$*-beta
] ||
( \
354 mkdir
-p releases
; \
355 svn checkout https
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
356 releases
/unslung-
$*-beta \
358 ${MAKE} setup-unslung-
$*-beta
360 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
361 .PHONY
: setup-slugos-
%-beta
362 .PRECIOUS
: releases
/slugos-
%-beta
/.configured
363 setup-slugos-
%-beta releases
/slugos-
%-beta
/.configured
:
364 [ -e releases
/slugos-
$*-beta
] ||
( \
365 mkdir
-p releases
; \
366 svn checkout http
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
367 releases
/slugos-
$*-beta \
369 ( cd releases
/slugos-
$*-beta
; ${MAKE} setup-env
)
370 [ -e downloads
] ||
( mkdir
-p downloads
)
371 [ -e releases
/slugos-
$*-beta
/downloads
] || \
372 ln
-s ..
/..
/downloads releases
/slugos-
$*-beta
/
373 touch releases
/slugos-
$*-beta
/.configured
375 .PHONY
: setup-slugos-
%-beta-developer
376 setup-slugos-
%-beta-developer
:
377 [ -e releases
/slugos-
$*-beta
] ||
( \
378 mkdir
-p releases
; \
379 svn checkout https
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
380 releases
/slugos-
$*-beta \
382 ${MAKE} setup-slugos-
$*-beta
384 .PRECIOUS
: %/.configured
385 %/.configured
: common
/.git
/config
386 [ -d
$* ] ||
( mkdir
-p
$* )
387 [ -e downloads
] ||
( mkdir
-p downloads
)
388 [ -e
$*/Makefile
] ||
( cd
$* ; ln
-sf ..
/common
/openembedded.mk Makefile
)
389 [ -e
$*/setup-env
] ||
( cd
$* ; ln
-sf ..
/common
/setup-env .
)
390 [ -e
$*/downloads
] ||
( cd
$* ; ln
-sf ..
/downloads .
)
391 [ -e
$*/bitbake
] ||
( cd
$* ; ln
-sf ..
/bitbake .
)
392 [ -e
$*/openembedded
] ||
( cd
$* ; ln
-sf ..
/openembedded .
)
393 [ -d
$*/conf
] ||
( mkdir
-p
$*/conf
)
394 [ -e
$*/conf
/local.conf.sample
] || \
395 ( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/local.conf.sample .
)
396 [ -e
$*/conf
/site.conf
] ||
( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/site.conf .
)
397 [ -e
$*/conf
/auto.conf
] ||
( \
398 echo
"DISTRO=\"$*\"" > $*/conf
/auto.conf
; \
399 echo
"MACHINE=\"nslu2be\"" >> $*/conf
/auto.conf
; \
400 echo
"IMAGE_TARGET=\"$*-image\"" >> $*/conf
/auto.conf
; \
401 echo
"DISTRO_TARGET=\"$*-packages\"" >> $*/conf
/auto.conf
; \
403 [ -e
$*/conf
/local.conf
] ||
( cd
$*/conf
; touch local.conf
)
407 .PHONY
: setup-host-debian
409 sudo apt-get
install \
410 autoconf automake1.9 \
411 bison build-essential bzip2 \
417 libncurses5-dev libtool \
431 m4 pkg-config python python-dev python2.4 python2.4
-dev \
434 .PHONY
: setup-host-ubuntu
436 sudo apt-get
install \
437 autoconf automake automake1.9 \
440 devio diffstat docbook \
443 gcc gcc-3.3 g
++ gawk gcj gettext gfortran git git-core groff-base \
447 libc6-dev libglib2.0
-dev libncurses5-dev libssl-dev libtool \
451 patch pkg-config python python-dev python2.4 python2.4
-dev \
454 sdcc sed sharutils subversion sun-java5-jdk sysutils \
455 tcl8.4 texinfo texi2html \
459 @echo
"To get python2.4-psyco (Recommended to speed up builds), please read"
460 @echo
"http://ubuntuguide.org/#extrarepositories"
461 @echo
"NOTE: python2.4-psyco will not work on 64-bit archs"
464 .PHONY
: setup-host-gentoo
488 .PHONY
: setup-host-centos
509 sudo rpm
-ivh http
://www.python.org
/pyvault
/centos-4-i386
/help2man-1.29
-1.noarch.rpm
511 .PHONY
: update-common
512 update-common
: common
/.git
/config
513 ( cd common
; git pull
)
515 .PHONY
: update-bitbake
516 update-bitbake
: bitbake
/.git
/config
518 git checkout
${BITBAKE_BRANCH} && \
520 git checkout
${BITBAKE_VERSION} )
522 .PHONY
: update-openembedded
523 update-openembedded
: openembedded
/.git
/config
524 ( cd openembedded
; git pull
)
526 .PHONY
: update-unslung
527 update-unslung
: unslung
/.svn
/entries
528 ( cd unslung
; svn update
)
530 .PHONY
: update-optware
531 update-optware
: optware
/.svn
/entries
532 ( cd optware
; svn update
)
534 .PHONY
: update-openwrt
535 update-openwrt
: openwrt
/.svn
/entries
536 ( cd openwrt
; svn update
; .
/scripts
/feeds update
-a
; .
/scripts
/feeds
install -a
)
538 update-slugos-
%-beta
: releases
/slugos-
%-beta
/.configured
539 ( cd releases
/slugos-
$*-beta
; svn update
)
541 update-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
542 ( cd releases
/unslung-
$*-beta
; svn update
)
544 update-openwrt-
%: releases
/openwrt-
%/.configured
545 ( cd releases
/openwrt-
$* ; svn update
; .
/scripts
/feeds update
-a
; .
/scripts
/feeds
install -a
)
547 .PHONY
: check-makefile
549 ( wget
-q
-O
- http
://www.nslu2-linux.org
/Makefile | diff
-u Makefile
- )
551 .PHONY
: status-common
552 status-common
: common
/.git
/config
553 ( cd common
; git diff
--stat
)
555 .PHONY
: status-bitbake
556 status-bitbake
: bitbake
/.git
/config
557 ( cd bitbake
; git diff
--stat
)
559 .PHONY
: status-openembedded
560 status-openembedded
: openembedded
/.git
/config
561 ( cd openembedded
; git diff
--stat
)
563 .PHONY
: status-unslung
564 status-unslung
: unslung
/.svn
/entries
565 ( cd unslung
; svn status
)
567 .PHONY
: status-optware
568 status-optware
: optware
/.svn
/entries
569 ( cd optware
; svn status
)
571 .PHONY
: status-openwrt
572 status-openwrt
: openwrt
/.svn
/entries
573 ( cd openwrt
; svn status
)
575 status-slugosbe-
%-beta
:
576 ( cd releases
/slugosbe-
$*-beta
; svn status
)
578 status-unslung-
%-beta
:
579 ( cd releases
/unslung-
$*-beta
; svn status
)
581 .PHONY
: clobber-unslung
583 [ ! -e unslung
/Makefile
] ||
( cd unslung
; ${MAKE} clobber )
585 .PHONY
: clobber-slugos
587 [ ! -e slugos
/Makefile
] ||
( cd slugos
; ${MAKE} clobber )
589 .PHONY
: clobber-openwrt
591 [ ! -e openwrt
/Makefile
] ||
( cd openwrt
; ${MAKE} clean )
593 .PHONY
: clobber-optware
595 [ ! -e optware
] || \
596 for f in optware
/platforms
/packages-
*.mk
; do \
597 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
598 [ ! -e optware
/$$target ] || make clobber-optware-
$$target ; \
601 .PHONY
: clobber-optware-
%
603 [ ! -e optware
/$*/Makefile
] ||
( cd optware
/$* ; ${MAKE} distclean )
605 .PHONY
: distclean-common
609 .PHONY
: distclean-bitbake
613 .PHONY
: distclean-openembedded
614 distclean-openembedded
:
617 .PHONY
: distclean-unslung
621 .PHONY
: distclean-slugos
625 .PHONY
: distclean-openwrt
629 .PHONY
: distclean-optware
633 .PHONY
: distclean-releases
638 distclean: distclean-common distclean-bitbake distclean-openembedded distclean-openwrt \
639 distclean-unslung distclean-slugos distclean-optware \
643 # Targets for use by those with write access to the repositories
646 push
: push-common push-openembedded
649 push-common
: update-common
650 ( cd common
; git push ssh
://repo.or.cz
/srv
/git
/nslu2-linux
/master.git
)
652 .PHONY
: push-openembedded
653 push-openembedded
: update-openembedded
654 ( cd openembedded
; git push ssh
://git@git.openembedded.org
/openembedded
)