]> git.ipfire.org Git - people/ms/u-boot.git/blame - MAKEALL
Fix compile warning in uli526x driver
[people/ms/u-boot.git] / MAKEALL
CommitLineData
f2352877 1#!/bin/bash
7ebf7443 2
0777eafb
WD
3# Tool mainly for U-Boot Quality Assurance: build one or more board
4# configurations with minimal verbosity, showing only warnings and
5# errors.
6#
7# There are several ways to select which boards to build.
8#
9# Traditionally, architecture names (like "powerpc"), CPU family names
10# (like "mpc83xx") or board names can be specified on the command
11# line; without any arguments, MAKEALL defaults to building all Power
12# Architecture systems (i. e. same as for "MAKEALL powerpc").
13#
14# With the iontroduction of the board.cfg file, it has become possible
15# to provide additional selections. We use standard command line
16# options for this:
17#
18# -a or --arch : Select architecture
19# -c or --cpu : Select CPU family
20# -s or --soc : Select SoC type
21# -v or --vendor: Select board vendor
22#
23# Selections by these options are logically ANDed; if the same option
24# is used repeatedly, such selections are ORed. So "-v FOO -v BAR"
25# will select all configurations where the vendor is either FOO or
26# BAR. Any additional arguments specified on the command line are
27# always build additionally.
28#
29# Examples:
30#
31# - build all Power Architecture boards:
32#
33# MAKEALL -a powerpc
34# or
35# MAKEALL --arch powerpc
36# or
37# MAKEALL powerpc
38#
39# - build all PowerPC boards manufactured by vendor "esd":
40#
41# MAKEALL -a powerpc -v esd
42#
43# - build all PowerPC boards manufactured either by "keymile" or
44# "siemens":
45#
46# MAKEALL -a powerpc -v keymile -v siemens
47#
48# - build all Freescale boards with MPC83xx CPUs, plus all 4xx boards:
49#
50# MAKEALL -c mpc83xx -v freescale 4xx
51#
52#########################################################################
53
54SHORT_OPTS="a:c:v:s:"
55LONG_OPTS="arch:,cpu:,vendor:,soc:"
56
57# Option processing based on util-linux-2.13/getopt-parse.bash
58
59# Note that we use `"$@"' to let each command-line parameter expand to a
60# separate word. The quotes around `$@' are essential!
61# We need TEMP as the `eval set --' would nuke the return value of
62# getopt.
63TEMP=`getopt -o ${SHORT_OPTS} --long ${LONG_OPTS} \
64 -n 'MAKEALL' -- "$@"`
65
66if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
67
68# Note the quotes around `$TEMP': they are essential!
69eval set -- "$TEMP"
70
71SELECTED=''
72
73while true ; do
74 case "$1" in
75 -a|--arch)
76 # echo "Option ARCH: argument \`$2'"
77 if [ "$opt_a" ] ; then
78 opt_a="${opt_a%)} || \$2 == \"$2\")"
79 else
80 opt_a="(\$2 == \"$2\")"
81 fi
82 SELECTED='y'
83 shift 2 ;;
84 -c|--cpu)
85 # echo "Option CPU: argument \`$2'"
86 if [ "$opt_c" ] ; then
87 opt_c="${opt_c%)} || \$3 == \"$2\")"
88 else
89 opt_c="(\$3 == \"$2\")"
90 fi
91 SELECTED='y'
92 shift 2 ;;
93 -s|--soc)
94 # echo "Option SoC: argument \`$2'"
95 if [ "$opt_s" ] ; then
96 opt_s="${opt_s%)} || \$6 == \"$2\")"
97 else
98 opt_s="(\$6 == \"$2\")"
99 fi
100 SELECTED='y'
101 shift 2 ;;
102 -v|--vendor)
103 # echo "Option VENDOR: argument \`$2'"
104 if [ "$opt_v" ] ; then
105 opt_v="${opt_v%)} || \$5 == \"$2\")"
106 else
107 opt_v="(\$5 == \"$2\")"
108 fi
109 SELECTED='y'
110 shift 2 ;;
111 --)
112 shift ; break ;;
113 *)
114 echo "Internal error!" >&2 ; exit 1 ;;
115 esac
116done
117# echo "Remaining arguments:"
118# for arg do echo '--> '"\`$arg'" ; done
119
120FILTER="\$1 !~ /^#/"
121[ "$opt_a" ] && FILTER="${FILTER} && $opt_a"
122[ "$opt_c" ] && FILTER="${FILTER} && $opt_c"
123[ "$opt_s" ] && FILTER="${FILTER} && $opt_s"
124[ "$opt_v" ] && FILTER="${FILTER} && $opt_v"
125
126if [ "$SELECTED" ] ; then
127 SELECTED=$(awk '('"$FILTER"') { print $1 }' boards.cfg)
128fi
129
130#########################################################################
131
40a28f08
PT
132# Print statistics when we exit
133trap exit 1 2 3 15
134trap print_stats 0
135
7fa6a2f3
WD
136# Determine number of CPU cores if no default was set
137: ${BUILD_NCPUS:="`getconf _NPROCESSORS_ONLN`"}
138
139if [ "$BUILD_NCPUS" -gt 1 ]
140then
55f786d8 141 JOBS="-j $((BUILD_NCPUS + 1))"
7fa6a2f3
WD
142else
143 JOBS=""
144fi
145
a8c7c708 146
7ebf7443
WD
147if [ "${CROSS_COMPILE}" ] ; then
148 MAKE="make CROSS_COMPILE=${CROSS_COMPILE}"
149else
150 MAKE=make
151fi
152
f9328639
MB
153if [ "${MAKEALL_LOGDIR}" ] ; then
154 LOG_DIR=${MAKEALL_LOGDIR}
155else
156 LOG_DIR="LOG"
157fi
887e2ec9 158
f9328639
MB
159if [ ! "${BUILD_DIR}" ] ; then
160 BUILD_DIR="."
161fi
162
4f0645eb 163[ -d ${LOG_DIR} ] || mkdir ${LOG_DIR} || exit 1
7ebf7443
WD
164
165LIST=""
166
40a28f08
PT
167# Keep track of the number of builds and errors
168ERR_CNT=0
169ERR_LIST=""
170TOTAL_CNT=0
f2352877 171RC=0
40a28f08 172
9ec49f8f
MF
173# Helper funcs for parsing boards.cfg
174boards_by_field()
175{
176 awk \
177 -v field="$1" \
178 -v select="$2" \
179 '($1 !~ /^#/ && $field == select) { print $1 }' \
180 boards.cfg
181}
182boards_by_arch() { boards_by_field 2 "$@" ; }
183boards_by_cpu() { boards_by_field 3 "$@" ; }
184
0db5bca8
WD
185#########################################################################
186## MPC5xx Systems
187#########################################################################
188
9ec49f8f 189LIST_5xx="$(boards_by_cpu mpc5xx)"
0db5bca8 190
945af8d7
WD
191#########################################################################
192## MPC5xxx Systems
193#########################################################################
194
2ae18241 195LIST_5xxx="$(boards_by_cpu mpc5xxx)"
945af8d7 196
8993e54b
RJ
197#########################################################################
198## MPC512x Systems
199#########################################################################
200
2ae18241 201LIST_512x="$(boards_by_cpu mpc512x)"
945af8d7 202
7ebf7443
WD
203#########################################################################
204## MPC8xx Systems
205#########################################################################
9ec49f8f 206
2ae18241 207LIST_8xx="$(boards_by_cpu mpc8xx)"
7ebf7443
WD
208
209#########################################################################
210## PPC4xx Systems
211#########################################################################
212
2ae18241 213LIST_4xx="$(boards_by_cpu ppc4xx)"
7ebf7443 214
983fda83
WD
215#########################################################################
216## MPC8220 Systems
217#########################################################################
218
9ec49f8f 219LIST_8220="$(boards_by_cpu mpc8220)"
983fda83 220
7ebf7443
WD
221#########################################################################
222## MPC824x Systems
223#########################################################################
224
2ae18241 225LIST_824x="$(boards_by_cpu mpc824x)"
592c5cab 226
7ebf7443 227#########################################################################
7aa78614 228## MPC8260 Systems (includes 8250, 8255 etc.)
7ebf7443
WD
229#########################################################################
230
2ae18241 231LIST_8260="$(boards_by_cpu mpc8260)"
7ebf7443 232
f046ccd1
EL
233#########################################################################
234## MPC83xx Systems (includes 8349, etc.)
235#########################################################################
236
2ae18241 237LIST_83xx="$(boards_by_cpu mpc83xx)"
f046ccd1 238
42d1f039
WD
239#########################################################################
240## MPC85xx Systems (includes 8540, 8560 etc.)
241#########################################################################
242
2ae18241 243LIST_85xx="$(boards_by_cpu mpc85xx)"
42d1f039 244
822d5536
JL
245#########################################################################
246## MPC86xx Systems
247#########################################################################
248
2ae18241 249LIST_86xx="$(boards_by_cpu mpc86xx)"
822d5536 250
7ebf7443
WD
251#########################################################################
252## 74xx/7xx Systems
253#########################################################################
254
2ae18241 255LIST_74xx_7xx="$(boards_by_cpu 74xx_7xx)"
7ebf7443 256
d9a42c0a
WD
257#########################################################################
258## PowerPC groups
259#########################################################################
260
261LIST_TSEC=" \
262 ${LIST_83xx} \
263 ${LIST_85xx} \
264 ${LIST_86xx} \
265"
266
a47a12be 267LIST_powerpc=" \
fb56579f 268 ${LIST_5xx} \
3deca9d4 269 ${LIST_512x} \
fb56579f
KP
270 ${LIST_5xxx} \
271 ${LIST_8xx} \
272 ${LIST_8220} \
273 ${LIST_824x} \
274 ${LIST_8260} \
275 ${LIST_83xx} \
276 ${LIST_85xx} \
277 ${LIST_86xx} \
278 ${LIST_4xx} \
2ae18241 279 ${LIST_74xx_7xx}\
fb56579f 280"
7ebf7443 281
a47a12be
SR
282# Alias "ppc" -> "powerpc" to not break compatibility with older scripts
283# still using "ppc" instead of "powerpc"
284LIST_ppc=" \
285 ${LIST_powerpc} \
286"
287
7ebf7443
WD
288#########################################################################
289## StrongARM Systems
290#########################################################################
291
9ec49f8f 292LIST_SA="$(boards_by_cpu sa1100)"
7ebf7443
WD
293
294#########################################################################
295## ARM7 Systems
296#########################################################################
297
fb56579f
KP
298LIST_ARM7=" \
299 ap7 \
300 ap720t \
301 armadillo \
302 B2 \
303 ep7312 \
304 evb4510 \
305 impa7 \
306 integratorap \
307 lpc2292sodimm \
308 modnet50 \
309 SMN42 \
74f4304e 310"
7ebf7443
WD
311
312#########################################################################
313## ARM9 Systems
314#########################################################################
315
fb56579f 316LIST_ARM9=" \
43a5f0df 317 a320evb \
fb56579f
KP
318 ap920t \
319 ap922_XA10 \
320 ap926ejs \
321 ap946es \
322 ap966 \
323 cp920t \
324 cp922_XA10 \
325 cp926ejs \
326 cp946es \
327 cp966 \
2819e136 328 da830evm \
89b765c7 329 da850evm \
cf3c142e
MK
330 edb9301 \
331 edb9302 \
332 edb9302a \
333 edb9307 \
334 edb9307a \
335 edb9312 \
336 edb9315 \
337 edb9315a \
ce9c227c 338 edminiv2 \
16b76705 339 guruplug \
10bc241d 340 imx27lite \
18a056a1 341 jadecpu \
fb56579f 342 lpd7a400 \
bbe31092 343 magnesium \
4abc5bff 344 mv88f6281gtw_ge \
fb56579f
KP
345 mx1ads \
346 mx1fs2 \
347 netstar \
ceb70b46
JCPV
348 nhk8815 \
349 nhk8815_onenand \
fb56579f
KP
350 omap1510inn \
351 omap1610h2 \
352 omap1610inn \
a3543d6d 353 omap5912osk \
fb56579f 354 omap730p2 \
e92daeb5 355 openrd_base \
fbc8365a 356 rd6281a \
fb56579f
KP
357 sbc2410x \
358 scb9328 \
55dd4ba5 359 sheevaplug \
fb56579f
KP
360 smdk2400 \
361 smdk2410 \
7e074158 362 spear300 \
080cfee7 363 spear310 \
7da69236 364 spear320 \
566c9c16 365 spear600 \
67fa8c25 366 suen3 \
fb56579f
KP
367 trab \
368 VCMA9 \
369 versatile \
370 versatileab \
371 versatilepb \
372 voiceblue \
373 davinci_dvevm \
374 davinci_schmoogie \
c7f879ec 375 davinci_sffsdr \
fb56579f 376 davinci_sonata \
28b00324 377 davinci_dm355evm \
5df65cf5 378 davinci_dm355leopard \
3fca2929 379 davinci_dm365evm \
6ab176d7 380 davinci_dm6467evm \
6f21347d 381"
7ebf7443 382
74f4304e
WD
383#########################################################################
384## ARM10 Systems
385#########################################################################
fb56579f
KP
386LIST_ARM10=" \
387 integratorcp \
388 cp1026 \
74f4304e
WD
389"
390
8ed96046
WD
391#########################################################################
392## ARM11 Systems
393#########################################################################
0c692673
GL
394LIST_ARM11=" \
395 cp1136 \
396 omap2420h4 \
397 apollon \
398 imx31_litekit \
399 imx31_phycore \
400 imx31_phycore_eet \
401 mx31ads \
8449f287 402 mx31pdk \
d08e5ca3 403 mx31pdk_nand \
0c692673
GL
404 qong \
405 smdk6400 \
5cc48f7e 406 tnetv107x_evm \
74f4304e 407"
8ed96046 408
f904cdbb 409#########################################################################
f56348af 410## ARMV7 Systems
f904cdbb 411#########################################################################
f56348af 412LIST_ARMV7=" \
ed01e45c 413 am3517_evm \
b80e41ac 414 ca9x4_ct_vxp \
c35d7cf0 415 devkit8000 \
8a3f6bb6 416 igep0020 \
1a832dc4 417 igep0030 \
c5fb70c9 418 mx51evk \
f904cdbb 419 omap3_beagle \
9d0fc811 420 omap3_overo \
ad9bc8e5 421 omap3_evm \
2be2c6cc 422 omap3_pandora \
e63e5904 423 omap3_sdp3430 \
7379f45a 424 omap3_zoom1 \
376aee78 425 omap3_zoom2 \
c57cca25 426 omap4_panda \
3e76d62a 427 omap4_sdp4430 \
c474a8eb 428 s5p_goni \
8bc4ee9e 429 smdkc100 \
f904cdbb
DB
430"
431
602cac13
JCPV
432#########################################################################
433## AT91 Systems
434#########################################################################
435
22ee6473
SG
436LIST_at91=" \
437 afeb9260 \
438 at91cap9adk \
439 at91rm9200dk \
440 at91rm9200ek \
441 at91sam9260ek \
442 at91sam9261ek \
443 at91sam9263ek \
d8380c9d 444 at91sam9g10ek \
22ee6473 445 at91sam9g20ek \
5ccc2d99 446 at91sam9m10g45ek \
22ee6473
SG
447 at91sam9rlek \
448 cmc_pu2 \
d8380c9d 449 CPUAT91 \
23b80982
TR
450 CPU9260 \
451 CPU9G20 \
22ee6473 452 csb637 \
77e7273c 453 eb_cpux9k2 \
22ee6473
SG
454 kb9202 \
455 meesc \
456 mp2usb \
457 m501sk \
44d80256 458 otc570 \
22ee6473
SG
459 pm9261 \
460 pm9263 \
b5d289fc 461 pm9g45 \
2dc851e3
AT
462 SBC35_A9G20 \
463 TNY_A9260 \
464 TNY_A9G20 \
602cac13
JCPV
465"
466
7ebf7443
WD
467#########################################################################
468## Xscale Systems
469#########################################################################
470
7c957c0e 471LIST_pxa="$(boards_by_cpu pxa)"
7ebf7443 472
9ec49f8f 473LIST_ixp="$(boards_by_cpu ixp)
fb56579f
KP
474 pdnb3 \
475 scpu \
476"
7ebf7443 477
d9a42c0a
WD
478#########################################################################
479## ARM groups
480#########################################################################
2d5b561e 481
f904cdbb
DB
482LIST_arm=" \
483 ${LIST_SA} \
484 ${LIST_ARM7} \
485 ${LIST_ARM9} \
486 ${LIST_ARM10} \
487 ${LIST_ARM11} \
f56348af 488 ${LIST_ARMV7} \
f904cdbb
DB
489 ${LIST_at91} \
490 ${LIST_pxa} \
491 ${LIST_ixp} \
8ed96046 492"
7ebf7443 493
c021880a 494#########################################################################
b62bdffb 495## MIPS Systems (default = big endian)
c021880a
WD
496#########################################################################
497
fb56579f
KP
498LIST_mips4kc=" \
499 incaip \
0764c164 500 qemu_mips \
2a61eff6
SR
501 vct_platinum \
502 vct_platinum_small \
503 vct_platinum_onenand \
504 vct_platinum_onenand_small \
505 vct_platinumavc \
506 vct_platinumavc_small \
507 vct_platinumavc_onenand \
508 vct_platinumavc_onenand_small \
509 vct_premium \
510 vct_premium_small \
511 vct_premium_onenand \
512 vct_premium_onenand_small \
fb56579f 513"
c021880a 514
fb56579f
KP
515LIST_mips5kc=" \
516 purple \
517"
3e38691e 518
fb56579f
KP
519LIST_au1xx0=" \
520 dbau1000 \
521 dbau1100 \
522 dbau1500 \
523 dbau1550 \
524 dbau1550_el \
525 gth2 \
526"
5da627a4 527
fb56579f
KP
528LIST_mips=" \
529 ${LIST_mips4kc} \
530 ${LIST_mips5kc} \
531 ${LIST_au1xx0} \
532"
c021880a 533
b62bdffb
WD
534#########################################################################
535## MIPS Systems (little endian)
536#########################################################################
537
538LIST_mips4kc_el=""
539
540LIST_mips5kc_el=""
541
fb56579f
KP
542LIST_au1xx0_el=" \
543 dbau1550_el \
b09258c5 544 pb1000 \
fb56579f 545"
b62bdffb 546
fb56579f
KP
547LIST_mips_el=" \
548 ${LIST_mips4kc_el} \
549 ${LIST_mips5kc_el} \
550 ${LIST_au1xx0_el} \
551"
b62bdffb 552
7a8e9bed
WD
553#########################################################################
554## i386 Systems
555#########################################################################
556
9ec49f8f 557LIST_x86="$(boards_by_arch i386)
c620c01e 558 sc520_eNET \
fb56579f 559"
7a8e9bed 560
5c952cf0
WD
561#########################################################################
562## Nios-II Systems
563#########################################################################
564
9ec49f8f 565LIST_nios2="$(boards_by_arch nios2)
8cbb0ddd 566 nios2-generic \
4176c799 567"
5c952cf0 568
857cad37
WD
569#########################################################################
570## MicroBlaze Systems
571#########################################################################
572
9ec49f8f 573LIST_microblaze="$(boards_by_arch microblaze)"
857cad37 574
f8c3b4f3
ZL
575#########################################################################
576## ColdFire Systems
577#########################################################################
578
9ec49f8f 579LIST_coldfire="$(boards_by_arch m68k)
9d79e575 580 astro_mcf5373l \
fb56579f
KP
581 cobra5272 \
582 EB+MCF-EV123 \
583 EB+MCF-EV123_internal \
1552af70 584 M52277EVB \
4a442d31 585 M5235EVB \
aa5f1f9d
TL
586 M5329AFEE \
587 M5373EVB \
05316f8e 588 M54451EVB \
8ae158cd 589 M54455EVB \
57a12720
TL
590 M5475AFE \
591 M5485AFE \
9acb626f 592"
f8c3b4f3 593
6ccec449
WD
594#########################################################################
595## AVR32 Systems
596#########################################################################
597
9ec49f8f 598LIST_avr32="$(boards_by_arch avr32)"
6ccec449 599
ef26a08f
AL
600#########################################################################
601## Blackfin Systems
602#########################################################################
603
9ec49f8f
MF
604LIST_blackfin="$(boards_by_arch blackfin)
605 bf527-ezkit-v2
ef26a08f
AL
606"
607
c7144373
JCPV
608#########################################################################
609## SH Systems
610#########################################################################
611
c655fad0
NI
612LIST_sh2=" \
613 rsk7203 \
614"
d9a42c0a
WD
615LIST_sh3=" \
616 mpr2 \
617 ms7720se \
618"
619
c7144373 620LIST_sh4=" \
aa9c4f1d 621 ms7750se \
c7144373 622 ms7722se \
9e23fe05 623 MigoR \
c133c1fb 624 r7780mp \
f5e2466f 625 r2dplus \
7faddaec 626 sh7763rdp \
0d53a47d 627 sh7785lcr \
6f0da497 628 ap325rxa \
74d9c16a 629 espt \
c7144373
JCPV
630"
631
c7144373 632LIST_sh=" \
6f0da497 633 ${LIST_sh2} \
c7144373
JCPV
634 ${LIST_sh3} \
635 ${LIST_sh4} \
636"
637
c2f02da2
DH
638#########################################################################
639## SPARC Systems
640#########################################################################
641
9ec49f8f 642LIST_sparc="$(boards_by_arch sparc)"
7ebf7443
WD
643
644#-----------------------------------------------------------------------
645
646build_target() {
647 target=$1
648
649 ${MAKE} distclean >/dev/null
d70d8ccc 650 ${MAKE} -s ${target}_config
f9328639
MB
651
652 ${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \
653 | tee ${LOG_DIR}/$target.ERR
f2352877
PT
654
655 # Check for 'make' errors
656 if [ ${PIPESTATUS[0]} -ne 0 ] ; then
657 RC=1
658 fi
659
40a28f08
PT
660 if [ -s ${LOG_DIR}/$target.ERR ] ; then
661 ERR_CNT=$((ERR_CNT + 1))
662 ERR_LIST="${ERR_LIST} $target"
663 else
664 rm ${LOG_DIR}/$target.ERR
665 fi
666
667 TOTAL_CNT=$((TOTAL_CNT + 1))
f9328639 668
208447f8 669 ${CROSS_COMPILE}size ${BUILD_DIR}/u-boot \
f9328639 670 | tee -a ${LOG_DIR}/$target.MAKELOG
7ebf7443 671}
9ec49f8f
MF
672build_targets() {
673 for t in "$@" ; do
674 # If a LIST_xxx var exists, use it. But avoid variable
675 # expansion in the eval when a board name contains certain
676 # characters that the shell interprets.
677 case ${t} in
678 *[-+=]*) list= ;;
679 *) list=$(eval echo '${LIST_'$t'}') ;;
680 esac
681 if [ -n "${list}" ] ; then
682 build_targets ${list}
683 else
684 build_target ${t}
685 fi
686 done
687}
7ebf7443
WD
688
689#-----------------------------------------------------------------------
690
40a28f08
PT
691print_stats() {
692 echo ""
693 echo "--------------------- SUMMARY ----------------------------"
694 echo "Boards compiled: ${TOTAL_CNT}"
695 if [ ${ERR_CNT} -gt 0 ] ; then
696 echo "Boards with warnings or errors: ${ERR_CNT} (${ERR_LIST} )"
697 fi
698 echo "----------------------------------------------------------"
f2352877
PT
699
700 exit $RC
40a28f08 701}
7ebf7443 702
40a28f08 703#-----------------------------------------------------------------------
9ec49f8f 704
0777eafb
WD
705# Build target groups selected by options, plus any command line args
706set -- ${SELECTED} "$@"
707# run PowerPC by default
9ec49f8f 708[ $# = 0 ] && set -- powerpc
9ec49f8f 709build_targets "$@"