diff options
author | 2016-05-12 18:53:43 +0000 | |
---|---|---|
committer | 2016-05-13 08:27:59 +0000 | |
commit | abdaff492440b373bacd016d772ef73611a27901 (patch) | |
tree | b9147a1503dbc38b15b57a86c06dd621c7decb33 /src/test | |
parent | 3ae058d0fea53dd629d639ec8007c8c443ab47f2 (diff) |
Support NDK r11 in bazel
RELNOTES: Added supported for Android NDK revision 11
--
MOS_MIGRATED_REVID=122181286
Diffstat (limited to 'src/test')
3 files changed, 64 insertions, 29 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java index 768a140d44..c96492e54d 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java @@ -25,10 +25,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.bazel.rules.android.ndkcrosstools.r10e.AndroidNdkCrosstoolsR10e; -import com.google.devtools.build.lib.bazel.rules.android.ndkcrosstools.r10e.ApiLevel; -import com.google.devtools.build.lib.bazel.rules.android.ndkcrosstools.r10e.NdkPaths; -import com.google.devtools.build.lib.bazel.rules.android.ndkcrosstools.r10e.StlImpl; -import com.google.devtools.build.lib.bazel.rules.android.ndkcrosstools.r10e.StlImpls; +import com.google.devtools.build.lib.bazel.rules.android.ndkcrosstools.r10e.ApiLevelR10e; import com.google.devtools.build.lib.events.NullEventHandler; import com.google.devtools.build.lib.util.ResourceFileLoader; import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CToolchain; @@ -57,7 +54,7 @@ public class AndroidNdkCrosstoolsTest { private static final String REPOSITORY_NAME = "testrepository"; private static final ApiLevel API_LEVEL = - new ApiLevel(NullEventHandler.INSTANCE, REPOSITORY_NAME, "21"); + new ApiLevelR10e(NullEventHandler.INSTANCE, REPOSITORY_NAME, "21"); private static final NdkRelease NDK_RELEASE = NdkRelease.create("r10e (64-bit)"); private static final ImmutableList<CrosstoolRelease> CROSSTOOL_RELEASES; private static final ImmutableMap<String, String> STL_FILEGROUPS; @@ -74,11 +71,9 @@ public class AndroidNdkCrosstoolsTest { ImmutableMap.Builder<String, String> stlFilegroups = ImmutableMap.builder(); for (StlImpl ndkStlImpl : StlImpls.get(ndkPaths)) { // Protos are immutable, so this can be shared between tests. - CrosstoolRelease crosstool = AndroidNdkCrosstoolsR10e.create( - NullEventHandler.INSTANCE, - ndkPaths, - REPOSITORY_NAME, + CrosstoolRelease crosstool = AndroidNdkCrosstools.create( NDK_RELEASE, + ndkPaths, ndkStlImpl, hostPlatform); crosstools.add(crosstool); diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkReleaseTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkReleaseTest.java index 50dbbdc702..4ffc79297b 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkReleaseTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkReleaseTest.java @@ -28,20 +28,20 @@ public class NdkReleaseTest { @Test public void testReleaseParsing() { - testNdkRelease("r8", "r8", null, false); - testNdkRelease("r8 (64-bit)", "r8", null, true); - testNdkRelease("r10", "r10", null, false); - testNdkRelease("r10 (64-bit)", "r10", null, true); - testNdkRelease("r10-rc4", "r10", "rc4", false); - testNdkRelease("r10-rc4 (64-bit)", "r10", "rc4", true); - testNdkRelease("r10e", "r10e", null, false); - testNdkRelease("r10e (64-bit)", "r10e", null, true); - testNdkRelease("r10e-rc4", "r10e", "rc4", false); - testNdkRelease("r10e-rc4 (64-bit)", "r10e", "rc4", true); + testNdkRelease("r8", "8", null, null, false); + testNdkRelease("r8 (64-bit)", "8", null, null, true); + testNdkRelease("r10", "10", null, null, false); + testNdkRelease("r10 (64-bit)", "10", null, null, true); + testNdkRelease("r10-rc4", "10", null, "rc4", false); + testNdkRelease("r10-rc4 (64-bit)", "10", null, "rc4", true); + testNdkRelease("r10e", "10", "e", null, false); + testNdkRelease("r10e (64-bit)", "10", "e", null, true); + testNdkRelease("r10e-rc4", "10", "e", "rc4", false); + testNdkRelease("r10e-rc4 (64-bit)", "10", "e", "rc4", true); try { // this is actually invalid - testNdkRelease("r10e-rc4 (abc)", "r10e", "rc4", false); + testNdkRelease("r10e-rc4 (abc)", "10", "e", "rc4", false); throw new Error(); } catch (AssertionError e) { // expected @@ -49,11 +49,17 @@ public class NdkReleaseTest { } private static void testNdkRelease( - String ndkReleaseString, String release, String releaseCandidate, boolean is64Bit) { + String ndkReleaseString, + String majorRelease, + String minorRelease, + String releaseCandidate, + boolean is64Bit) { + NdkRelease ndkRelease = NdkRelease.create(ndkReleaseString); assertThat(ndkRelease.isValid).isTrue(); assertThat(ndkRelease.rawRelease).isEqualTo(ndkReleaseString); - assertThat(release).isEqualTo(ndkRelease.release); + assertThat(majorRelease).isEqualTo(ndkRelease.majorRevision); + assertThat(minorRelease).isEqualTo(ndkRelease.minorRevision); assertThat(releaseCandidate).isEqualTo(ndkRelease.releaseCandidate); assertThat(is64Bit).isEqualTo(ndkRelease.is64Bit); } @@ -83,7 +89,8 @@ public class NdkReleaseTest { NdkRelease ndkRelease = NdkRelease.create(ndkReleaseString); assertThat(ndkRelease.isValid).isFalse(); assertThat(ndkRelease.rawRelease).isEqualTo(ndkReleaseString); - assertThat(ndkRelease.release).isNull(); + assertThat(ndkRelease.majorRevision).isNull(); + assertThat(ndkRelease.minorRevision).isNull(); assertThat(ndkRelease.releaseCandidate).isNull(); assertThat(ndkRelease.is64Bit).isFalse(); } diff --git a/src/test/shell/bazel/android/android_integration_test.sh b/src/test/shell/bazel/android/android_integration_test.sh index 1aa77f4bad..25aa41ff91 100755 --- a/src/test/shell/bazel/android/android_integration_test.sh +++ b/src/test/shell/bazel/android/android_integration_test.sh @@ -18,10 +18,8 @@ source $(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../test-setup.sh \ || { echo "test-setup.sh not found!" >&2; exit 1; } -function test_android_binary() { - create_new_workspace - setup_android_support +function create_android_binary() { mkdir -p java/bazel cat > java/bazel/BUILD <<EOF android_library( @@ -154,13 +152,48 @@ Java_bazel_Jni_hello(JNIEnv *env, jclass clazz) { return NewStringLatin1(env, (hello + " " + jni).c_str()); } EOF +} + +function test_android_binary() { + create_new_workspace + setup_android_support + create_android_binary + + cpus="armeabi,armeabi-v7a,armeabi-v7a-hard,armeabi-thumb,armeabi-v7a-thumb,armeabi-v7a-hard-thumb,arm64-v8a,mips,mips64,x86,x86_64" - bazel build -s //java/bazel:bin || fail "build failed" + bazel build -s //java/bazel:bin --fat_apk_cpu="$cpus" || fail "build failed" + num_sos=$(unzip -Z1 bazel-bin/java/bazel/bin.apk '*.so' | wc -l) + assert_equals "11" "$num_sos" } +function test_android_binary_clang() { + # clang3.8 is only available on NDK r11 + # TODO(ahumesky): This is only distinguishing between r10 and r11+. + if [[ ! -r "${BAZEL_RUNFILES}/external/androidndk/ndk/source.properties" ]]; then + return + fi + create_new_workspace + setup_android_support + create_android_binary + + cpus="armeabi,armeabi-v7a,armeabi-v7a-hard,armeabi-thumb,armeabi-v7a-thumb,armeabi-v7a-hard-thumb,arm64-v8a,mips,mips64,x86,x86_64" + + bazel build -s //java/bazel:bin \ + --fat_apk_cpu="$cpus" \ + --android_compiler=clang3.8 \ + || fail "build failed" + + num_sos=$(unzip -Z1 bazel-bin/java/bazel/bin.apk '*.so' | wc -l) + assert_equals "11" "$num_sos" +} + +# ndk r10 and earlier if [[ ! -r "${BAZEL_RUNFILES}/external/androidndk/ndk/RELEASE.TXT" ]]; then - echo "Not running Android tests due to lack of an Android NDK." - exit 0 + # ndk r11 and later + if [[ ! -r "${BAZEL_RUNFILES}/external/androidndk/ndk/source.properties" ]]; then + echo "Not running Android tests due to lack of an Android NDK." + exit 0 + fi fi if [[ ! -r "${BAZEL_RUNFILES}/external/androidsdk/SDK Readme.txt" ]]; then |