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!"
