#!/bin/bash # Print statistics when we exit trap exit 1 2 3 15 trap print_stats 0 # Determine number of CPU cores if no default was set : ${BUILD_NCPUS:="`getconf _NPROCESSORS_ONLN`"} if [ "$BUILD_NCPUS" -gt 1 ] then JOBS="-j $((BUILD_NCPUS + 1))" else JOBS="" fi if [ "${CROSS_COMPILE}" ] ; then MAKE="make CROSS_COMPILE=${CROSS_COMPILE}" else MAKE=make fi if [ "${MAKEALL_LOGDIR}" ] ; then LOG_DIR=${MAKEALL_LOGDIR} else LOG_DIR="LOG" fi if [ ! "${BUILD_DIR}" ] ; then BUILD_DIR="." fi [ -d ${LOG_DIR} ] || mkdir ${LOG_DIR} || exit 1 LIST="" # Keep track of the number of builds and errors ERR_CNT=0 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="$(boards_by_cpu mpc5xx)" ######################################################################### ## MPC5xxx Systems ######################################################################### LIST_5xxx="$(boards_by_cpu mpc5xxx) digsy_mtc \ EVAL5200 \ fo300 \ galaxy5200 \ icecube_5200 \ lite5200b \ mcc200 \ MVBC_P \ MVSMR \ pcm030 \ PM520 \ TB5200 \ Total5200 \ Total5200_Rev2 \ TQM5200 \ TQM5200_B \ TQM5200S \ " ######################################################################### ## MPC512x Systems ######################################################################### LIST_512x="$(boards_by_cpu mpc512x) mpc5121ads \ " ######################################################################### ## MPC8xx Systems ######################################################################### LIST_8xx="$(boards_by_cpu mpc8xx) Adder87x \ AdderII \ ADS860 \ FADS823 \ FADS850SAR \ FADS860T \ FPS850L \ GEN860T \ GEN860T_SC \ ICU862_100MHz \ IVML24 \ IVML24_128 \ IVML24_256 \ IVMS8 \ IVMS8_128 \ IVMS8_256 \ MBX \ MBX860T \ MPC86xADS \ MPC885ADS \ NETPHONE \ NETTA \ NETTA2 \ NETTA_ISDN \ NETVIA \ NETVIA_V2 \ RPXlite_DW \ SPD823TS \ SXNI855T \ TK885D \ TQM823L \ TQM823L_LCD \ TQM850L \ TQM855L \ TQM860L \ TQM885D \ v37 \ " ######################################################################### ## PPC4xx Systems ######################################################################### LIST_4xx="$(boards_by_cpu ppc4xx) acadia_nand \ arches \ bamboo_nand \ canyonlands \ canyonlands_nand \ CPCI405 \ CPCI4052 \ CPCI405AB \ CPCI405DT \ devconcenter \ fx12mm \ glacier \ haleakala \ haleakala_nand \ hcu4 \ hcu5 \ intip \ kilauea \ kilauea_nand \ mcu25 \ MIP405T \ ml507 \ ml507_flash \ OCRTC \ ORSG \ PPChameleonEVB \ rainier \ sequoia \ sequoia_nand \ v5fx30teval \ v5fx30teval_flash \ W7OLMC \ W7OLMG \ walnut \ xilinx-ppc440-generic \ xilinx-ppc440-generic_flash \ yellowstone \ yosemite \ " ######################################################################### ## MPC8220 Systems ######################################################################### LIST_8220="$(boards_by_cpu mpc8220)" ######################################################################### ## MPC824x Systems ######################################################################### LIST_824x="$(boards_by_cpu mpc824x) CPC45 \ eXalion \ IDS8247 \ linkstation_HGLAN \ Sandpoint8240 \ Sandpoint8245 \ " ######################################################################### ## MPC8260 Systems (includes 8250, 8255 etc.) ######################################################################### LIST_8260="$(boards_by_cpu mpc8260) cogent_mpc8260 \ CPU86 \ CPU87 \ ep8248 \ ISPAN \ MPC8260ADS \ MPC8272ADS \ PM826 \ PM828 \ Rattler8248 \ TQM8260_AC \ TQM8260_AD \ TQM8260_AE \ " ######################################################################### ## MPC83xx Systems (includes 8349, etc.) ######################################################################### LIST_83xx="$(boards_by_cpu mpc83xx) caddy2 \ MPC8313ERDB_33 \ MPC8313ERDB_NAND_66 \ MPC8315ERDB \ MPC8315ERDB_NAND \ MPC832XEMDS \ MPC832XEMDS_ATM \ MPC8349ITX \ MPC8349ITXGP \ MPC8360EMDS \ MPC8360EMDS_ATM \ MPC8360ERDK_33 \ MPC8360ERDK_66 \ MPC837XEMDS \ sbc8349 \ SIMPC8313_LP \ vme8349 \ " ######################################################################### ## MPC85xx Systems (includes 8540, 8560 etc.) ######################################################################### LIST_85xx="$(boards_by_cpu mpc85xx) MPC8536DS \ MPC8536DS_NAND \ MPC8536DS_SDCARD \ MPC8536DS_SPIFLASH \ MPC8536DS_36BIT \ MPC8540EVAL \ MPC8541CDS \ MPC8548CDS \ MPC8555CDS \ MPC8569MDS \ MPC8569MDS_ATM \ MPC8569MDS_NAND \ MPC8572DS \ MPC8572DS_36BIT \ 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 \ sbc8540 \ sbc8548 \ sbc8548_PCI_33 \ sbc8548_PCI_66 \ sbc8548_PCI_33_PCIE \ sbc8548_PCI_66_PCIE \ sbc8560 \ stxssa \ TQM8540 \ TQM8541 \ TQM8548 \ TQM8548_AG \ TQM8548_BE \ TQM8555 \ TQM8560 \ " ######################################################################### ## MPC86xx Systems ######################################################################### LIST_86xx="$(boards_by_cpu mpc86xx) MPC8641HPCN_36BIT \ MPC8641HPCN \ " ######################################################################### ## 74xx/7xx Systems ######################################################################### LIST_74xx=" \ DB64360 \ DB64460 \ EVB64260 \ mpc7448hpc2 \ P3G4 \ p3m7448 \ PCIPPC2 \ PCIPPC6 \ ZUMA \ " LIST_7xx=" \ BAB7xx \ CPCI750 \ ELPPC \ p3m750 \ ppmc7xx \ " ######################################################################### ## PowerPC groups ######################################################################### LIST_TSEC=" \ ${LIST_83xx} \ ${LIST_85xx} \ ${LIST_86xx} \ " LIST_powerpc=" \ ${LIST_5xx} \ ${LIST_512x} \ ${LIST_5xxx} \ ${LIST_8xx} \ ${LIST_8220} \ ${LIST_824x} \ ${LIST_8260} \ ${LIST_83xx} \ ${LIST_85xx} \ ${LIST_86xx} \ ${LIST_4xx} \ ${LIST_74xx} \ ${LIST_7xx} \ " # Alias "ppc" -> "powerpc" to not break compatibility with older scripts # still using "ppc" instead of "powerpc" LIST_ppc=" \ ${LIST_powerpc} \ " ######################################################################### ## StrongARM Systems ######################################################################### LIST_SA="$(boards_by_cpu sa1100)" ######################################################################### ## ARM7 Systems ######################################################################### LIST_ARM7=" \ ap7 \ ap720t \ armadillo \ B2 \ ep7312 \ evb4510 \ impa7 \ integratorap \ lpc2292sodimm \ modnet50 \ SMN42 \ " ######################################################################### ## ARM9 Systems ######################################################################### LIST_ARM9=" \ a320evb \ ap920t \ ap922_XA10 \ ap926ejs \ ap946es \ ap966 \ cp920t \ cp922_XA10 \ cp926ejs \ cp946es \ cp966 \ da830evm \ da850evm \ edb9301 \ edb9302 \ edb9302a \ edb9307 \ edb9307a \ edb9312 \ edb9315 \ edb9315a \ edminiv2 \ guruplug \ imx27lite \ jadecpu \ lpd7a400 \ magnesium \ mv88f6281gtw_ge \ mx1ads \ mx1fs2 \ netstar \ nhk8815 \ nhk8815_onenand \ omap1510inn \ omap1610h2 \ omap1610inn \ omap5912osk \ omap730p2 \ openrd_base \ rd6281a \ sbc2410x \ scb9328 \ sheevaplug \ smdk2400 \ smdk2410 \ spear300 \ spear310 \ spear320 \ spear600 \ suen3 \ trab \ VCMA9 \ versatile \ versatileab \ versatilepb \ voiceblue \ davinci_dvevm \ davinci_schmoogie \ davinci_sffsdr \ davinci_sonata \ davinci_dm355evm \ davinci_dm355leopard \ davinci_dm365evm \ davinci_dm6467evm \ " ######################################################################### ## ARM10 Systems ######################################################################### LIST_ARM10=" \ integratorcp \ cp1026 \ " ######################################################################### ## ARM11 Systems ######################################################################### LIST_ARM11=" \ cp1136 \ omap2420h4 \ apollon \ imx31_litekit \ imx31_phycore \ imx31_phycore_eet \ mx31ads \ mx31pdk \ mx31pdk_nand \ qong \ smdk6400 \ tnetv107x_evm \ " ######################################################################### ## ARMV7 Systems ######################################################################### LIST_ARMV7=" \ am3517_evm \ devkit8000 \ mx51evk \ omap3_beagle \ omap3_overo \ omap3_evm \ omap3_pandora \ omap3_sdp3430 \ omap3_zoom1 \ omap3_zoom2 \ omap4_panda \ omap4_sdp4430 \ s5p_goni \ smdkc100 \ " ######################################################################### ## AT91 Systems ######################################################################### LIST_at91=" \ afeb9260 \ at91cap9adk \ at91rm9200dk \ at91rm9200ek \ at91sam9260ek \ at91sam9261ek \ at91sam9263ek \ at91sam9g10ek \ at91sam9g20ek \ at91sam9m10g45ek \ at91sam9rlek \ cmc_pu2 \ CPUAT91 \ CPU9260 \ CPU9G20 \ csb637 \ eb_cpux9k2 \ kb9202 \ meesc \ mp2usb \ m501sk \ otc570 \ pm9261 \ pm9263 \ pm9g45 \ SBC35_A9G20 \ TNY_A9260 \ TNY_A9G20 \ " ######################################################################### ## Xscale Systems ######################################################################### LIST_pxa="$(boards_by_cpu pxa) polaris \ trizepsiv \ vpac270_nor \ vpac270_onenand \ " LIST_ixp="$(boards_by_cpu ixp) pdnb3 \ scpu \ " ######################################################################### ## ARM groups ######################################################################### LIST_arm=" \ ${LIST_SA} \ ${LIST_ARM7} \ ${LIST_ARM9} \ ${LIST_ARM10} \ ${LIST_ARM11} \ ${LIST_ARMV7} \ ${LIST_at91} \ ${LIST_pxa} \ ${LIST_ixp} \ " ######################################################################### ## MIPS Systems (default = big endian) ######################################################################### LIST_mips4kc=" \ incaip \ qemu_mips \ vct_platinum \ vct_platinum_small \ vct_platinum_onenand \ vct_platinum_onenand_small \ vct_platinumavc \ vct_platinumavc_small \ vct_platinumavc_onenand \ vct_platinumavc_onenand_small \ vct_premium \ vct_premium_small \ vct_premium_onenand \ vct_premium_onenand_small \ " LIST_mips5kc=" \ purple \ " LIST_au1xx0=" \ dbau1000 \ dbau1100 \ dbau1500 \ dbau1550 \ dbau1550_el \ gth2 \ " LIST_mips=" \ ${LIST_mips4kc} \ ${LIST_mips5kc} \ ${LIST_au1xx0} \ " ######################################################################### ## MIPS Systems (little endian) ######################################################################### LIST_mips4kc_el="" LIST_mips5kc_el="" LIST_au1xx0_el=" \ dbau1550_el \ pb1000 \ " LIST_mips_el=" \ ${LIST_mips4kc_el} \ ${LIST_mips5kc_el} \ ${LIST_au1xx0_el} \ " ######################################################################### ## i386 Systems ######################################################################### LIST_x86="$(boards_by_arch i386) sc520_eNET \ " ######################################################################### ## Nios-II Systems ######################################################################### LIST_nios2="$(boards_by_arch nios2) nios2-generic \ " ######################################################################### ## MicroBlaze Systems ######################################################################### LIST_microblaze="$(boards_by_arch microblaze)" ######################################################################### ## ColdFire Systems ######################################################################### LIST_coldfire="$(boards_by_arch m68k) astro_mcf5373l \ cobra5272 \ EB+MCF-EV123 \ EB+MCF-EV123_internal \ M52277EVB \ M5235EVB \ M5329AFEE \ M5373EVB \ M54451EVB \ M54455EVB \ M5475AFE \ M5485AFE \ " ######################################################################### ## AVR32 Systems ######################################################################### LIST_avr32="$(boards_by_arch avr32)" ######################################################################### ## Blackfin Systems ######################################################################### LIST_blackfin="$(boards_by_arch blackfin) bf527-ezkit-v2 " ######################################################################### ## SH Systems ######################################################################### LIST_sh2=" \ rsk7203 \ " LIST_sh3=" \ mpr2 \ ms7720se \ " LIST_sh4=" \ ms7750se \ ms7722se \ MigoR \ r7780mp \ r2dplus \ sh7763rdp \ sh7785lcr \ ap325rxa \ espt \ " LIST_sh=" \ ${LIST_sh2} \ ${LIST_sh3} \ ${LIST_sh4} \ " ######################################################################### ## SPARC Systems ######################################################################### LIST_sparc="$(boards_by_arch sparc)" #----------------------------------------------------------------------- build_target() { target=$1 ${MAKE} distclean >/dev/null ${MAKE} -s ${target}_config ${MAKE} ${JOBS} all 2>&1 >${LOG_DIR}/$target.MAKELOG \ | tee ${LOG_DIR}/$target.ERR # Check for 'make' errors if [ ${PIPESTATUS[0]} -ne 0 ] ; then RC=1 fi if [ -s ${LOG_DIR}/$target.ERR ] ; then ERR_CNT=$((ERR_CNT + 1)) ERR_LIST="${ERR_LIST} $target" else rm ${LOG_DIR}/$target.ERR fi TOTAL_CNT=$((TOTAL_CNT + 1)) ${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 } #----------------------------------------------------------------------- print_stats() { echo "" echo "--------------------- SUMMARY ----------------------------" echo "Boards compiled: ${TOTAL_CNT}" if [ ${ERR_CNT} -gt 0 ] ; then echo "Boards with warnings or errors: ${ERR_CNT} (${ERR_LIST} )" fi echo "----------------------------------------------------------" exit $RC } #----------------------------------------------------------------------- #----- for now, just run PowerPC by default ----- [ $# = 0 ] && set -- powerpc build_targets "$@"