aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2017-04-07 22:43:24 +0000
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-04-10 11:48:31 +0200
commit97cd8f2eab921f36ff28d8e78f024ef75c02e962 (patch)
tree352704cb533559c9c4c728f6cbcd552132f14a94
parent3fd4054146c81ca96425c1bfa4b26644c63b4a54 (diff)
Make Bazel use existing NDK13 crosstool for NDK14.
The only difference in the crosstool is the clang version. See the full NDK14 changelog here: https://github.com/android-ndk/ndk/wiki/Changelog-r14 Fixes https://github.com/bazelbuild/bazel/issues/2655. RELNOTES: Bazel now supports Android NDK14. PiperOrigin-RevId: 152552865
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstools.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/AndroidNdkCrosstoolsR13.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/ArmCrosstools.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/MipsCrosstools.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/NdkMajorRevisionR13.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/X86Crosstools.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java10
7 files changed, 38 insertions, 28 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstools.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstools.java
index fab8dfbbce..64a55d1df3 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstools.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/AndroidNdkCrosstools.java
@@ -37,7 +37,10 @@ public final class AndroidNdkCrosstools {
"10", new NdkMajorRevisionR10(),
"11", new NdkMajorRevisionR11(),
"12", new NdkMajorRevisionR12(),
- "13", new NdkMajorRevisionR13());
+ "13", new NdkMajorRevisionR13("3.8.256229"),
+ // The only difference between the NDK13 and NDK14 CROSSTOOLs is the version of clang in
+ // built-in includes paths, so we can reuse everything else.
+ "14", new NdkMajorRevisionR13("3.8.275480"));
public static final Map.Entry<String, NdkMajorRevision> LATEST_KNOWN_REVISION =
Iterables.getLast(KNOWN_NDK_MAJOR_REVISIONS.entrySet());
@@ -83,4 +86,4 @@ public final class AndroidNdkCrosstools {
public static boolean isKnownNDKRevision(NdkRelease ndkRelease) {
return KNOWN_NDK_MAJOR_REVISIONS.containsKey(ndkRelease.majorRevision);
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/AndroidNdkCrosstoolsR13.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/AndroidNdkCrosstoolsR13.java
index 08d2d8ed9d..9cb91f2e5a 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/AndroidNdkCrosstoolsR13.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/AndroidNdkCrosstoolsR13.java
@@ -27,8 +27,6 @@ import java.util.Map.Entry;
/** Generates a CrosstoolRelease proto for the Android NDK. */
final class AndroidNdkCrosstoolsR13 {
- /** {@code ./ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --version} */
- static final String CLANG_VERSION = "3.8.256229";
/**
* Creates a CrosstoolRelease proto for the Android NDK, given the API level to use and the
@@ -40,23 +38,25 @@ final class AndroidNdkCrosstoolsR13 {
*
* @return A CrosstoolRelease for the Android NDK.
*/
- static CrosstoolRelease create(NdkPaths ndkPaths, StlImpl stlImpl, String hostPlatform) {
+ static CrosstoolRelease create(
+ NdkPaths ndkPaths, StlImpl stlImpl, String hostPlatform, String clangVersion) {
return CrosstoolRelease.newBuilder()
.setMajorVersion("android")
.setMinorVersion("")
.setDefaultTargetCpu("armeabi")
.addAllDefaultToolchain(getDefaultCpuToolchains(stlImpl))
- .addAllToolchain(createToolchains(ndkPaths, stlImpl, hostPlatform))
+ .addAllToolchain(createToolchains(ndkPaths, stlImpl, hostPlatform, clangVersion))
.build();
}
private static ImmutableList<CToolchain> createToolchains(
- NdkPaths ndkPaths, StlImpl stlImpl, String hostPlatform) {
+ NdkPaths ndkPaths, StlImpl stlImpl, String hostPlatform, String clangVersion) {
List<CToolchain.Builder> toolchainBuilders = new ArrayList<>();
- toolchainBuilders.addAll(new ArmCrosstools(ndkPaths, stlImpl).createCrosstools());
- toolchainBuilders.addAll(new MipsCrosstools(ndkPaths, stlImpl).createCrosstools());
- toolchainBuilders.addAll(new X86Crosstools(ndkPaths, stlImpl).createCrosstools());
+ toolchainBuilders.addAll(new ArmCrosstools(ndkPaths, stlImpl, clangVersion).createCrosstools());
+ toolchainBuilders.addAll(
+ new MipsCrosstools(ndkPaths, stlImpl, clangVersion).createCrosstools());
+ toolchainBuilders.addAll(new X86Crosstools(ndkPaths, stlImpl, clangVersion).createCrosstools());
ImmutableList.Builder<CToolchain> toolchains = new ImmutableList.Builder<>();
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/ArmCrosstools.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/ArmCrosstools.java
index a9782b4294..6578cc4f3e 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/ArmCrosstools.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/ArmCrosstools.java
@@ -29,10 +29,12 @@ import java.util.List;
final class ArmCrosstools {
private final NdkPaths ndkPaths;
private final StlImpl stlImpl;
+ private final String clangVersion;
- ArmCrosstools(NdkPaths ndkPaths, StlImpl stlImpl) {
+ ArmCrosstools(NdkPaths ndkPaths, StlImpl stlImpl, String clangVersion) {
this.ndkPaths = ndkPaths;
this.stlImpl = stlImpl;
+ this.clangVersion = clangVersion;
}
ImmutableList<CToolchain.Builder> createCrosstools() {
@@ -56,8 +58,7 @@ final class ArmCrosstools {
.setCompiler("clang3.8")
.addAllToolPath(ndkPaths.createClangToolpaths(toolchainName, targetPlatform, null))
.addCxxBuiltinIncludeDirectory(
- ndkPaths.createClangToolchainBuiltinIncludeDirectory(
- AndroidNdkCrosstoolsR13.CLANG_VERSION))
+ ndkPaths.createClangToolchainBuiltinIncludeDirectory(clangVersion))
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm64"))
// Compiler flags
@@ -139,8 +140,7 @@ final class ArmCrosstools {
.setCompiler("clang3.8")
.addAllToolPath(ndkPaths.createClangToolpaths(toolchainName, targetPlatform, null))
.addCxxBuiltinIncludeDirectory(
- ndkPaths.createClangToolchainBuiltinIncludeDirectory(
- AndroidNdkCrosstoolsR13.CLANG_VERSION))
+ ndkPaths.createClangToolchainBuiltinIncludeDirectory(clangVersion))
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm"))
// Compiler flags
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/MipsCrosstools.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/MipsCrosstools.java
index e3c387ebf6..d0fda6b305 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/MipsCrosstools.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/MipsCrosstools.java
@@ -29,10 +29,12 @@ import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.Compi
final class MipsCrosstools {
private final NdkPaths ndkPaths;
private final StlImpl stlImpl;
+ private final String clangVersion;
- MipsCrosstools(NdkPaths ndkPaths, StlImpl stlImpl) {
+ MipsCrosstools(NdkPaths ndkPaths, StlImpl stlImpl, String clangVersion) {
this.ndkPaths = ndkPaths;
this.stlImpl = stlImpl;
+ this.clangVersion = clangVersion;
}
ImmutableList<CToolchain.Builder> createCrosstools() {
@@ -87,8 +89,7 @@ final class MipsCrosstools {
return CToolchain.newBuilder()
.setCompiler("clang3.8")
.addCxxBuiltinIncludeDirectory(
- ndkPaths.createClangToolchainBuiltinIncludeDirectory(
- AndroidNdkCrosstoolsR13.CLANG_VERSION))
+ ndkPaths.createClangToolchainBuiltinIncludeDirectory(clangVersion))
// Compiler flags
.addCompilerFlag("-gcc-toolchain")
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/NdkMajorRevisionR13.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/NdkMajorRevisionR13.java
index dff1a4ad07..6aaa4caec8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/NdkMajorRevisionR13.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/NdkMajorRevisionR13.java
@@ -23,10 +23,16 @@ import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.Cross
/** Logic specific to Android NDK R13. */
public class NdkMajorRevisionR13 implements NdkMajorRevision {
+ private final String clangVersion;
+
+ public NdkMajorRevisionR13(String clangVersion) {
+ this.clangVersion = clangVersion;
+ }
+
@Override
public CrosstoolRelease crosstoolRelease(
NdkPaths ndkPaths, StlImpl stlImpl, String hostPlatform) {
- return AndroidNdkCrosstoolsR13.create(ndkPaths, stlImpl, hostPlatform);
+ return AndroidNdkCrosstoolsR13.create(ndkPaths, stlImpl, hostPlatform, clangVersion);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/X86Crosstools.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/X86Crosstools.java
index 6fb1d8fb6a..a577ad260f 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/X86Crosstools.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/r13/X86Crosstools.java
@@ -28,10 +28,12 @@ import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.Compi
final class X86Crosstools {
private final NdkPaths ndkPaths;
private final StlImpl stlImpl;
+ private final String clangVersion;
- X86Crosstools(NdkPaths ndkPaths, StlImpl stlImpl) {
+ X86Crosstools(NdkPaths ndkPaths, StlImpl stlImpl, String clangVersion) {
this.ndkPaths = ndkPaths;
this.stlImpl = stlImpl;
+ this.clangVersion = clangVersion;
}
ImmutableList<CToolchain.Builder> createCrosstools() {
@@ -70,8 +72,7 @@ final class X86Crosstools {
.setCompiler("clang3.8")
.addCxxBuiltinIncludeDirectory(
- ndkPaths.createClangToolchainBuiltinIncludeDirectory(
- AndroidNdkCrosstoolsR13.CLANG_VERSION))
+ ndkPaths.createClangToolchainBuiltinIncludeDirectory(clangVersion))
// Compiler flags
.addCompilerFlag("-gcc-toolchain")
@@ -107,7 +108,6 @@ final class X86Crosstools {
.setMode(CompilationMode.DBG)
.addCompilerFlag("-O0")
.addCompilerFlag("-g"))
-
.setTargetSystemName("x86-linux-android");
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
index 6fc9fbf831..3c6ad91d61 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryTest.java
@@ -97,7 +97,7 @@ public class AndroidNdkRepositoryTest extends BuildViewTestCase {
eventCollector,
"The revision of the Android NDK referenced by android_ndk_repository rule 'androidndk' "
+ "could not be determined (the revision string found is 'not a valid release string')."
- + " Defaulting to revision 13.");
+ + " Defaulting to revision 14.");
}
@Test
@@ -123,7 +123,7 @@ public class AndroidNdkRepositoryTest extends BuildViewTestCase {
eventCollector,
"The revision of the Android NDK referenced by android_ndk_repository rule 'androidndk' "
+ "could not be determined (the revision string found is 'invalid package revision'). "
- + "Defaulting to revision 13.");
+ + "Defaulting to revision 14.");
}
@Test
@@ -140,14 +140,14 @@ public class AndroidNdkRepositoryTest extends BuildViewTestCase {
scratch.overwriteFile(
"/ndk/source.properties",
"Pkg.Desc = Android NDK",
- "Pkg.Revision = 14.0.3675639-beta2");
+ "Pkg.Revision = 15.0.3675639-beta2");
invalidatePackages();
assertThat(getConfiguredTarget("@androidndk//:files")).isNotNull();
MoreAsserts.assertContainsEvent(
eventCollector,
"The major revision of the Android NDK referenced by android_ndk_repository rule "
- + "'androidndk' is 14. The major revisions supported by Bazel are [10, 11, 12, 13]. "
- + "Defaulting to revision 13.");
+ + "'androidndk' is 15. The major revisions supported by Bazel are [10, 11, 12, 13, 14]."
+ + " Defaulting to revision 14.");
}
}