# Special script used to check that LOCAL_SHORT_COMMANDS works
# correctly even when using a very large number of source files
# when building a static or shared library.
#
# We're going to auto-generate all the files we need in a
# temporary directory, because that's how we roll.
#
PROGDIR=$(dirname $0)
PROGDIR=$(cd "$PROGDIR" && pwd)
# Clean generated binaries
rm -rf "$PROGDIR/obj" "$PROGDIR/libs"
# Now run the build
if [ -z "$APP_ABI" ]; then
for OPT; do
case $OPT in
APP_ABI=*)
APP_ABI=${OPT##APP_ABI=}
;;
esac
done
$NDK/ndk-build -C "$PROGDIR" "$@"
RET=$?
else
$NDK/ndk-build -C "$PROGDIR" "$@" APP_ABI="$APP_ABI"
RET=$?
fi
# find objdump. Any arch's objdump can do "-s -j". We just need to find one
# from $NDK/toolchains because MacOSX doesn't have that by default.
get_build_var ()
{
if [ -z "$APP_ABI" ]; then
make --no-print-dir -f $NDK/build/core/build-local.mk DUMP_$1 | tail -1
else
make --no-print-dir -f $NDK/build/core/build-local.mk DUMP_$1 APP_ABI="$APP_ABI" | tail -1
fi
}
TOOLCHAIN_PREFIX=`get_build_var TOOLCHAIN_PREFIX`
OBJDUMP=${TOOLCHAIN_PREFIX}objdump
# check if linker.list is empty
ALL_SO=`find libs -name "*.so"`
for SO in $ALL_SO; do
NUM_LINE=`$OBJDUMP -s -j.rodata $SO | wc -l | tr -d ' '`
if [ "$NUM_LINE" != "7" ]; then
echo "ERROR: Fail to merge string literals!"
exit 1
fi
NUM_ABCD=`$OBJDUMP -s -j.rodata $SO | grep abcd | wc -l | tr -d ' '`
if [ "$NUM_ABCD" != "2" ]; then
echo "ERROR: abcd should appear exactly twice!"
exit 1
fi
done
# Clean generated binaries
rm -rf "$PROGDIR/obj" "$PROGDIR/libs"
# Exit
exit $RET