aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar Alex Humesky <ahumesky@google.com>2016-05-12 18:53:43 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-05-13 08:27:59 +0000
commitabdaff492440b373bacd016d772ef73611a27901 (patch)
treeb9147a1503dbc38b15b57a86c06dd621c7decb33 /src/test
parent3ae058d0fea53dd629d639ec8007c8c443ab47f2 (diff)
Support NDK r11 in bazel
RELNOTES: Added supported for Android NDK revision 11 -- MOS_MIGRATED_REVID=122181286
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstoolsTest.java13
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkReleaseTest.java35
-rwxr-xr-xsrc/test/shell/bazel/android/android_integration_test.sh45
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