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.8.18
18 prefetch
: prefetch-unslung prefetch-slugos prefetch-unslung prefetch-optware
22 [ ! -e unslung
] ||
${MAKE} unslung
23 [ ! -e slugos
] ||
${MAKE} slugosbe slugosle
24 [ ! -e optware
] ||
${MAKE} optware
25 [ ! -e openwrt
] ||
${MAKE} openwrt
28 ifneq ($(HOST_MACHINE
),armeb
)
29 setup
: setup-common setup-bitbake setup-openembedded setup-unslung \
30 setup-slugos setup-optware setup-openwrt
32 setup
: setup-common setup-optware
35 .PHONY
: setup-developer
36 setup-developer
: setup-common setup-bitbake setup-openembedded setup-unslung-developer setup-optware-developer setup-openwrt-developer
39 ifneq ($(HOST_MACHINE
),armeb
)
40 update
: update-common update-bitbake update-openembedded update-unslung update-optware update-openwrt
42 update
: update-common update-optware
46 status
: status-common status-bitbake status-openembedded status-unslung status-optware status-openwrt
49 clobber: clobber-unslung clobber-slugos \
50 clobber-optware clobber-openwrt
53 distclean: distclean-common distclean-bitbake distclean-openembedded \
54 distclean-unslung distclean-slugos \
55 distclean-optware distclean-releases distclean-openwrt
57 .PHONY
: prefetch-unslung
58 prefetch-unslung
: unslung
/.configured
59 ( cd unslung
; ${MAKE} prefetch
)
61 .PHONY
: prefetch-optware
64 for f in optware
/platforms
/packages-
*.mk
; do \
65 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
66 [ ! -e optware
/$$target ] || make prefetch-optware-
$$target ; \
69 .PHONY
: prefetch-optware-
%
70 prefetch-optware-
%: optware
/%/.configured
71 ( cd optware
/$* ; ${MAKE} source
)
73 .PHONY
: prefetch-unslung-
%-beta
74 prefetch-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
75 ( cd releases
/unslung-
$*-beta
; ${MAKE} prefetch
)
78 prefetch-
%: %/.configured bitbake
/.git
/config openembedded
/.git
/config
79 ( cd
$* ; ${MAKE} prefetch
)
81 .PHONY
: unslung unslung-image
82 unslung unslung-image
: unslung
/.configured
86 .PHONY
: slugosbe slugosbe-image
87 slugosbe slugosbe-image
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
89 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image
; \
92 .PHONY
: slugosle slugosle-image
93 slugosle slugosle-image
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
95 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image
; \
98 .PHONY
: openwrt openwrt-image
99 openwrt openwrt-image
: openwrt
/.svn
/entries
100 ( cd openwrt
; ${MAKE} -k world
)
102 .PHONY
: unslung-packages
103 unslung-packages
: unslung
/.configured
107 .PHONY
: slugosbe-packages
108 slugosbe-packages
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
110 ${MAKE} setup-machine-nslu2be setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
113 .PHONY
: slugosle-packages
114 slugosle-packages
: slugos
/.configured bitbake
/.git
/config openembedded
/.git
/config
116 ${MAKE} setup-machine-nslu2le setup-distro-slugos setup-image-slugos-image setup-packages-slugos-packages
; \
119 .PHONY
: openwrt-packages
120 openwrt-packages
: openwrt
/.svn
/entries
121 ( cd openwrt
; ${MAKE} -k world
)
124 %-packages
: %/.configured bitbake
/.git
/config openembedded
/.git
/config
125 ( cd
$* ; ${MAKE} -k distro
)
127 .PHONY
: openwrt-index
128 openwrt-index
: openwrt
/.svn
/entries
129 ( cd openwrt
; ${MAKE} -k package
/index
)
132 %-index
: %/.configured bitbake
/.git
/config openembedded
/.git
/config
133 ( cd
$* ; ${MAKE} -k index
)
137 [ ! -e optware
] || \
138 for f in optware
/platforms
/packages-
*.mk
; do \
139 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
140 [ ! -e optware
/$$target ] || make optware-
$$target ; \
144 optware-
%: optware
/%/.configured
145 ( cd optware
/$* ; ${MAKE} autoclean
; ${MAKE} -k
)
147 slugosle-
%-beta
: update-slugos-
%-beta build-slugosle-
%-beta
150 slugosle-
%-beta-image
: update-slugos-
%-beta build-slugosle-
%-beta-image
153 slugosbe-
%-beta
: update-slugos-
%-beta build-slugosbe-
%-beta
156 slugosbe-
%-beta-image
: update-slugos-
%-beta build-slugosbe-
%-beta-image
159 unslung-
%-beta
: update-unslung-
%-beta build-unslung-
%-beta
162 openwrt-
%: update-openwrt-
% build-openwrt-
%
165 # The following two targets are deprecated,
166 # but are preserved for building old releases.
168 debianslug-
%-beta
: update-slugos-
%-beta build-debianslug-
%-beta
171 openslug-
%-beta
: update-slugos-
%-beta build-openslug-
%-beta
174 build-slugosle-
%-beta
: releases
/slugos-
%-beta
/.configured
175 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosle-distro
)
177 build-slugosle-
%-beta-image
: releases
/slugos-
%-beta
/.configured
178 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosle-image
)
180 build-slugosbe-
%-beta
: releases
/slugos-
%-beta
/.configured
181 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosbe-distro
)
183 build-slugosbe-
%-beta-image
: releases
/slugos-
%-beta
/.configured
184 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k slugosbe-image
)
186 build-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
187 ( cd releases
/unslung-
$*-beta
; ${MAKE} -k unslung-distro
)
189 build-openwrt-
%: releases
/openwrt-
%/.configured
190 ( cd releases
/openwrt-
$* ; ${MAKE} -k world package
/index
)
192 # The following two targets are deprecated,
193 # but are preserved for building old releases.
195 build-debianslug-
%-beta
: releases
/slugos-
%-beta
/.configured
196 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k debianslug-distro
)
198 build-openslug-
%-beta
: releases
/slugos-
%-beta
/.configured
199 ( cd releases
/slugos-
$*-beta
; ${MAKE} -k openslug-distro
)
201 OE_SNAPSHOT_SITE
:= http
://www.openembedded.org
/snapshots
204 .PRECIOUS
: common
/.git
/config
205 setup-common common
/.git
/config
:
206 [ -e common
/.git
/config
] || \
207 ( git clone git
://repo.or.cz
/nslu2-linux
/master.git common
&& \
209 ln
-s common
/Makefile Makefile
)
210 touch common
/.git
/config
212 .PHONY
: setup-bitbake
213 .PRECIOUS
: bitbake
/.git
/config
214 setup-bitbake bitbake
/.git
/config
:
215 [ -d bitbake
/.svn
] && \
216 mv bitbake bitbake_svn_obsolete
217 [ -e bitbake
/.git
/config
] || \
218 ( git clone git
://git.openembedded.org
/bitbake bitbake
; \
220 git checkout
-b
${BITBAKE_BRANCH} --track
origin/${BITBAKE_BRANCH} && \
221 git checkout
${BITBAKE_VERSION} )
223 .PHONY
: setup-openembedded
224 .PRECIOUS
: openembedded
/.git
/config
225 setup-openembedded openembedded
/.git
/config
:
226 [ -e openembedded
/.git
/config
] || \
227 ( git clone git
://git.openembedded.org
/openembedded openembedded
; \
229 git config
--add remote.
origin.fetch
'+refs/heads/*:refs/remotes/*' )
230 ( cd openembedded
&& \
231 ( git branch | egrep
-e
' org.openembedded.dev$$' > /dev
/null || \
232 git checkout
-b org.openembedded.dev
--track
origin/org.openembedded.dev
))
233 ( cd openembedded
&& git checkout org.openembedded.dev
)
234 touch openembedded
/.git
/config
236 .PHONY
: setup-unslung
237 .PRECIOUS
: unslung
/.svn
/entries
238 setup-unslung unslung
/.svn
/entries
:
239 [ -e downloads
] ||
( mkdir
-p downloads
)
240 [ -e unslung
/.svn
/entries
] || \
241 ( svn
co http
://svn.nslu2-linux.org
/svnroot
/unslung
/trunk unslung
)
242 touch unslung
/.svn
/entries
244 .PHONY
: setup-unslung-
%
245 setup-unslung-
%: unslung
/.svn
/entries
246 ${MAKE} unslung
/$*/.configured
248 .PHONY
: setup-unslung-developer
249 setup-unslung-developer
:
250 [ ! -e unslung
] ||
( mv unslung unslung-user
)
251 [ -e unslung
/.svn
/entries
] || \
252 ( svn
co https
://svn.nslu2-linux.org
/svnroot
/unslung
/trunk unslung
)
253 ${MAKE} setup-unslung
255 .PRECIOUS
: unslung
/.configured
256 unslung
/.configured
: common
/.git
/config unslung
/.svn
/entries
257 [ -e downloads
] ||
( mkdir
-p downloads
)
258 [ -e unslung
/downloads
] ||
( cd unslung
; ln
-sf ..
/downloads .
)
259 rm -rf unslung
/tmp
/cache
260 touch unslung
/.configured
262 .PHONY
: setup-optware
263 .PRECIOUS
: optware
/.svn
/entries
264 setup-optware optware
/.svn
/entries
:
265 [ -e downloads
] ||
( mkdir
-p downloads
)
266 [ -e optware
/.svn
/entries
] || \
267 ( svn
co http
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
268 touch optware
/.svn
/entries
270 .PHONY
: setup-optware-
%
271 setup-optware-
%: optware
/.svn
/entries
272 ${MAKE} optware
/$*/.configured
274 .PHONY
: setup-optware-developer
275 setup-optware-developer
:
276 [ ! -e optware
] ||
( mv optware optware-user
)
277 [ -e optware
/.svn
/entries
] || \
278 ( svn
co https
://svn.nslu2-linux.org
/svnroot
/optware
/trunk optware
)
279 ${MAKE} setup-optware
281 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
282 .PRECIOUS
: optware
/%/.configured
283 optware
/%/.configured
: optware
/.svn
/entries
284 [ -e downloads
] ||
( mkdir
-p downloads
)
285 [ -e optware
/$*/Makefile
] ||
( \
286 mkdir
-p optware
/$* ; \
287 echo
"OPTWARE_TARGET=$*" > optware
/$*/Makefile
; \
288 echo
"include ../Makefile" >> optware
/$*/Makefile
; \
289 ln
-s ..
/..
/downloads optware
/$*/downloads
; \
290 ln
-s ..
/make optware
/$*/make
; \
291 ln
-s ..
/scripts optware
/$*/scripts
; \
292 ln
-s ..
/sources optware
/$*/sources
; \
294 touch optware
/$*/.configured
296 .PHONY
: setup-openwrt
297 .PRECIOUS
: openwrt
/.svn
/entries
298 setup-openwrt openwrt
/.svn
/entries
: common
/.git
/config
299 [ -e downloads
] ||
( mkdir
-p downloads
)
300 [ -e openwrt
/Makefile
] || \
301 ( svn
co https
://svn.openwrt.org
/openwrt
/trunk openwrt
)
302 [ -e openwrt
/dl
] ||
( ln
-s ..
/downloads openwrt
/dl
)
303 [ -e openwrt
/.config
] ||
( cp common
/conf
/openwrt.config openwrt
/.config
)
305 .
/scripts
/feeds update
; \
306 .
/scripts
/feeds
install -a
; \
308 touch openwrt
/.svn
/entries
310 .PHONY
: setup-openwrt-developer
311 setup-openwrt-developer
:
312 [ ! -e openwrt
] ||
( mv openwrt openwrt-user
)
313 svn
co https
://${LOGNAME}@svn.openwrt.org
/openwrt
/trunk openwrt
314 ${MAKE} setup-openwrt
316 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
317 .PHONY
: setup-openwrt-
%
318 .PRECIOUS
: releases
/openwrt-
%/.configured
319 setup-openwrt-
% releases
/openwrt-
%/.configured
:
320 [ -e downloads
] ||
( mkdir
-p downloads
)
321 [ -e releases
/openwrt-
$* ] ||
( \
322 mkdir
-p releases
; \
323 ( svn checkout https
://svn.openwrt.org
/openwrt
/tags/$* \
324 releases
/openwrt-
$* | \
325 svn checkout https
://svn.openwrt.org
/openwrt
/branches
/$* \
326 releases
/openwrt-
$* ) \
328 [ -e releases
/openwrt-
$*/dl
] || ln
-s ..
/..
/downloads releases
/openwrt-
$*/dl
329 [ -e releases
/openwrt-
$*/.config
] || \
330 ( cp common
/conf
/openwrt-
$*.config releases
/openwrt-
$*/.config
)
331 touch releases
/openwrt-
$*/.configured
334 setup-slugos
: setup-
%:
335 rm -rf
$*/.configured
336 ${MAKE} $*/.configured
338 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
339 .PHONY
: setup-unslung-
%-beta
340 .PRECIOUS
: releases
/unslung-
%-beta
/.configured
341 setup-unslung-
%-beta releases
/unslung-
%-beta
/.configured
:
342 [ -e releases
/unslung-
$*-beta
] ||
( \
343 mkdir
-p releases
; \
344 svn checkout http
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
345 releases
/unslung-
$*-beta \
347 ( cd releases
/unslung-
$*-beta
; ${MAKE} setup-env
)
348 [ -e downloads
] ||
( mkdir
-p downloads
)
349 [ -e releases
/unslung-
$*-beta
/downloads
] || \
350 ln
-s ..
/..
/downloads releases
/unslung-
$*-beta
/
351 touch releases
/unslung-
$*-beta
/.configured
353 .PHONY
: setup-unslung-
%-beta-developer
354 setup-unslung-
%-beta-developer
:
355 [ -e releases
/unslung-
$*-beta
] ||
( \
356 mkdir
-p releases
; \
357 svn checkout https
://svn.nslu2-linux.org
/svnroot
/unslung
/releases
/unslung-
$*-beta \
358 releases
/unslung-
$*-beta \
360 ${MAKE} setup-unslung-
$*-beta
362 # This pattern rule has to come before the subsequent %/.configured openembedded pattern rule.
363 .PHONY
: setup-slugos-
%-beta
364 .PRECIOUS
: releases
/slugos-
%-beta
/.configured
365 setup-slugos-
%-beta releases
/slugos-
%-beta
/.configured
:
366 [ -e releases
/slugos-
$*-beta
] ||
( \
367 mkdir
-p releases
; \
368 svn checkout http
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
369 releases
/slugos-
$*-beta \
371 ( cd releases
/slugos-
$*-beta
; ${MAKE} setup-env
)
372 [ -e downloads
] ||
( mkdir
-p downloads
)
373 [ -e releases
/slugos-
$*-beta
/downloads
] || \
374 ln
-s ..
/..
/downloads releases
/slugos-
$*-beta
/
375 touch releases
/slugos-
$*-beta
/.configured
377 .PHONY
: setup-slugos-
%-beta-developer
378 setup-slugos-
%-beta-developer
:
379 [ -e releases
/slugos-
$*-beta
] ||
( \
380 mkdir
-p releases
; \
381 svn checkout https
://svn.nslu2-linux.org
/svnroot
/slugos
/releases
/slugos-
$*-beta \
382 releases
/slugos-
$*-beta \
384 ${MAKE} setup-slugos-
$*-beta
386 .PRECIOUS
: %/.configured
387 %/.configured
: common
/.git
/config
388 [ -d
$* ] ||
( mkdir
-p
$* )
389 [ -e downloads
] ||
( mkdir
-p downloads
)
390 [ -e
$*/Makefile
] ||
( cd
$* ; ln
-sf ..
/common
/openembedded.mk Makefile
)
391 [ -e
$*/setup-env
] ||
( cd
$* ; ln
-sf ..
/common
/setup-env .
)
392 [ -e
$*/downloads
] ||
( cd
$* ; ln
-sf ..
/downloads .
)
393 [ -e
$*/bitbake
] ||
( cd
$* ; ln
-sf ..
/bitbake .
)
394 [ -e
$*/openembedded
] ||
( cd
$* ; ln
-sf ..
/openembedded .
)
395 [ -d
$*/conf
] ||
( mkdir
-p
$*/conf
)
396 [ -e
$*/conf
/local.conf.sample
] || \
397 ( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/local.conf.sample .
)
398 [ -e
$*/conf
/site.conf
] ||
( cd
$*/conf
; ln
-sf ..
/..
/common
/conf
/site.conf .
)
399 [ -e
$*/conf
/auto.conf
] ||
( \
400 echo
"DISTRO=\"$*\"" > $*/conf
/auto.conf
; \
401 echo
"MACHINE=\"nslu2be\"" >> $*/conf
/auto.conf
; \
402 echo
"IMAGE_TARGET=\"$*-image\"" >> $*/conf
/auto.conf
; \
403 echo
"DISTRO_TARGET=\"$*-packages\"" >> $*/conf
/auto.conf
; \
405 [ -e
$*/conf
/local.conf
] ||
( cd
$*/conf
; touch local.conf
)
409 .PHONY
: setup-host-debian
411 sudo apt-get
install \
412 autoconf automake1.9 \
413 bison build-essential bzip2 \
419 libncurses5-dev libtool \
433 m4 pkg-config python python-dev python2.4 python2.4
-dev \
436 .PHONY
: setup-host-ubuntu
438 sudo apt-get
install \
439 autoconf automake automake1.9 \
442 devio diffstat docbook \
445 gcc gcc-3.3 g
++ gawk gcj gettext gfortran git git-core groff-base \
449 libc6-dev libglib2.0
-dev libncurses5-dev libssl-dev libtool \
453 patch pkg-config python python-dev python2.4 python2.4
-dev \
456 sdcc sed sharutils subversion sun-java5-jdk sysutils \
457 tcl8.4 texinfo texi2html \
461 @echo
"To get python2.4-psyco (Recommended to speed up builds), please read"
462 @echo
"http://ubuntuguide.org/#extrarepositories"
463 @echo
"NOTE: python2.4-psyco will not work on 64-bit archs"
466 .PHONY
: setup-host-gentoo
490 .PHONY
: setup-host-centos
511 sudo rpm
-ivh http
://www.python.org
/pyvault
/centos-4-i386
/help2man-1.29
-1.noarch.rpm
513 .PHONY
: update-common
514 update-common
: common
/.git
/config
515 ( cd common
; git pull
)
517 .PHONY
: update-bitbake
518 update-bitbake
: bitbake
/.git
/config
520 git checkout
${BITBAKE_BRANCH} && \
522 git checkout
${BITBAKE_VERSION} )
524 .PHONY
: update-openembedded
525 update-openembedded
: openembedded
/.git
/config
526 ( cd openembedded
; git pull
)
528 .PHONY
: update-unslung
529 update-unslung
: unslung
/.svn
/entries
530 ( cd unslung
; svn update
)
532 .PHONY
: update-optware
533 update-optware
: optware
/.svn
/entries
534 ( cd optware
; svn update
)
536 .PHONY
: update-openwrt
537 update-openwrt
: openwrt
/.svn
/entries
538 ( cd openwrt
; svn update
; .
/scripts
/feeds update
-a
; .
/scripts
/feeds
install -a
)
540 update-slugos-
%-beta
: releases
/slugos-
%-beta
/.configured
541 ( cd releases
/slugos-
$*-beta
; svn update
)
543 update-unslung-
%-beta
: releases
/unslung-
%-beta
/.configured
544 ( cd releases
/unslung-
$*-beta
; svn update
)
546 update-openwrt-
%: releases
/openwrt-
%/.configured
547 ( cd releases
/openwrt-
$* ; svn update
; .
/scripts
/feeds update
-a
; .
/scripts
/feeds
install -a
)
549 .PHONY
: check-makefile
551 ( wget
-q
-O
- http
://www.nslu2-linux.org
/Makefile | diff
-u Makefile
- )
553 .PHONY
: status-common
554 status-common
: common
/.git
/config
555 ( cd common
; git diff
--stat
)
557 .PHONY
: status-bitbake
558 status-bitbake
: bitbake
/.git
/config
559 ( cd bitbake
; git diff
--stat
)
561 .PHONY
: status-openembedded
562 status-openembedded
: openembedded
/.git
/config
563 ( cd openembedded
; git diff
--stat
)
565 .PHONY
: status-unslung
566 status-unslung
: unslung
/.svn
/entries
567 ( cd unslung
; svn status
)
569 .PHONY
: status-optware
570 status-optware
: optware
/.svn
/entries
571 ( cd optware
; svn status
)
573 .PHONY
: status-openwrt
574 status-openwrt
: openwrt
/.svn
/entries
575 ( cd openwrt
; svn status
)
577 status-slugosbe-
%-beta
:
578 ( cd releases
/slugosbe-
$*-beta
; svn status
)
580 status-unslung-
%-beta
:
581 ( cd releases
/unslung-
$*-beta
; svn status
)
583 .PHONY
: clobber-unslung
585 [ ! -e unslung
/Makefile
] ||
( cd unslung
; ${MAKE} clobber )
587 .PHONY
: clobber-slugos
589 [ ! -e slugos
/Makefile
] ||
( cd slugos
; ${MAKE} clobber )
591 .PHONY
: clobber-openwrt
593 [ ! -e openwrt
/Makefile
] ||
( cd openwrt
; ${MAKE} clean )
595 .PHONY
: clobber-optware
597 [ ! -e optware
] || \
598 for f in optware
/platforms
/packages-
*.mk
; do \
599 export target
=`echo $$f | sed -e 's|optware/platforms/packages-\(.*\)\.mk|\1|'` ; \
600 [ ! -e optware
/$$target ] || make clobber-optware-
$$target ; \
603 .PHONY
: clobber-optware-
%
605 [ ! -e optware
/$*/Makefile
] ||
( cd optware
/$* ; ${MAKE} distclean )
607 .PHONY
: distclean-common
611 .PHONY
: distclean-bitbake
615 .PHONY
: distclean-openembedded
616 distclean-openembedded
:
619 .PHONY
: distclean-unslung
623 .PHONY
: distclean-slugos
627 .PHONY
: distclean-openwrt
631 .PHONY
: distclean-optware
635 .PHONY
: distclean-releases
640 distclean: distclean-common distclean-bitbake distclean-openembedded distclean-openwrt \
641 distclean-unslung distclean-slugos distclean-optware \
645 # Targets for use by those with write access to the repositories
648 push
: push-common push-openembedded
651 push-common
: update-common
652 ( cd common
; git push ssh
://repo.or.cz
/srv
/git
/nslu2-linux
/master.git
)
654 .PHONY
: push-openembedded
655 push-openembedded
: update-openembedded
656 ( cd openembedded
; git push ssh
://git@git.openembedded.org
/openembedded
)