| #!/bin/sh |
| |
| $NDK/ndk-build "$@" |
| if [ $? != 0 ]; then |
| echo "ERROR: Could not build test program!" |
| exit 1 |
| fi |
| |
| # Return the type of a given file as returned by /usr/bin/file |
| # $1: file path |
| get_file_type () { |
| /usr/bin/file -b "$1" 2>/dev/null |
| } |
| |
| # Returns success iff a given file is a thin archive. |
| # $1: file type as returned by get_file_type() |
| is_file_type_thin_archive () { |
| # The output of /usr/bin/file will depend on the OS: |
| # regular Linux -> 'current ar archive' |
| # regular Darwin -> 'current ar archive random library' |
| # thin Linux -> 'data' |
| # thin Darwin -> 'data' |
| case "$1" in |
| *"ar archive"*) |
| return 1 |
| ;; |
| *"thin archive"*) |
| return 0 |
| ;; |
| "data") |
| return 0 |
| ;; |
| *) |
| echo "ERROR: Unknown '$FILE_TYPE' file type" >&2 |
| return 2 |
| ;; |
| esac |
| } |
| |
| # Check that libfoo.a is a thin archive |
| LIBFOO_LIST=$(find obj/local -name "libfoo.a") |
| EXIT_CODE=0 |
| for LIB in $LIBFOO_LIST; do |
| LIB_TYPE=$(get_file_type "$LIB") |
| if is_file_type_thin_archive "$LIB_TYPE"; then |
| echo "OK: $LIB is a thin archive ('$LIB_TYPE')." |
| else |
| echo "ERROR: $LIB is not a thin archive: '$LIB_TYPE'" |
| EXIT_CODE=1 |
| fi |
| done |
| |
| # Check that libbar.a is not a thin archive |
| LIBBAR_LIST=$(find obj/local -name "libbar.a") |
| for LIB in $LIBBAR_LIST; do |
| LIB_TYPE=$(get_file_type "$LIB") |
| if is_file_type_thin_archive "$LIB_TYPE"; then |
| echo "ERROR: $LIB is not a regular archive: '$LIB_TYPE'" |
| EXIT_CODE=1 |
| else |
| echo "OK: $LIB is a regular archive: '$LIB_TYPE'" |
| fi |
| done |
| |
| exit $EXIT_CODE |