rebuild.sh: Add --system=<list> option.
This patch adds a new option to rebuild.sh that allows one to select
the target systems to build binaries for. This also changes the default
to 64-bit only for all platforms, since we don't intend to release
32-bit QEMU binaries in the future.
diff --git a/scripts/common.shi b/scripts/common.shi
index 8e94bc4..aec0754 100644
--- a/scripts/common.shi
+++ b/scripts/common.shi
@@ -296,3 +296,24 @@
;;
esac
}
+
+# Convert commas into spaces.
+# $1: input string
+# Out: input string, with each comma replaced by a space.
+commas_to_spaces () {
+ printf "%s" "$1" | tr ',' ' '
+}
+
+
+# Return success iff item |$2| is in list |$1|.
+# $1: input list
+# $2: item to find in list.
+list_contains () {
+ local ITEM
+ for ITEM in $(commas_to_spaces "$1"); do
+ if [ "$ITEM" = "$2" ]; then
+ return 0
+ fi
+ done
+ return 1
+}
diff --git a/scripts/rebuild.sh b/scripts/rebuild.sh
index f0c5020..6697bf1 100755
--- a/scripts/rebuild.sh
+++ b/scripts/rebuild.sh
@@ -3,10 +3,28 @@
. $(dirname "$0")/common.shi
shell_import build-defaults.shi
+case $(uname -s) in
+ Linux)
+ BUILD_OS=linux-x86_64
+ DEFAULT_SYSTEMS="linux-x86_64,windows-x86_64"
+ ;;
+ Darwin)
+ BUILD_OS=darwin-x86_64
+ DEFAULT_SYSTEMS="darwin-x86_64"
+ ;;
+ *)
+ panic "Your operating system is not supported!"
+ ;;
+esac
+
+# List of valid target systems.
+VALID_SYSTEMS="linux-x86,linux-x86_64,windows-x86,windows-x86_64,darwin-x86,darwin-x86_64"
+
OPT_BUILD_DIR=
OPT_HELP=
OPT_NO_CCACHE=
OPT_NUM_JOBS=
+OPT_SYSTEM=
for OPT; do
OPTARG=$(expr "x$OPT" : "x[^=]*=\(.*\)" || true)
@@ -29,6 +47,9 @@
--quiet)
decrement_verbosity
;;
+ --system=*)
+ OPT_SYSTEM=$OPTARG
+ ;;
--verbose)
increment_verbosity
;;
@@ -61,6 +82,7 @@
--help|-? Print this message.
--verbose Increase verbosity.
--quiet Decrease verbosity.
+ --system=<list> List of target systems [$DEFAULT_SYSTEMS].
--build-dir=<path> Use specific build directory (default is temporary).
--no-ccache Don't try to probe and use ccache during build.
-j<count> Run <count> parallel build jobs.
@@ -70,6 +92,24 @@
exit 0
fi
+if [ "$OPT_SYSTEM" ]; then
+ SYSTEMS=$(commas_to_spaces "$OPT_SYSTEM")
+else
+ SYSTEMS=$(commas_to_spaces "$DEFAULT_SYSTEMS")
+ log "Auto-config: --system='$SYSTEMS'"
+fi
+
+# Sanity check
+BAD_SYSTEMS=
+for SYSTEM in $SYSTEMS; do
+ if ! list_contains "$VALID_SYSTEMS" "$SYSTEM"; then
+ BAD_SYSTEMS="$BAD_SYSTEMS $SYSTEM"
+ fi
+done
+if [ "$BAD_SYSTEMS" ]; then
+ panic "Invalid system name(s): [$BAD_SYSTEMS], use one of: $VALID_SYSTEMS"
+fi
+
if [ "$PARAM_COUNT" != 2 ]; then
panic "This script requires two arguments, see --help for details."
fi
@@ -127,18 +167,6 @@
ARCHIVE_DIR=$(cd "$ARCHIVE_DIR" && pwd -P)
log "Using archive directory: $ARCHIVE_DIR"
-case $(uname -s) in
- Linux)
- BUILD_OS=linux-x86_64
- ;;
- Darwin)
- BUILD_OS=darwin-x86_64
- ;;
- *)
- panic "Your operating system is not supported!"
- ;;
-esac
-
case $BUILD_OS in
darwin-*)
# Force the use of the 10.8 SDK on OS X, this
@@ -751,19 +779,8 @@
unset LIBFFI_CFLAGS LIBFFI_LIBS GLIB_CFLAGS GLIB_LIBS
}
-case $BUILD_OS in
- linux-*)
- build_qemu_android linux-x86
- build_qemu_android linux-x86_64
- build_qemu_android windows-x86
- build_qemu_android windows-x86_64
- ;;
- darwin-*)
- build_qemu_android darwin-x86_64
- ;;
- *)
- panic "Your operating system is not supported!"
- ;;
-esac
+for SYSTEM in $SYSTEMS; do
+ build_qemu_android $SYSTEM
+done
echo "Done!"