|
@@ -1,5 +1,134 @@
|
|
#!/bin/bash
|
|
#!/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; 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)
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+#########################################################################
|
|
|
|
+
|
|
# Print statistics when we exit
|
|
# Print statistics when we exit
|
|
trap exit 1 2 3 15
|
|
trap exit 1 2 3 15
|
|
trap print_stats 0
|
|
trap print_stats 0
|
|
@@ -578,7 +707,8 @@ print_stats() {
|
|
|
|
|
|
#-----------------------------------------------------------------------
|
|
#-----------------------------------------------------------------------
|
|
|
|
|
|
-#----- for now, just run PowerPC by default -----
|
|
|
|
|
|
+# Build target groups selected by options, plus any command line args
|
|
|
|
+set -- ${SELECTED} "$@"
|
|
|
|
+# run PowerPC by default
|
|
[ $# = 0 ] && set -- powerpc
|
|
[ $# = 0 ] && set -- powerpc
|
|
-
|
|
|
|
build_targets "$@"
|
|
build_targets "$@"
|