Add command line handling to select boards to be built by architecture, CPU family, vendor or SoC name.
Signed-off-by: Wolfgang Denk <w...@denx.de> --- MAKEALL | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 106 insertions(+), 3 deletions(-) diff --git a/MAKEALL b/MAKEALL index 73174e5..b273d1c 100755 --- a/MAKEALL +++ b/MAKEALL @@ -1,5 +1,103 @@ #!/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 iontroduction 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; 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 manucatured by vendor "esd": +# +# MAKEALL -a powerpc -v esd +# +# - build all Freescale boards with MPC83xx CPUs, plus all 4xx boards: +# +# MAKEALL -c mpc83xx -v freescale 4xx +# +######################################################################### + +# 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 a:c:v:s: --long arch:,cpu:,vendor:,soc: \ + -n 'MAKEALL' -- "$@"` + +if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi + +# Note the quotes around `$TEMP': they are essential! +eval set -- "$TEMP" + +FILTER="$1 !~ /^#/" +SELECTED='' + +while true ; do + case "$1" in + -a|--arch) + # echo "Option ARCH: argument \`$2'" + FILTER="${FILTER} && \$2 == \"$2\"" + SELECTED='y' + shift 2 ;; + -c|--cpu) + # echo "Option CPU: argument \`$2'" + FILTER="${FILTER} && \$3 == \"$2\"" + SELECTED='y' + shift 2 ;; + -s|--soc) + # echo "Option SoC: argument \`$2'" + FILTER="${FILTER} && \$6 == \"$2\"" + SELECTED='y' + shift 2 ;; + -v|--vendor) + # echo "Option VENDOR: argument \`$2'" + FILTER="${FILTER} && \$5 == \"$2\"" + SELECTED='y' + shift 2 ;; + --) + shift ; break ;; + *) + echo "Internal error!" ; exit 1 ;; + esac +done +# echo "Remaining arguments:" +# for arg do echo '--> '"\`$arg'" ; done + +if [ "$SELECTED" ] ; then + SELECTED="$(awk '('"$FILTER"') { print $1 }' boards.cfg)" +fi + +######################################################################### + # Print statistics when we exit trap exit 1 2 3 15 trap print_stats 0 @@ -575,7 +673,12 @@ print_stats() { #----------------------------------------------------------------------- -#----- for now, just run PowerPC by default ----- -[ $# = 0 ] && set -- powerpc +# Build target groups selected by options, plus any command line args +if [ "$SELECTED" ] ; then + build_targets $SELECTED "$@" +else + # run PowerPC by default + [ $# = 0 ] && set -- powerpc -build_targets "$@" + build_targets "$@" +fi -- 1.7.2.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot