aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Steven Dee <steven@interaxon.ca>2015-07-21 09:56:19 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-07-21 15:13:38 -0400
commit5289891a6c253d3f90e22844a6e9c7a0552b590d (patch)
tree554452925e31879b13f7f28f3c87dfbc09e3f850 /src/main/java/com/google/devtools
parent0caf33251bfb55d32e758d92a7db9e3f746ec06a (diff)
Get android example to build on OS X
-- Reviewed-on: https://github.com/google/bazel/pull/314 MOS_MIGRATED_REVID=98719433
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java55
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_toolchain_template.txt26
2 files changed, 56 insertions, 25 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
index 0412608c44..94b84ce3eb 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
@@ -22,6 +22,8 @@ import com.google.devtools.build.lib.packages.PackageIdentifier.RepositoryName;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.skyframe.FileValue;
+import com.google.devtools.build.lib.util.CPU;
+import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.ResourceFileLoader;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -71,6 +73,31 @@ public class AndroidNdkRepositoryFunction extends RepositoryFunction {
String abi = "armeabi-v7a"; // TODO(bazel-team): Should this be an attribute on the rule?
String compiler = "4.9"; // TODO(bazel-team): Should this be an attribute on the rule?
+ // TODO(bazel-team): move this, add other cases
+ String hostPlatform, hostArch;
+ switch (OS.getCurrent()) {
+ case DARWIN:
+ hostPlatform = "darwin";
+ break;
+ case LINUX:
+ hostPlatform = "linux";
+ break;
+ default:
+ hostPlatform = "unknown";
+ }
+ switch (CPU.getCurrent()) {
+ case X86_32:
+ hostArch = "x86";
+ break;
+ case X86_64:
+ hostArch = "x86_64";
+ break;
+ default:
+ hostArch = "unknown";
+ }
+
+ String hostCpu = hostPlatform + "-" + hostArch;
+
String ccToolchainSuiteTemplate;
String ccToolchainTemplate;
String toolchainTemplate;
@@ -92,18 +119,22 @@ public class AndroidNdkRepositoryFunction extends RepositoryFunction {
for (String cpu : cpus) {
toolchainMap.append(String.format("\"%s\": \":cc-compiler-%s\", ", cpu, cpu));
- toolchainProtos.append(toolchainTemplate
- .replace("%repository%", ruleName)
- .replace("%cpu%", cpu)
- .replace("%abi%", abi)
- .replace("%api_level%", apiLevel)
- .replace("%compiler%", compiler));
- toolchains.append(ccToolchainTemplate
- .replace("%repository%", ruleName)
- .replace("%cpu%", cpu)
- .replace("%abi%", abi)
- .replace("%api_level%", apiLevel)
- .replace("%compiler%", compiler));
+ toolchainProtos.append(
+ toolchainTemplate
+ .replace("%repository%", ruleName)
+ .replace("%host_cpu%", hostCpu)
+ .replace("%cpu%", cpu)
+ .replace("%abi%", abi)
+ .replace("%api_level%", apiLevel)
+ .replace("%compiler%", compiler));
+ toolchains.append(
+ ccToolchainTemplate
+ .replace("%repository%", ruleName)
+ .replace("%host_cpu%", hostCpu)
+ .replace("%cpu%", cpu)
+ .replace("%abi%", abi)
+ .replace("%api_level%", apiLevel)
+ .replace("%compiler%", compiler));
}
String buildFile = ccToolchainSuiteTemplate
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_toolchain_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_toolchain_template.txt
index ea24824ea3..f98152cd23 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_toolchain_template.txt
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_toolchain_template.txt
@@ -26,37 +26,37 @@ toolchain {
toolchain_identifier: "%cpu%-linux-androideabi-%compiler%"
tool_path { name: "ar"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-ar"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-ar"
}
tool_path { name: "compat-ld"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-ld"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-ld"
}
tool_path { name: "cpp"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-cpp"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-cpp"
}
tool_path { name: "dwp"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-dwp"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-dwp"
}
tool_path { name: "gcc"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-gcc"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-gcc"
}
tool_path { name: "gcov"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-gcov"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-gcov"
}
tool_path { name: "ld"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-ld"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-ld"
}
tool_path { name: "nm"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-nm"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-nm"
}
tool_path { name: "objcopy"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-objcopy"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-objcopy"
}
tool_path { name: "strip"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-strip"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-strip"
}
tool_path { name: "objdump"
- path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/bin/%cpu%-linux-androideabi-objdump"
+ path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-objdump"
}
objcopy_embed_flag: "-I"
@@ -78,8 +78,8 @@ toolchain {
cxx_builtin_include_directory: "external/%repository%/ndk/platforms/android-%api_level%/arch-%cpu%/usr/include"
cxx_builtin_include_directory: "external/%repository%/ndk/sources"
- cxx_builtin_include_directory: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/lib/gcc/%cpu%-linux-androideabi/%compiler%/include"
- cxx_builtin_include_directory: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/linux-x86_64/lib/gcc/%cpu%-linux-androideabi/%compiler%/include-fixed"
+ cxx_builtin_include_directory: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/lib/gcc/%cpu%-linux-androideabi/%compiler%/include"
+ cxx_builtin_include_directory: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/lib/gcc/%cpu%-linux-androideabi/%compiler%/include-fixed"
unfiltered_cxx_flag: "-isystemexternal/%repository%/ndk/platforms/android-%api_level%/arch-%cpu%/usr/include"
unfiltered_cxx_flag: "-isystemexternal/%repository%/ndk/sources/cxx-stl/gnu-libstdc++/%compiler%/include"