X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=MAKEALL;h=c0d04fbe313c39e903778668cfb1b289684cacd4;hb=f4f51a8ff894d34eb332f0d11f6c73c7bf509848;hp=5b06c5477decafc2d18dafd0ad8520e96a572ca0;hpb=612404c28a64a6df300642a1550a65dcc8e01f82;p=karo-tx-uboot.git diff --git a/MAKEALL b/MAKEALL index 5b06c5477d..c0d04fbe31 100755 --- a/MAKEALL +++ b/MAKEALL @@ -2,6 +2,8 @@ # Tool mainly for U-Boot Quality Assurance: build one or more board # configurations with minimal verbosity, showing only warnings and # errors. +# +# SPDX-License-Identifier: GPL-2.0+ usage() { @@ -35,6 +37,9 @@ usage() Environment variables: BUILD_NCPUS number of parallel make jobs (default: auto) CROSS_COMPILE cross-compiler toolchain prefix (default: "") + CROSS_COMPILE_ cross-compiler toolchain prefix for + architecture "ARCH". Substitute "ARCH" for any + supported architecture (default: "") MAKEALL_LOGDIR output all logs to here (default: ./LOG/) BUILD_DIR output build directory (default: ./) BUILD_NBUILDS number of parallel targets (default: 1) @@ -101,9 +106,9 @@ while true ; do -s|--soc) # echo "Option SoC: argument \`$2'" if [ "$opt_s" ] ; then - opt_s="${opt_s%)} || \$6 == \"$2\")" + opt_s="${opt_s%)} || \$4 == \"$2\" || \$4 ~ /$2/)" else - opt_s="(\$6 == \"$2\")" + opt_s="(\$4 == \"$2\" || \$4 ~ /$2/)" fi SELECTED='y' shift 2 ;; @@ -155,7 +160,7 @@ FILTER="\$1 !~ /^#/" [ "$opt_v" ] && FILTER="${FILTER} && $opt_v" if [ "$SELECTED" ] ; then - SELECTED=$(awk '('"$FILTER"') { print $1 }' boards.cfg) + SELECTED=$(awk '('"$FILTER"') { print $7 }' boards.cfg) # Make sure some boards from boards.cfg are actually found if [ -z "$SELECTED" ] ; then @@ -180,13 +185,6 @@ 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 @@ -234,12 +232,12 @@ boards_by_field() -v field="$1" \ -v select="$2" \ -F "$FS" \ - '($1 !~ /^#/ && $field == select) { print $1 }' \ + '($1 !~ /^#/ && $field == select) { print $7 }' \ boards.cfg } boards_by_arch() { boards_by_field 2 "$@" ; } boards_by_cpu() { boards_by_field 3 "$@" "[: \t]+" ; } -boards_by_soc() { boards_by_field 6 "$@" ; } +boards_by_soc() { boards_by_field 4 "$@" ; } ######################################################################### ## MPC5xx Systems @@ -271,12 +269,6 @@ LIST_8xx="$(boards_by_cpu mpc8xx)" LIST_4xx="$(boards_by_cpu ppc4xx)" -######################################################################### -## MPC8220 Systems -######################################################################### - -LIST_8220="$(boards_by_cpu mpc8220)" - ######################################################################### ## MPC824x Systems ######################################################################### @@ -328,7 +320,6 @@ LIST_powerpc=" \ ${LIST_512x} \ ${LIST_5xxx} \ ${LIST_8xx} \ - ${LIST_8220} \ ${LIST_824x} \ ${LIST_8260} \ ${LIST_83xx} \ @@ -446,16 +437,11 @@ LIST_mips=" \ ## MIPS Systems (little endian) ######################################################################### -LIST_xburst_el=" \ - qi_lb60 \ -" - LIST_au1xx0_el=" \ dbau1550_el \ pb1000 \ " LIST_mips_el=" \ - ${LIST_xburst_el} \ ${LIST_au1xx0_el} \ " ######################################################################### @@ -533,56 +519,65 @@ get_target_location() { local vendor="" # Automatic mode - local line=`egrep -i "^[[:space:]]*${target}[[:space:]]" boards.cfg` - + local line=`awk -F '\ +' '\$7 == "'"$target"'" { print \$0 }' boards.cfg` if [ -z "${line}" ] ; then echo "" ; return ; fi set ${line} - # add default board name if needed - [ $# = 3 ] && set ${line} ${1} + CONFIG_NAME="${7%_config}" - CONFIG_NAME="${1%_config}" + [ "${BOARD_NAME}" ] || BOARD_NAME="${7%_config}" - [ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}" - - if [ "$4" = "-" ] ; then - board=${BOARD_NAME} - else - board="$4" + if [ $# -gt 5 ]; then + if [ "$6" = "-" ] ; then + board=${BOARD_NAME} + else + board="$6" + fi fi [ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5" - [ $# -gt 6 ] && [ "$7" != "-" ] && { - tmp="${7%:*}" + [ $# -gt 6 ] && [ "$8" != "-" ] && { + tmp="${8%:*}" if [ "$tmp" ] ; then CONFIG_NAME="$tmp" fi } # Assign board directory to BOARDIR variable - if [ -z "${vendor}" ] ; then + if [ "${vendor}" == "-" ] ; then BOARDDIR=${board} else BOARDDIR=${vendor}/${board} fi - echo "${CONFIG_NAME}:${BOARDDIR}" + echo "${CONFIG_NAME}:${BOARDDIR}:${BOARD_NAME}" } get_target_maintainers() { - local name=`echo $1 | cut -d : -f 1` + local name=`echo $1 | cut -d : -f 3` - if ! grep -qsi "[[:blank:]]${name}[[:blank:]]" MAINTAINERS ; then + local line=`awk -F '\ +' '\$7 == "'"$target"'" { print \$0 }' boards.cfg` + if [ -z "${line}" ]; then echo "" return ; fi - local line=`tac MAINTAINERS | grep -ni "[[:blank:]]${name}[[:blank:]]" | cut -d : -f 1` - local mail=`tac MAINTAINERS | tail -n +${line} | \ - sed -n ":start /.*@.*/ { b mail } ; n ; b start ; :mail /.*@.*/ { p ; n ; b mail } ; q" | \ - sed "s/^.*.*$//"` - echo "$mail" + local mails=`echo ${line} | cut -d ' ' -f 9- | sed -e 's/[^<]*.*[^>]*$//'` + [ "$mails" == "-" ] && mails="" + echo "$mails" +} + +get_target_arch() { + local target=$1 + + # Automatic mode + local line=`egrep -i "^[[:space:]]*${target}[[:space:]]" boards.cfg` + + if [ -z "${line}" ] ; then echo "" ; return ; fi + + set ${line} + echo "$2" } list_target() { @@ -655,6 +650,16 @@ build_target() { export BUILD_DIR="${output_dir}" + target_arch=$(get_target_arch ${target}) + eval cross_toolchain=\$CROSS_COMPILE_`echo $target_arch | tr '[:lower:]' '[:upper:]'` + if [ "${cross_toolchain}" ] ; then + MAKE="make CROSS_COMPILE=${cross_toolchain}" + elif [ "${CROSS_COMPILE}" ] ; then + MAKE="make CROSS_COMPILE=${CROSS_COMPILE}" + else + MAKE=make + fi + ${MAKE} distclean >/dev/null ${MAKE} -s ${target}_config @@ -784,8 +789,20 @@ build_targets() { #----------------------------------------------------------------------- kill_children() { - local pgid=`ps -p $$ --no-headers -o "%r" | tr -d ' '` - local children=`pgrep -g $pgid | grep -v $$ | grep -v $pgid` + local OS=$(uname -s) + local children="" + case "${OS}" in + "Darwin") + # Mac OS X is known to have BSD style ps + local pgid=$(ps -p $$ -o pgid | sed -e "/PGID/d") + children=$(ps -g $pgid -o pid | sed -e "/PID\|$$\|$pgid/d") + ;; + *) + # everything else tries the GNU style + local pgid=$(ps -p $$ --no-headers -o "%r" | tr -d ' ') + children=$(pgrep -g $pgid | sed -e "/$$\|$pgid/d") + ;; + esac kill $children 2> /dev/null wait $children 2> /dev/null