android: Add --abi option to android/run-checks.sh
This patch adds an option to android/run-checks.sh to specify the target ABI. For example, by using the following line: android/run-checks.sh --abi=x86 --no-device One can check the Android/x86 build of Google Breakpad (which still fails for reasons that will be fixed in later patches). Another use is to force the 'armeabi' ABI even when an ARMv7-A device is connected (which uses the 'armeabi-v7a' by default, but supports 'armeabi' as well). Review URL: https://breakpad.appspot.com/424002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1003 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
e0555f5bdf
commit
3f264d250b
2 changed files with 67 additions and 13 deletions
|
@ -46,8 +46,8 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
# Sanity check. We can only build for ARM for now.
|
# Sanity check. We can only build for ARM for now.
|
||||||
ifneq (,$(filter-out armeabi armeabi-v7a,$(TARGET_ARCH_ABI)))
|
ifneq (,$(filter-out armeabi armeabi-v7a x86,$(TARGET_ARCH_ABI)))
|
||||||
$(error Sorry, Google Breakpad only works on Android ARM for now!)
|
$(error Sorry, Google Breakpad only works on Android ARM and x86 for now!)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# The top Google Breakpad directory.
|
# The top Google Breakpad directory.
|
||||||
|
|
|
@ -88,6 +88,10 @@ get_core_count () {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFAULT_ABI="armeabi"
|
||||||
|
VALID_ABIS="armeabi armeabi-v7a x86 mips"
|
||||||
|
|
||||||
|
ABI=
|
||||||
ADB=
|
ADB=
|
||||||
ENABLE_M32=
|
ENABLE_M32=
|
||||||
HELP=
|
HELP=
|
||||||
|
@ -103,6 +107,7 @@ for opt do
|
||||||
# The following extracts the value if the option is like --name=<value>.
|
# The following extracts the value if the option is like --name=<value>.
|
||||||
optarg=$(expr -- $opt : '^--[^=]*=\(.*\)$')
|
optarg=$(expr -- $opt : '^--[^=]*=\(.*\)$')
|
||||||
case $opt in
|
case $opt in
|
||||||
|
--abi=*) ABI=$optarg;;
|
||||||
--adb=*) ADB=$optarg;;
|
--adb=*) ADB=$optarg;;
|
||||||
--enable-m32) ENABLE_M32=true;;
|
--enable-m32) ENABLE_M32=true;;
|
||||||
--help|-h|-?) HELP=TRUE;;
|
--help|-h|-?) HELP=TRUE;;
|
||||||
|
@ -163,6 +168,18 @@ if [ "$HELP" -o "$HELP_ALL" ]; then
|
||||||
you see which exact commands are being issues and their result. Use the
|
you see which exact commands are being issues and their result. Use the
|
||||||
flag twice for even more output. Use --quiet to decrease verbosity
|
flag twice for even more output. Use --quiet to decrease verbosity
|
||||||
instead and run the script silently.
|
instead and run the script silently.
|
||||||
|
|
||||||
|
If you have a device connected, the script will probe it to determine
|
||||||
|
its primary CPU ABI, and build the test program for it. You can however
|
||||||
|
use the --abi=<name> option to override this (this can be useful to check
|
||||||
|
the secondary ABI, e.g. using --abi=armeabi to check that such a program
|
||||||
|
works correctly on an ARMv7-A device).
|
||||||
|
|
||||||
|
If you don't have a device connected, the test program will be built (but
|
||||||
|
not run) with the default '$DEFAULT_ABI' ABI. Again, you can use
|
||||||
|
--abi=<name> to override this. Valid ABI names are:
|
||||||
|
|
||||||
|
$VALID_ABIS
|
||||||
"
|
"
|
||||||
|
|
||||||
fi # HELP_ALL
|
fi # HELP_ALL
|
||||||
|
@ -173,6 +190,7 @@ if [ "$HELP" -o "$HELP_ALL" ]; then
|
||||||
--help|-h|-? Display this message.
|
--help|-h|-? Display this message.
|
||||||
--help-all Display extended help.
|
--help-all Display extended help.
|
||||||
--enable-m32 Build 32-bit version of host tools.
|
--enable-m32 Build 32-bit version of host tools.
|
||||||
|
--abi=<name> Specify target CPU ABI [auto-detected].
|
||||||
--jobs=<count> Run <count> build tasks in parallel [$NUM_JOBS].
|
--jobs=<count> Run <count> build tasks in parallel [$NUM_JOBS].
|
||||||
--ndk-dir=<path> Specify NDK installation directory.
|
--ndk-dir=<path> Specify NDK installation directory.
|
||||||
--tmp-dir=<path> Specify temporary directory (will be wiped-out).
|
--tmp-dir=<path> Specify temporary directory (will be wiped-out).
|
||||||
|
@ -387,23 +405,59 @@ TMPBIN=$TMPHOST/bin
|
||||||
|
|
||||||
# Generate a stand-alone NDK toolchain
|
# Generate a stand-alone NDK toolchain
|
||||||
|
|
||||||
# Extract ABI and architecture from device, if any.
|
# Extract CPU ABI and architecture from device, if any.
|
||||||
if [ "$ADB" ]; then
|
if [ "$ADB" ]; then
|
||||||
ABI=$(adb_shell getprop ro.product.cpu.abi)
|
DEVICE_ABI=$(adb_shell getprop ro.product.cpu.abi)
|
||||||
if [ -z "$ABI" ]; then
|
DEVICE_ABI2=$(adb_shell getprop ro.product.cpu.abi2)
|
||||||
|
if [ -z "$DEVICE_ABI" ]; then
|
||||||
panic "Can't extract ABI from connected device!"
|
panic "Can't extract ABI from connected device!"
|
||||||
fi
|
fi
|
||||||
dump "Found device ABI: $ABI"
|
if [ "$DEVICE_ABI2" ]; then
|
||||||
|
dump "Found device ABIs: $DEVICE_ABI $DEVICE_ABI2"
|
||||||
|
else
|
||||||
|
dump "Found device ABI: $DEVICE_ABI"
|
||||||
|
DEVICE_ABI2=$DEVICE_ABI
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If --abi=<name> is used, check that the device supports it.
|
||||||
|
if [ "$ABI" -a "$DEVICE_ABI" != "$ABI" -a "$DEVICE_ABI2" != "$ABI" ]; then
|
||||||
|
dump "ERROR: Device ABI(s) do not match --abi command-line value ($ABI)!"
|
||||||
|
panic "Please use --no-device to skip device tests."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$ABI" ]; then
|
||||||
|
ABI=$DEVICE_ABI
|
||||||
|
dump "Using CPU ABI: $ABI (device)"
|
||||||
|
else
|
||||||
|
dump "Using CPU ABI: $ABI (command-line)"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# No device connected, choose default ABI
|
if [ -z "$ABI" ]; then
|
||||||
ABI=armeabi
|
# No device connected, choose default ABI
|
||||||
dump "Default ABI: $ABI"
|
ABI=$DEFAULT_ABI
|
||||||
|
dump "Using CPU ABI: $ABI (default)"
|
||||||
|
else
|
||||||
|
dump "Using CPU ABI: $ABI (command-line)"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Compute architecture name
|
# Check the ABI value
|
||||||
|
VALID=
|
||||||
|
for VALID_ABI in $VALID_ABIS; do
|
||||||
|
if [ "$ABI" = "$VALID_ABI" ]; then
|
||||||
|
VALID=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$VALID" ]; then
|
||||||
|
panic "Unknown CPU ABI '$ABI'. Valid values are: $VALID_ABIS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract architecture name from ABI
|
||||||
case $ABI in
|
case $ABI in
|
||||||
arm*) ARCH=arm;;
|
armeabi*) ARCH=arm;;
|
||||||
*) ARCH="$ABI";;
|
*) ARCH=$ABI;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Extract GNU configuration name
|
# Extract GNU configuration name
|
||||||
|
@ -454,7 +508,7 @@ NDK_BUILD_FLAGS="-j$NUM_JOBS"
|
||||||
if [ "$VERBOSE" -ge 2 ]; then
|
if [ "$VERBOSE" -ge 2 ]; then
|
||||||
NDK_BUILD_FLAGS="$NDK_BUILD_FLAGS NDK_LOG=1 V=1"
|
NDK_BUILD_FLAGS="$NDK_BUILD_FLAGS NDK_LOG=1 V=1"
|
||||||
fi
|
fi
|
||||||
run "$NDK_DIR/ndk-build" -C "$PROJECT_DIR" $NDK_BUILD_FLAGS
|
run "$NDK_DIR/ndk-build" -C "$PROJECT_DIR" $NDK_BUILD_FLAGS APP_ABI=$ABI
|
||||||
fail_panic "Can't build test program!"
|
fail_panic "Can't build test program!"
|
||||||
|
|
||||||
# Unless --no-device was used, stop right here if ADB isn't in the path,
|
# Unless --no-device was used, stop right here if ADB isn't in the path,
|
||||||
|
|
Loading…
Reference in a new issue