X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=blobdiff_plain;f=MAKEALL;h=767d561c397fafceea04a044515e7bd6d9cc3863;hp=1aa0dc7dd29f01b305f3cb4a91011833517b606e;hb=b9d77535e9335b554af03aa0e0a54b664677d018;hpb=215e1cb33ca676c62d96dfd3aa1053b7a92b7997 diff --git a/MAKEALL b/MAKEALL index 1aa0dc7dd2..767d561c39 100755 --- a/MAKEALL +++ b/MAKEALL @@ -1,5 +1,140 @@ #!/bin/bash +# Tool mainly for U-Boot Quality Assurance: build one or more board +# configurations with minimal verbosity, showing only warnings and +# errors. +# +# There are several ways to select which boards to build. +# +# Traditionally, architecture names (like "powerpc"), CPU family names +# (like "mpc83xx") or board names can be specified on the command +# line; without any arguments, MAKEALL defaults to building all Power +# Architecture systems (i. e. same as for "MAKEALL powerpc"). +# +# With the introduction of the board.cfg file, it has become possible +# to provide additional selections. We use standard command line +# options for this: +# +# -a or --arch : Select architecture +# -c or --cpu : Select CPU family +# -s or --soc : Select SoC type +# -v or --vendor: Select board vendor +# +# Selections by these options are logically ANDed; if the same option +# is used repeatedly, such selections are ORed. So "-v FOO -v BAR" +# will select all configurations where the vendor is either FOO or +# BAR. Any additional arguments specified on the command line are +# always build additionally. +# +# Examples: +# +# - build all Power Architecture boards: +# +# MAKEALL -a powerpc +# or +# MAKEALL --arch powerpc +# or +# MAKEALL powerpc +# +# - build all PowerPC boards manufactured by vendor "esd": +# +# MAKEALL -a powerpc -v esd +# +# - build all PowerPC boards manufactured either by "keymile" or +# "siemens": +# +# MAKEALL -a powerpc -v keymile -v siemens +# +# - build all Freescale boards with MPC83xx CPUs, plus all 4xx boards: +# +# MAKEALL -c mpc83xx -v freescale 4xx +# +######################################################################### + +SHORT_OPTS="a:c:v:s:" +LONG_OPTS="arch:,cpu:,vendor:,soc:" + +# Option processing based on util-linux-2.13/getopt-parse.bash + +# Note that we use `"$@"' to let each command-line parameter expand to a +# separate word. The quotes around `$@' are essential! +# We need TEMP as the `eval set --' would nuke the return value of +# getopt. +TEMP=`getopt -o ${SHORT_OPTS} --long ${LONG_OPTS} \ + -n 'MAKEALL' -- "$@"` + +if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi + +# Note the quotes around `$TEMP': they are essential! +eval set -- "$TEMP" + +SELECTED='' + +while true ; do + case "$1" in + -a|--arch) + # echo "Option ARCH: argument \`$2'" + if [ "$opt_a" ] ; then + opt_a="${opt_a%)} || \$2 == \"$2\")" + else + opt_a="(\$2 == \"$2\")" + fi + SELECTED='y' + shift 2 ;; + -c|--cpu) + # echo "Option CPU: argument \`$2'" + if [ "$opt_c" ] ; then + opt_c="${opt_c%)} || \$3 == \"$2\")" + else + opt_c="(\$3 == \"$2\")" + fi + SELECTED='y' + shift 2 ;; + -s|--soc) + # echo "Option SoC: argument \`$2'" + if [ "$opt_s" ] ; then + opt_s="${opt_s%)} || \$6 == \"$2\")" + else + opt_s="(\$6 == \"$2\")" + fi + SELECTED='y' + shift 2 ;; + -v|--vendor) + # echo "Option VENDOR: argument \`$2'" + if [ "$opt_v" ] ; then + opt_v="${opt_v%)} || \$5 == \"$2\")" + else + opt_v="(\$5 == \"$2\")" + fi + SELECTED='y' + shift 2 ;; + --) + shift ; break ;; + *) + echo "Internal error!" >&2 ; exit 1 ;; + esac +done +# echo "Remaining arguments:" +# for arg do echo '--> '"\`$arg'" ; done + +FILTER="\$1 !~ /^#/" +[ "$opt_a" ] && FILTER="${FILTER} && $opt_a" +[ "$opt_c" ] && FILTER="${FILTER} && $opt_c" +[ "$opt_s" ] && FILTER="${FILTER} && $opt_s" +[ "$opt_v" ] && FILTER="${FILTER} && $opt_v" + +if [ "$SELECTED" ] ; then + SELECTED=$(awk '('"$FILTER"') { print $1 }' boards.cfg) + + # Make sure some boards from boards.cfg are actually found + if [ -z "$SELECTED" ] ; then + echo "Error: No boards selected, invalid arguments" + exit 1 + fi +fi + +######################################################################### + # Print statistics when we exit trap exit 1 2 3 15 trap print_stats 0 @@ -41,452 +176,89 @@ ERR_LIST="" TOTAL_CNT=0 RC=0 +# Helper funcs for parsing boards.cfg +boards_by_field() +{ + awk \ + -v field="$1" \ + -v select="$2" \ + '($1 !~ /^#/ && $field == select) { print $1 }' \ + boards.cfg +} +boards_by_arch() { boards_by_field 2 "$@" ; } +boards_by_cpu() { boards_by_field 3 "$@" ; } + ######################################################################### ## MPC5xx Systems ######################################################################### -LIST_5xx=" \ - cmi_mpc5xx \ -" +LIST_5xx="$(boards_by_cpu mpc5xx)" ######################################################################### ## MPC5xxx Systems ######################################################################### -LIST_5xxx=" \ - BC3450 \ - cm5200 \ - cpci5200 \ - digsy_mtc \ - EVAL5200 \ - fo300 \ - galaxy5200 \ - icecube_5200 \ - inka4x0 \ - ipek01 \ - lite5200b \ - mcc200 \ - mecp5200 \ - motionpro \ - munices \ - MVBC_P \ - MVSMR \ - o2dnt \ - pcm030 \ - pf5200 \ - PM520 \ - TB5200 \ - Total5200 \ - Total5200_Rev2 \ - TQM5200 \ - TQM5200_B \ - TQM5200S \ - v38b \ -" +LIST_5xxx="$(boards_by_cpu mpc5xxx)" ######################################################################### ## MPC512x Systems ######################################################################### -LIST_512x=" \ - aria \ - mecp5123 \ - mpc5121ads \ - pdm360ng \ -" +LIST_512x="$(boards_by_cpu mpc512x)" ######################################################################### ## MPC8xx Systems ######################################################################### -LIST_8xx=" \ - Adder87x \ - AdderII \ - ADS860 \ - AMX860 \ - c2mon \ - CCM \ - cogent_mpc8xx \ - ELPT860 \ - EP88x \ - ESTEEM192E \ - ETX094 \ - FADS823 \ - FADS850SAR \ - FADS860T \ - FLAGADM \ - FPS850L \ - GEN860T \ - GEN860T_SC \ - GENIETV \ - hermes \ - IAD210 \ - ICU862_100MHz \ - IP860 \ - IVML24 \ - IVML24_128 \ - IVML24_256 \ - IVMS8 \ - IVMS8_128 \ - IVMS8_256 \ - KUP4K \ - KUP4X \ - LANTEC \ - lwmon \ - kmsupx4 \ - MBX \ - MBX860T \ - mgsuvd \ - MHPC \ - MPC86xADS \ - MPC885ADS \ - NETPHONE \ - NETTA \ - NETTA2 \ - NETTA_ISDN \ - NETVIA \ - NETVIA_V2 \ - NX823 \ - pcu_e \ - QS823 \ - QS850 \ - QS860T \ - quantum \ - R360MPI \ - RBC823 \ - rmu \ - RPXClassic \ - RPXlite \ - RPXlite_DW \ - RRvision \ - SM850 \ - spc1920 \ - SPD823TS \ - svm_sc8xx \ - SXNI855T \ - TK885D \ - TOP860 \ - TQM823L \ - TQM823L_LCD \ - TQM850L \ - TQM855L \ - TQM860L \ - TQM885D \ - uc100 \ - v37 \ -" + +LIST_8xx="$(boards_by_cpu mpc8xx)" ######################################################################### ## PPC4xx Systems ######################################################################### -LIST_4xx=" \ - acadia \ - acadia_nand \ - ADCIOP \ - alpr \ - AP1000 \ - APC405 \ - AR405 \ - arches \ - ASH405 \ - bamboo \ - bamboo_nand \ - bubinga \ - CANBT \ - canyonlands \ - canyonlands_nand \ - CMS700 \ - CPCI2DP \ - CPCI405 \ - CPCI4052 \ - CPCI405AB \ - CPCI405DT \ - CPCIISER4 \ - CRAYL1 \ - csb272 \ - csb472 \ - DASA_SIM \ - devconcenter \ - dlvision \ - DP405 \ - DU405 \ - DU440 \ - ebony \ - ERIC \ - fx12mm \ - G2000 \ - gdppc440etx \ - glacier \ - haleakala \ - haleakala_nand \ - hcu4 \ - hcu5 \ - HH405 \ - HUB405 \ - icon \ - intip \ - JSE \ - KAREF \ - katmai \ - kilauea \ - kilauea_nand \ - korat \ - luan \ - lwmon5 \ - makalu \ - mcu25 \ - METROBOX \ - MIP405 \ - MIP405T \ - ML2 \ - ml507 \ - ml507_flash \ - neo \ - ocotea \ - OCRTC \ - ORSG \ - p3p440 \ - PCI405 \ - pcs440ep \ - PIP405 \ - PLU405 \ - PMC405 \ - PMC405DE \ - PMC440 \ - PPChameleonEVB \ - quad100hd \ - rainier \ - redwood \ - sbc405 \ - sc3 \ - sequoia \ - sequoia_nand \ - t3corp \ - taihu \ - taishan \ - v5fx30teval \ - v5fx30teval_flash \ - VOH405 \ - VOM405 \ - W7OLMC \ - W7OLMG \ - walnut \ - WUH405 \ - xilinx-ppc440-generic \ - xilinx-ppc440-generic_flash \ - XPEDITE1000 \ - yellowstone \ - yosemite \ - yucca \ - zeus \ -" +LIST_4xx="$(boards_by_cpu ppc4xx)" ######################################################################### ## MPC8220 Systems ######################################################################### -LIST_8220=" \ - Alaska8220 \ - Yukon8220 \ -" +LIST_8220="$(boards_by_cpu mpc8220)" ######################################################################### ## MPC824x Systems ######################################################################### -LIST_824x=" \ - A3000 \ - barco \ - BMW \ - CPC45 \ - CU824 \ - debris \ - eXalion \ - HIDDEN_DRAGON \ - IDS8247 \ - linkstation_HGLAN \ - MOUSSE \ - MUSENKI \ - MVBLUE \ - OXC \ - PN62 \ - Sandpoint8240 \ - Sandpoint8245 \ - sbc8240 \ - utx8245 \ -" +LIST_824x="$(boards_by_cpu mpc824x)" ######################################################################### ## MPC8260 Systems (includes 8250, 8255 etc.) ######################################################################### -LIST_8260=" \ - atc \ - cogent_mpc8260 \ - CPU86 \ - CPU87 \ - ep8248 \ - ep8260 \ - ep82xxm \ - gw8260 \ - hymod \ - IPHASE4539 \ - ISPAN \ - mgcoge \ - MPC8260ADS \ - MPC8266ADS \ - MPC8272ADS \ - PM826 \ - PM828 \ - ppmc8260 \ - Rattler8248 \ - RPXsuper \ - rsdproto \ - sacsng \ - sbc8260 \ - SCM \ - TQM8260_AC \ - TQM8260_AD \ - TQM8260_AE \ - TQM8272 \ - ZPC1900 \ -" +LIST_8260="$(boards_by_cpu mpc8260)" ######################################################################### ## MPC83xx Systems (includes 8349, etc.) ######################################################################### -LIST_83xx=" \ - caddy2 \ - kmeter1 \ - MPC8308RDB \ - MPC8313ERDB_33 \ - MPC8313ERDB_NAND_66 \ - MPC8315ERDB \ - MPC8315ERDB_NAND \ - MPC8323ERDB \ - MPC832XEMDS \ - MPC832XEMDS_ATM \ - MPC8349EMDS \ - MPC8349ITX \ - MPC8349ITXGP \ - MPC8360EMDS \ - MPC8360EMDS_ATM \ - MPC8360ERDK_33 \ - MPC8360ERDK_66 \ - MPC837XEMDS \ - MPC837XERDB \ - MVBLM7 \ - sbc8349 \ - SIMPC8313_LP \ - TQM834x \ - ve8313 \ - vme8349 \ -" - +LIST_83xx="$(boards_by_cpu mpc83xx)" ######################################################################### ## MPC85xx Systems (includes 8540, 8560 etc.) ######################################################################### -LIST_85xx=" \ - ATUM8548 \ - MPC8536DS \ - MPC8536DS_NAND \ - MPC8536DS_SDCARD \ - MPC8536DS_SPIFLASH \ - MPC8536DS_36BIT \ - MPC8540ADS \ - MPC8540EVAL \ - MPC8541CDS \ - MPC8544DS \ - MPC8548CDS \ - MPC8555CDS \ - MPC8560ADS \ - MPC8568MDS \ - MPC8569MDS \ - MPC8569MDS_ATM \ - MPC8569MDS_NAND \ - MPC8572DS \ - MPC8572DS_36BIT \ - P1022DS \ - P2020DS \ - P2020DS_36BIT \ - P1011RDB \ - P1011RDB_NAND \ - P1011RDB_SDCARD \ - P1011RDB_SPIFLASH \ - P1020RDB \ - P1020RDB_NAND \ - P1020RDB_SDCARD \ - P1020RDB_SPIFLASH \ - P2010RDB \ - P2010RDB_NAND \ - P2010RDB_SDCARD \ - P2010RDB_SPIFLASH \ - P2020RDB \ - P2020RDB_NAND \ - P2020RDB_SDCARD \ - P2020RDB_SPIFLASH \ - P4080DS \ - PM854 \ - PM856 \ - sbc8540 \ - sbc8548 \ - sbc8548_PCI_33 \ - sbc8548_PCI_66 \ - sbc8548_PCI_33_PCIE \ - sbc8548_PCI_66_PCIE \ - sbc8560 \ - socrates \ - stxgp3 \ - stxssa \ - TQM8540 \ - TQM8541 \ - TQM8548 \ - TQM8548_AG \ - TQM8548_BE \ - TQM8555 \ - TQM8560 \ - XPEDITE5200 \ - XPEDITE5370 \ -" +LIST_85xx="$(boards_by_cpu mpc85xx)" ######################################################################### ## MPC86xx Systems ######################################################################### -LIST_86xx=" \ - MPC8610HPCD \ - MPC8641HPCN_36BIT \ - MPC8641HPCN \ - sbc8641d \ - XPEDITE5170 \ -" +LIST_86xx="$(boards_by_cpu mpc86xx)" ######################################################################### ## 74xx/7xx Systems ######################################################################### -LIST_74xx=" \ - DB64360 \ - DB64460 \ - EVB64260 \ - mpc7448hpc2 \ - P3G4 \ - p3m7448 \ - PCIPPC2 \ - PCIPPC6 \ - ZUMA \ -" - -LIST_7xx=" \ - BAB7xx \ - CPCI750 \ - ELPPC \ - p3m750 \ - ppmc7xx \ -" +LIST_74xx_7xx="$(boards_by_cpu 74xx_7xx)" ######################################################################### ## PowerPC groups @@ -510,8 +282,7 @@ LIST_powerpc=" \ ${LIST_85xx} \ ${LIST_86xx} \ ${LIST_4xx} \ - ${LIST_74xx} \ - ${LIST_7xx} \ + ${LIST_74xx_7xx}\ " # Alias "ppc" -> "powerpc" to not break compatibility with older scripts @@ -524,13 +295,7 @@ LIST_ppc=" \ ## StrongARM Systems ######################################################################### -LIST_SA=" \ - assabet \ - dnp1110 \ - gcplus \ - lart \ - shannon \ -" +LIST_SA="$(boards_by_cpu sa1100)" ######################################################################### ## ARM7 Systems @@ -652,7 +417,10 @@ LIST_ARM11=" \ ######################################################################### LIST_ARMV7=" \ am3517_evm \ + ca9x4_ct_vxp \ devkit8000 \ + igep0020 \ + igep0030 \ mx51evk \ omap3_beagle \ omap3_overo \ @@ -706,35 +474,9 @@ LIST_at91=" \ ## Xscale Systems ######################################################################### -LIST_pxa=" \ - cerf250 \ - colibri_pxa270 \ - cradle \ - csb226 \ - delta \ - innokom \ - lubbock \ - pleb2 \ - polaris \ - pxa255_idp \ - trizepsiv \ - vpac270_nor \ - vpac270_onenand \ - wepep250 \ - xaeniax \ - xm250 \ - xsengine \ - zipitz2 \ - zylonite \ -" +LIST_pxa="$(boards_by_cpu pxa)" -LIST_ixp=" \ - actux1 \ - actux2 \ - actux3 \ - actux4 \ - ixdp425 \ - ixdpg425 \ +LIST_ixp="$(boards_by_cpu ixp) pdnb3 \ scpu \ " @@ -818,21 +560,13 @@ LIST_mips_el=" \ ## i386 Systems ######################################################################### -LIST_I486=" \ - sc520_eNET \ -" - -LIST_x86=" \ - ${LIST_I486} \ -" +LIST_x86="$(boards_by_arch i386)" ######################################################################### ## Nios-II Systems ######################################################################### -LIST_nios2=" \ - PCI5441 \ - PK1C20 \ +LIST_nios2="$(boards_by_arch nios2) nios2-generic \ " @@ -840,128 +574,54 @@ LIST_nios2=" \ ## MicroBlaze Systems ######################################################################### -LIST_microblaze=" \ - microblaze-generic \ -" +LIST_microblaze="$(boards_by_arch microblaze)" ######################################################################### ## ColdFire Systems ######################################################################### -LIST_coldfire=" \ +LIST_coldfire="$(boards_by_arch m68k) astro_mcf5373l \ cobra5272 \ EB+MCF-EV123 \ EB+MCF-EV123_internal \ - idmr \ - M5208EVBE \ M52277EVB \ M5235EVB \ - M5249EVB \ - M5253DEMO \ - M5253EVBE \ - M5271EVB \ - M5272C3 \ - M5275EVB \ - M5282EVB \ - M53017EVB \ M5329AFEE \ M5373EVB \ M54451EVB \ M54455EVB \ M5475AFE \ M5485AFE \ - TASREG \ " ######################################################################### ## AVR32 Systems ######################################################################### -LIST_avr32=" \ - atstk1002 \ - atstk1003 \ - atstk1004 \ - atstk1006 \ - atngw100 \ - favr-32-ezkit \ - hammerhead \ - mimc200 \ -" +LIST_avr32="$(boards_by_arch avr32)" ######################################################################### ## Blackfin Systems ######################################################################### -LIST_blackfin=" \ - bf518f-ezbrd \ - bf526-ezbrd \ - bf527-ad7160-eval \ - bf527-ezkit \ - bf527-ezkit-v2 \ - bf533-ezkit \ - bf533-stamp \ - bf537-minotaur \ - bf537-pnav \ - bf537-srv1 \ - bf537-stamp \ - bf538f-ezkit \ - bf548-ezkit \ - bf561-acvilon \ - bf561-ezkit \ - blackstamp \ - cm-bf527 \ - cm-bf533 \ - cm-bf537e \ - cm-bf537u \ - cm-bf548 \ - cm-bf561 \ - ibf-dsp561 \ - ip04 \ - tcm-bf518 \ - tcm-bf537 \ -" +LIST_blackfin="$(boards_by_arch blackfin)" ######################################################################### ## SH Systems ######################################################################### -LIST_sh2=" \ - rsk7203 \ -" -LIST_sh3=" \ - mpr2 \ - ms7720se \ -" - -LIST_sh4=" \ - ms7750se \ - ms7722se \ - MigoR \ - r7780mp \ - r2dplus \ - sh7763rdp \ - sh7785lcr \ - ap325rxa \ - espt \ -" +LIST_sh2="$(boards_by_cpu sh2)" +LIST_sh3="$(boards_by_cpu sh3)" +LIST_sh4="$(boards_by_cpu sh4)" -LIST_sh=" \ - ${LIST_sh2} \ - ${LIST_sh3} \ - ${LIST_sh4} \ -" +LIST_sh="$(boards_by_arch sh)" ######################################################################### ## SPARC Systems ######################################################################### -LIST_sparc="gr_xc3s_1500 gr_cpci_ax2000 gr_ep2s60 grsim grsim_leon2" - -#----------------------------------------------------------------------- - -#----- for now, just run PowerPC by default ----- -[ $# = 0 ] && set $LIST_powerpc +LIST_sparc="$(boards_by_arch sparc)" #----------------------------------------------------------------------- @@ -969,7 +629,7 @@ build_target() { target=$1 ${MAKE} distclean >/dev/null - ${MAKE} ${target}_config + ${MAKE} -s ${target}_config ${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \ | tee ${LOG_DIR}/$target.ERR @@ -991,6 +651,22 @@ build_target() { ${CROSS_COMPILE}size ${BUILD_DIR}/u-boot \ | tee -a ${LOG_DIR}/$target.MAKELOG } +build_targets() { + for t in "$@" ; do + # If a LIST_xxx var exists, use it. But avoid variable + # expansion in the eval when a board name contains certain + # characters that the shell interprets. + case ${t} in + *[-+=]*) list= ;; + *) list=$(eval echo '${LIST_'$t'}') ;; + esac + if [ -n "${list}" ] ; then + build_targets ${list} + else + build_target ${t} + fi + done +} #----------------------------------------------------------------------- @@ -1007,27 +683,9 @@ print_stats() { } #----------------------------------------------------------------------- -for arg in $@ -do - case "$arg" in - arm|SA|ARM7|ARM9|ARM10|ARM11|ARMV7|at91|ixp|pxa \ - |avr32 \ - |blackfin \ - |coldfire \ - |microblaze \ - |mips|mips_el \ - |nios2 \ - |ppc|powerpc|5xx|5xxx|512x|8xx|8220|824x|8260|83xx|85xx|86xx|4xx|7xx|74xx|TSEC \ - |sh|sh2|sh3|sh4 \ - |sparc \ - |x86|I486 \ - ) - for target in `eval echo '$LIST_'${arg}` - do - build_target ${target} - done - ;; - *) build_target ${arg} - ;; - esac -done + +# Build target groups selected by options, plus any command line args +set -- ${SELECTED} "$@" +# run PowerPC by default +[ $# = 0 ] && set -- powerpc +build_targets "$@"