aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Alex Humesky <ahumesky@google.com>2015-10-28 15:35:04 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2015-10-28 16:05:45 +0000
commitde332aeb49802b66a9bd855c864a25ee84394c96 (patch)
tree1f6b3af2f61b0c888ceb6a5f7ffe424c58170449 /src/main/java/com/google/devtools
parent7a833f4db68dc85c9efb7c9126a3ecb3a614fd74 (diff)
Adds include paths through -isystem to get Android native compiling working again on OS X.
-- MOS_MIGRATED_REVID=106498988
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ArmCrosstools.java53
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/MipsCrosstools.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkPaths.java30
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/X86Crosstools.java19
4 files changed, 59 insertions, 61 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ArmCrosstools.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ArmCrosstools.java
index 161d8c9b40..49391d4af9 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ArmCrosstools.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/ArmCrosstools.java
@@ -19,7 +19,6 @@ import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CToolchain;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CompilationMode;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CompilationModeFlags;
-import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.ToolPath;
import java.util.List;
@@ -94,9 +93,6 @@ class ArmCrosstools {
.addAllToolPath(ndkPaths.createToolpaths(toolchainName, targetPlatform))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- toolchainName, targetPlatform, "4.9"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm64"))
// Compiler flags
@@ -128,6 +124,7 @@ class ArmCrosstools {
.addCompilerFlag("-fno-omit-frame-pointer")
.addCompilerFlag("-fno-strict-aliasing"));
+ ndkPaths.addToolchainIncludePaths(toolchain, toolchainName, targetPlatform, "4.9");
stlImpl.addStlImpl(toolchain, "4.9");
return toolchain;
}
@@ -147,9 +144,6 @@ class ArmCrosstools {
.addAllToolPath(ndkPaths.createClangToolpaths(toolchainName, targetPlatform, clangVersion))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- toolchainName, targetPlatform, "4.9"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm64"))
// Compiler flags
@@ -189,6 +183,7 @@ class ArmCrosstools {
.addCompilerFlag("-fno-omit-frame-pointer")
.addCompilerFlag("-fno-strict-aliasing"));
+ ndkPaths.addToolchainIncludePaths(toolchain, toolchainName, targetPlatform, "4.9");
stlImpl.addStlImpl(toolchain, "4.9");
return toolchain;
}
@@ -250,22 +245,11 @@ class ArmCrosstools {
String toolchainName = "arm-linux-androideabi-" + gccVersion;
String targetPlatform = "arm-linux-androideabi";
- ImmutableList<ToolPath> toolPaths = ndkPaths.createToolpaths(
- toolchainName,
- targetPlatform,
- excludedTools);
-
- ImmutableList<String> toolchainIncludes = ndkPaths.createToolchainIncludePaths(
- toolchainName,
- targetPlatform,
- gccVersion);
-
- CToolchain.Builder builder = CToolchain.newBuilder()
+ CToolchain.Builder toolchain = CToolchain.newBuilder()
.setTargetSystemName(targetPlatform)
.setCompiler("gcc-" + gccVersion)
- .addAllToolPath(toolPaths)
- .addAllCxxBuiltinIncludeDirectory(toolchainIncludes)
+ .addAllToolPath(ndkPaths.createToolpaths(toolchainName, targetPlatform, excludedTools))
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm"))
.addCompilerFlag(stackProtectorFlag)
@@ -280,7 +264,7 @@ class ArmCrosstools {
.addLinkerFlag("-no-canonical-prefixes");
if (thumb) {
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.OPT)
.addCompilerFlag("-mthumb")
.addCompilerFlag("-Os")
@@ -290,7 +274,7 @@ class ArmCrosstools {
.addCompilerFlag("-fno-strict-aliasing")
.addCompilerFlag("-finline-limit=64"));
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.DBG)
.addCompilerFlag("-g")
.addCompilerFlag("-fno-strict-aliasing")
@@ -300,7 +284,7 @@ class ArmCrosstools {
.addCompilerFlag("-marm")
.addCompilerFlag("-fno-omit-frame-pointer"));
} else {
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.OPT)
.addCompilerFlag("-O2")
.addCompilerFlag("-g")
@@ -310,7 +294,7 @@ class ArmCrosstools {
.addCompilerFlag("-funswitch-loops")
.addCompilerFlag("-finline-limit=300"));
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.DBG)
.addCompilerFlag("-g")
.addCompilerFlag("-funswitch-loops")
@@ -321,7 +305,8 @@ class ArmCrosstools {
.addCompilerFlag("-fno-strict-aliasing"));
}
- return builder;
+ ndkPaths.addToolchainIncludePaths(toolchain, toolchainName, targetPlatform, gccVersion);
+ return toolchain;
}
private List<CToolchain.Builder> createArmeabiClangToolchain(String clangVersion, boolean thumb) {
@@ -386,7 +371,7 @@ class ArmCrosstools {
String targetPlatform = "arm-linux-androideabi";
String gccToolchain = ndkPaths.createGccToolchainPath("arm-linux-androideabi-4.8");
- CToolchain.Builder builder = CToolchain.newBuilder()
+ CToolchain.Builder toolchain = CToolchain.newBuilder()
.setTargetSystemName("arm-linux-androideabi")
.setCompiler("clang" + clangVersion)
@@ -397,9 +382,6 @@ class ArmCrosstools {
// gcc-4.8 arm doesn't have gcov-tool
CppConfiguration.Tool.GCOVTOOL))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- toolchainName, targetPlatform, "4.8"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm"))
// Compiler flags
@@ -420,7 +402,7 @@ class ArmCrosstools {
.addLinkerFlag("-no-canonical-prefixes");
if (thumb) {
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.OPT)
.addCompilerFlag("-mthumb")
.addCompilerFlag("-Os")
@@ -429,7 +411,7 @@ class ArmCrosstools {
.addCompilerFlag("-fomit-frame-pointer")
.addCompilerFlag("-fno-strict-aliasing"));
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.DBG)
.addCompilerFlag("-g")
.addCompilerFlag("-fno-strict-aliasing")
@@ -438,7 +420,7 @@ class ArmCrosstools {
.addCompilerFlag("-marm")
.addCompilerFlag("-fno-omit-frame-pointer"));
} else {
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.OPT)
.addCompilerFlag("-O2")
.addCompilerFlag("-g")
@@ -446,7 +428,7 @@ class ArmCrosstools {
.addCompilerFlag("-fomit-frame-pointer")
.addCompilerFlag("-fstrict-aliasing"));
- builder.addCompilationModeFlags(CompilationModeFlags.newBuilder()
+ toolchain.addCompilationModeFlags(CompilationModeFlags.newBuilder()
.setMode(CompilationMode.DBG)
.addCompilerFlag("-g")
.addCompilerFlag("-O0")
@@ -454,8 +436,9 @@ class ArmCrosstools {
.addCompilerFlag("-fno-omit-frame-pointer")
.addCompilerFlag("-fno-strict-aliasing"));
}
-
- return builder;
+
+ ndkPaths.addToolchainIncludePaths(toolchain, toolchainName, targetPlatform, "4.8");
+ return toolchain;
}
private static String createArmeabiName(String base, String gccVersion, boolean thumb) {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/MipsCrosstools.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/MipsCrosstools.java
index 0692e76eb0..e133ec3333 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/MipsCrosstools.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/MipsCrosstools.java
@@ -61,9 +61,6 @@ class MipsCrosstools {
// mips64 toolchain doesn't have the dwp tool.
CppConfiguration.Tool.DWP))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "mips64el-linux-android-4.9", "mips64el-linux-android", "4.9"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("mips64")));
// The flags for mips64 clang 3.5 and 3.6 are the same, they differ only in the LLVM version
@@ -79,13 +76,12 @@ class MipsCrosstools {
"mips64el-linux-android-4.9", "mips64el-linux-android", clangVersion,
CppConfiguration.Tool.DWP))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "mips64el-linux-android-4.9", "mips64el-linux-android", "4.9"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("mips64")));
}
List<CToolchain.Builder> toolchains = toolchainsListBuilder.build();
+ ndkPaths.addToolchainIncludePaths(
+ toolchains, "mips64el-linux-android-4.9", "mips64el-linux-android", "4.9");
stlImpl.addStlImpl(toolchains, "4.9");
return toolchains;
}
@@ -115,11 +111,10 @@ class MipsCrosstools {
"mipsel-linux-android-4.8", "mipsel-linux-android", clangVersion,
CppConfiguration.Tool.DWP, CppConfiguration.Tool.GCOVTOOL))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "mipsel-linux-android-4.8", "mipsel-linux-android", "4.8"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("mips"));
+ ndkPaths.addToolchainIncludePaths(
+ mipsClang, "mipsel-linux-android-4.8", "mipsel-linux-android", "4.8");
stlImpl.addStlImpl(mipsClang, "4.8");
toolchainsListBuilder.add(mipsClang);
}
@@ -140,11 +135,10 @@ class MipsCrosstools {
"mipsel-linux-android-" + gccVersion, "mipsel-linux-android",
excludedTools))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "mipsel-linux-android-" + gccVersion, "mipsel-linux-android", gccVersion))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("mips"));
+ ndkPaths.addToolchainIncludePaths(
+ toolchain, "mipsel-linux-android-" + gccVersion, "mipsel-linux-android", gccVersion);
stlImpl.addStlImpl(toolchain, gccVersion);
return toolchain;
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkPaths.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkPaths.java
index 6166ccdc8f..3e43dde1a5 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkPaths.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/NdkPaths.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.bazel.rules.android.ndkcrosstools;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
+import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CToolchain;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.ToolPath;
import java.util.Arrays;
@@ -116,7 +117,34 @@ public class NdkPaths {
.replace("%hostPlatform%", hostPlatform);
}
- ImmutableList<String> createToolchainIncludePaths(
+ void addToolchainIncludePaths(
+ List<CToolchain.Builder> toolchains,
+ String toolchainName,
+ String targetPlatform,
+ String gccVersion) {
+
+ for (CToolchain.Builder toolchain : toolchains) {
+ addToolchainIncludePaths(toolchain, toolchainName, targetPlatform, gccVersion);
+ }
+ }
+
+ void addToolchainIncludePaths(
+ CToolchain.Builder toolchain,
+ String toolchainName,
+ String targetPlatform,
+ String gccVersion) {
+
+ List<String> includePaths =
+ this.createToolchainIncludePaths(toolchainName, targetPlatform, gccVersion);
+
+ for (String includePath : includePaths) {
+ toolchain.addCxxBuiltinIncludeDirectory(includePath);
+ toolchain.addUnfilteredCxxFlag("-isystem");
+ toolchain.addUnfilteredCxxFlag(includePath);
+ }
+ }
+
+ private ImmutableList<String> createToolchainIncludePaths(
String toolchainName, String targetPlatform, String gccVersion) {
ImmutableList.Builder<String> includePaths = ImmutableList.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/X86Crosstools.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/X86Crosstools.java
index 6920d32b96..96807f3264 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/X86Crosstools.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/ndkcrosstools/X86Crosstools.java
@@ -60,11 +60,9 @@ class X86Crosstools {
// gcc-4.8 x86 toolchain doesn't have gcov-tool.
CppConfiguration.Tool.GCOVTOOL))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "x86-4.8", "i686-linux-android", "4.8"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("x86"));
+ ndkPaths.addToolchainIncludePaths(x86Clang, "x86-4.8", "i686-linux-android", "4.8");
stlImpl.addStlImpl(x86Clang, "4.8");
toolchains.add(x86Clang);
}
@@ -81,13 +79,11 @@ class X86Crosstools {
.addAllToolPath(ndkPaths.createToolpaths(
"x86_64-4.9", "x86_64-linux-android"))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "x86_64-4.9", "x86_64-linux-android", "4.9"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("x86_64"))
.addCompilerFlag("-fstack-protector-strong");
+ ndkPaths.addToolchainIncludePaths(x8664, "x86_64-4.9", "x86_64-linux-android", "4.9");
stlImpl.addStlImpl(x8664, "4.9");
toolchains.add(x8664);
@@ -102,11 +98,9 @@ class X86Crosstools {
.addAllToolPath(ndkPaths.createClangToolpaths(
"x86_64-4.9", "x86_64-linux-android", clangVersion))
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "x86_64-4.9", "x86_64-linux-android", "4.9"))
-
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("x86_64"));
+ ndkPaths.addToolchainIncludePaths(x8664Clang, "x86_64-4.9", "x86_64-linux-android", "4.9");
stlImpl.addStlImpl(x8664Clang, "4.9");
toolchains.add(x8664Clang);
}
@@ -131,14 +125,13 @@ class X86Crosstools {
.addAllToolPath(ndkPaths.createToolpaths(
"x86-" + gccVersion, "i686-linux-android", excludedTools))
-
- .addAllCxxBuiltinIncludeDirectory(ndkPaths.createToolchainIncludePaths(
- "x86-" + gccVersion, "i686-linux-android", gccVersion))
-
+
.setBuiltinSysroot(ndkPaths.createBuiltinSysroot("x86"))
.addCompilerFlag(stackProtrectorFlag);
+ ndkPaths.addToolchainIncludePaths(
+ toolchain, "x86-" + gccVersion, "i686-linux-android", gccVersion);
stlImpl.addStlImpl(toolchain, gccVersion);
return toolchain;
}