]> git.ipfire.org Git - people/ms/u-boot.git/blame_incremental - MAKEALL
powerpc/85xx: rename NAND prefixes to CONFIG_SYS
[people/ms/u-boot.git] / MAKEALL
... / ...
CommitLineData
1#!/bin/bash
2
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 introduction 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)
128
129 # Make sure some boards from boards.cfg are actually found
130 if [ -z "$SELECTED" ] ; then
131 echo "Error: No boards selected, invalid arguments"
132 exit 1
133 fi
134fi
135
136#########################################################################
137
138# Print statistics when we exit
139trap exit 1 2 3 15
140trap print_stats 0
141
142# Determine number of CPU cores if no default was set
143: ${BUILD_NCPUS:="`getconf _NPROCESSORS_ONLN`"}
144
145if [ "$BUILD_NCPUS" -gt 1 ]
146then
147 JOBS="-j $((BUILD_NCPUS + 1))"
148else
149 JOBS=""
150fi
151
152
153if [ "${CROSS_COMPILE}" ] ; then
154 MAKE="make CROSS_COMPILE=${CROSS_COMPILE}"
155else
156 MAKE=make
157fi
158
159if [ "${MAKEALL_LOGDIR}" ] ; then
160 LOG_DIR=${MAKEALL_LOGDIR}
161else
162 LOG_DIR="LOG"
163fi
164
165if [ ! "${BUILD_DIR}" ] ; then
166 BUILD_DIR="."
167fi
168
169[ -d ${LOG_DIR} ] || mkdir ${LOG_DIR} || exit 1
170
171LIST=""
172
173# Keep track of the number of builds and errors
174ERR_CNT=0
175ERR_LIST=""
176TOTAL_CNT=0
177RC=0
178
179# Helper funcs for parsing boards.cfg
180boards_by_field()
181{
182 awk \
183 -v field="$1" \
184 -v select="$2" \
185 '($1 !~ /^#/ && $field == select) { print $1 }' \
186 boards.cfg
187}
188boards_by_arch() { boards_by_field 2 "$@" ; }
189boards_by_cpu() { boards_by_field 3 "$@" ; }
190boards_by_soc() { boards_by_field 6 "$@" ; }
191
192#########################################################################
193## MPC5xx Systems
194#########################################################################
195
196LIST_5xx="$(boards_by_cpu mpc5xx)"
197
198#########################################################################
199## MPC5xxx Systems
200#########################################################################
201
202LIST_5xxx="$(boards_by_cpu mpc5xxx)"
203
204#########################################################################
205## MPC512x Systems
206#########################################################################
207
208LIST_512x="$(boards_by_cpu mpc512x)"
209
210#########################################################################
211## MPC8xx Systems
212#########################################################################
213
214LIST_8xx="$(boards_by_cpu mpc8xx)"
215
216#########################################################################
217## PPC4xx Systems
218#########################################################################
219
220LIST_4xx="$(boards_by_cpu ppc4xx)"
221
222#########################################################################
223## MPC8220 Systems
224#########################################################################
225
226LIST_8220="$(boards_by_cpu mpc8220)"
227
228#########################################################################
229## MPC824x Systems
230#########################################################################
231
232LIST_824x="$(boards_by_cpu mpc824x)"
233
234#########################################################################
235## MPC8260 Systems (includes 8250, 8255 etc.)
236#########################################################################
237
238LIST_8260="$(boards_by_cpu mpc8260)"
239
240#########################################################################
241## MPC83xx Systems (includes 8349, etc.)
242#########################################################################
243
244LIST_83xx="$(boards_by_cpu mpc83xx)"
245
246#########################################################################
247## MPC85xx Systems (includes 8540, 8560 etc.)
248#########################################################################
249
250LIST_85xx="$(boards_by_cpu mpc85xx)"
251
252#########################################################################
253## MPC86xx Systems
254#########################################################################
255
256LIST_86xx="$(boards_by_cpu mpc86xx)"
257
258#########################################################################
259## 74xx/7xx Systems
260#########################################################################
261
262LIST_74xx_7xx="$(boards_by_cpu 74xx_7xx)"
263
264#########################################################################
265## PowerPC groups
266#########################################################################
267
268LIST_TSEC=" \
269 ${LIST_83xx} \
270 ${LIST_85xx} \
271 ${LIST_86xx} \
272"
273
274LIST_powerpc=" \
275 ${LIST_5xx} \
276 ${LIST_512x} \
277 ${LIST_5xxx} \
278 ${LIST_8xx} \
279 ${LIST_8220} \
280 ${LIST_824x} \
281 ${LIST_8260} \
282 ${LIST_83xx} \
283 ${LIST_85xx} \
284 ${LIST_86xx} \
285 ${LIST_4xx} \
286 ${LIST_74xx_7xx}\
287"
288
289# Alias "ppc" -> "powerpc" to not break compatibility with older scripts
290# still using "ppc" instead of "powerpc"
291LIST_ppc=" \
292 ${LIST_powerpc} \
293"
294
295#########################################################################
296## StrongARM Systems
297#########################################################################
298
299LIST_SA="$(boards_by_cpu sa1100)"
300
301#########################################################################
302## ARM7 Systems
303#########################################################################
304
305LIST_ARM7=" \
306 ap7 \
307 ap720t \
308 armadillo \
309 B2 \
310 ep7312 \
311 evb4510 \
312 impa7 \
313 integratorap \
314 lpc2292sodimm \
315 modnet50 \
316 SMN42 \
317"
318
319#########################################################################
320## ARM9 Systems
321#########################################################################
322
323LIST_ARM9=" \
324 a320evb \
325 ap920t \
326 ap922_XA10 \
327 ap926ejs \
328 ap946es \
329 ap966 \
330 aspenite \
331 cp920t \
332 cp922_XA10 \
333 cp926ejs \
334 cp946es \
335 cp966 \
336 da830evm \
337 da850evm \
338 edb9301 \
339 edb9302 \
340 edb9302a \
341 edb9307 \
342 edb9307a \
343 edb9312 \
344 edb9315 \
345 edb9315a \
346 edminiv2 \
347 guruplug \
348 imx27lite \
349 jadecpu \
350 lpd7a400 \
351 magnesium \
352 mv88f6281gtw_ge \
353 mx1ads \
354 mx1fs2 \
355 netstar \
356 nhk8815 \
357 nhk8815_onenand \
358 omap1510inn \
359 omap1610h2 \
360 omap1610inn \
361 omap5912osk \
362 omap730p2 \
363 openrd_base \
364 rd6281a \
365 sbc2410x \
366 scb9328 \
367 sheevaplug \
368 smdk2400 \
369 smdk2410 \
370 spear300 \
371 spear310 \
372 spear320 \
373 spear600 \
374 suen3 \
375 trab \
376 VCMA9 \
377 versatile \
378 versatileab \
379 versatilepb \
380 voiceblue \
381 davinci_dvevm \
382 davinci_schmoogie \
383 davinci_sffsdr \
384 davinci_sonata \
385 davinci_dm355evm \
386 davinci_dm355leopard \
387 davinci_dm365evm \
388 davinci_dm6467evm \
389"
390
391#########################################################################
392## ARM10 Systems
393#########################################################################
394LIST_ARM10=" \
395 integratorcp \
396 cp1026 \
397"
398
399#########################################################################
400## ARM11 Systems
401#########################################################################
402LIST_ARM11=" \
403 cp1136 \
404 omap2420h4 \
405 apollon \
406 imx31_litekit \
407 imx31_phycore \
408 imx31_phycore_eet \
409 mx31ads \
410 mx31pdk \
411 mx31pdk_nand \
412 qong \
413 smdk6400 \
414 tnetv107x_evm \
415"
416
417#########################################################################
418## ARMV7 Systems
419#########################################################################
420LIST_ARMV7=" \
421 am3517_evm \
422 ca9x4_ct_vxp \
423 devkit8000 \
424 igep0020 \
425 igep0030 \
426 mx51evk \
427 omap3_beagle \
428 omap3_overo \
429 omap3_evm \
430 omap3_pandora \
431 omap3_sdp3430 \
432 omap3_zoom1 \
433 omap3_zoom2 \
434 omap4_panda \
435 omap4_sdp4430 \
436 s5p_goni \
437 smdkc100 \
438"
439
440#########################################################################
441## AT91 Systems
442#########################################################################
443
444LIST_at91="$(boards_by_soc at91)\
445 $(boards_by_soc at91rm9200)\
446 at91sam9260ek \
447 at91sam9261ek \
448 at91sam9263ek \
449 at91sam9g10ek \
450 at91sam9g20ek \
451 at91sam9m10g45ek \
452 at91sam9rlek \
453 CPUAT91 \
454 CPU9260 \
455 CPU9G20 \
456 pm9g45 \
457 SBC35_A9G20 \
458 TNY_A9260 \
459 TNY_A9G20 \
460"
461
462#########################################################################
463## Xscale Systems
464#########################################################################
465
466LIST_pxa="$(boards_by_cpu pxa)"
467
468LIST_ixp="$(boards_by_cpu ixp)
469 pdnb3 \
470 scpu \
471"
472
473#########################################################################
474## ARM groups
475#########################################################################
476
477LIST_arm=" \
478 ${LIST_SA} \
479 ${LIST_ARM7} \
480 ${LIST_ARM9} \
481 ${LIST_ARM10} \
482 ${LIST_ARM11} \
483 ${LIST_ARMV7} \
484 ${LIST_at91} \
485 ${LIST_pxa} \
486 ${LIST_ixp} \
487"
488
489#########################################################################
490## MIPS Systems (default = big endian)
491#########################################################################
492
493LIST_mips4kc=" \
494 incaip \
495 qemu_mips \
496 vct_platinum \
497 vct_platinum_small \
498 vct_platinum_onenand \
499 vct_platinum_onenand_small \
500 vct_platinumavc \
501 vct_platinumavc_small \
502 vct_platinumavc_onenand \
503 vct_platinumavc_onenand_small \
504 vct_premium \
505 vct_premium_small \
506 vct_premium_onenand \
507 vct_premium_onenand_small \
508"
509
510LIST_mips5kc=""
511
512LIST_au1xx0=" \
513 dbau1000 \
514 dbau1100 \
515 dbau1500 \
516 dbau1550 \
517 dbau1550_el \
518 gth2 \
519"
520
521LIST_mips=" \
522 ${LIST_mips4kc} \
523 ${LIST_mips5kc} \
524 ${LIST_au1xx0} \
525"
526
527#########################################################################
528## MIPS Systems (little endian)
529#########################################################################
530
531LIST_mips4kc_el=""
532
533LIST_mips5kc_el=""
534
535LIST_au1xx0_el=" \
536 dbau1550_el \
537 pb1000 \
538"
539
540LIST_mips_el=" \
541 ${LIST_mips4kc_el} \
542 ${LIST_mips5kc_el} \
543 ${LIST_au1xx0_el} \
544"
545
546#########################################################################
547## i386 Systems
548#########################################################################
549
550LIST_x86="$(boards_by_arch i386)"
551
552#########################################################################
553## Nios-II Systems
554#########################################################################
555
556LIST_nios2="$(boards_by_arch nios2)
557 nios2-generic \
558"
559
560#########################################################################
561## MicroBlaze Systems
562#########################################################################
563
564LIST_microblaze="$(boards_by_arch microblaze)"
565
566#########################################################################
567## ColdFire Systems
568#########################################################################
569
570LIST_coldfire="$(boards_by_arch m68k)
571 astro_mcf5373l \
572 cobra5272 \
573 EB+MCF-EV123 \
574 EB+MCF-EV123_internal \
575 M52277EVB \
576 M5235EVB \
577 M5329AFEE \
578 M5373EVB \
579 M54451EVB \
580 M54455EVB \
581 M5475AFE \
582 M5485AFE \
583"
584
585#########################################################################
586## AVR32 Systems
587#########################################################################
588
589LIST_avr32="$(boards_by_arch avr32)"
590
591#########################################################################
592## Blackfin Systems
593#########################################################################
594
595LIST_blackfin="$(boards_by_arch blackfin)"
596
597#########################################################################
598## SH Systems
599#########################################################################
600
601LIST_sh2="$(boards_by_cpu sh2)"
602LIST_sh3="$(boards_by_cpu sh3)"
603LIST_sh4="$(boards_by_cpu sh4)"
604
605LIST_sh="$(boards_by_arch sh)"
606
607#########################################################################
608## SPARC Systems
609#########################################################################
610
611LIST_sparc="$(boards_by_arch sparc)"
612
613#-----------------------------------------------------------------------
614
615build_target() {
616 target=$1
617
618 ${MAKE} distclean >/dev/null
619 ${MAKE} -s ${target}_config
620
621 ${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \
622 | tee ${LOG_DIR}/$target.ERR
623
624 # Check for 'make' errors
625 if [ ${PIPESTATUS[0]} -ne 0 ] ; then
626 RC=1
627 fi
628
629 if [ -s ${LOG_DIR}/$target.ERR ] ; then
630 ERR_CNT=$((ERR_CNT + 1))
631 ERR_LIST="${ERR_LIST} $target"
632 else
633 rm ${LOG_DIR}/$target.ERR
634 fi
635
636 TOTAL_CNT=$((TOTAL_CNT + 1))
637
638 ${CROSS_COMPILE}size ${BUILD_DIR}/u-boot \
639 | tee -a ${LOG_DIR}/$target.MAKELOG
640}
641build_targets() {
642 for t in "$@" ; do
643 # If a LIST_xxx var exists, use it. But avoid variable
644 # expansion in the eval when a board name contains certain
645 # characters that the shell interprets.
646 case ${t} in
647 *[-+=]*) list= ;;
648 *) list=$(eval echo '${LIST_'$t'}') ;;
649 esac
650 if [ -n "${list}" ] ; then
651 build_targets ${list}
652 else
653 build_target ${t}
654 fi
655 done
656}
657
658#-----------------------------------------------------------------------
659
660print_stats() {
661 echo ""
662 echo "--------------------- SUMMARY ----------------------------"
663 echo "Boards compiled: ${TOTAL_CNT}"
664 if [ ${ERR_CNT} -gt 0 ] ; then
665 echo "Boards with warnings or errors: ${ERR_CNT} (${ERR_LIST} )"
666 fi
667 echo "----------------------------------------------------------"
668
669 exit $RC
670}
671
672#-----------------------------------------------------------------------
673
674# Build target groups selected by options, plus any command line args
675set -- ${SELECTED} "$@"
676# run PowerPC by default
677[ $# = 0 ] && set -- powerpc
678build_targets "$@"