diff options
author | Steven Dee <steven@interaxon.ca> | 2015-07-21 09:56:19 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2015-07-21 15:13:38 -0400 |
commit | 5289891a6c253d3f90e22844a6e9c7a0552b590d (patch) | |
tree | 554452925e31879b13f7f28f3c87dfbc09e3f850 /src/main/java/com/google/devtools/build/lib | |
parent | 0caf33251bfb55d32e758d92a7db9e3f746ec06a (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/build/lib')
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" |