diff options
author | Lukacs Berki <lberki@google.com> | 2015-07-29 15:32:19 +0000 |
---|---|---|
committer | Lukacs Berki <lberki@google.com> | 2015-07-29 16:03:57 +0000 |
commit | a93c63bb96ac9f540d8d39ae4158cc8bd335e127 (patch) | |
tree | ee11ca8373d5d6c020a607beef70173c9e728abf /src/main/java/com/google/devtools/build/lib | |
parent | e685ef34b4bec0c7125e7a4041d8598556d73246 (diff) |
Make Bazel always build with --fat_apk_cpu.
Also tweak the Android NDK CROSSTOOL file a bit so that it actually works.
Fixes #335.
--
MOS_MIGRATED_REVID=99377509
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
6 files changed, 36 insertions, 26 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/Constants.java b/src/main/java/com/google/devtools/build/lib/Constants.java index b178b826a7..963160d01f 100644 --- a/src/main/java/com/google/devtools/build/lib/Constants.java +++ b/src/main/java/com/google/devtools/build/lib/Constants.java @@ -84,5 +84,7 @@ public class Constants { public static final String ANDROID_DEFAULT_SDK = "//external:android/sdk".toString(); public static final String ANDROID_DEFAULT_CROSSTOOL = "//external:android/crosstool".toString(); + public static final ImmutableList<String> ANDROID_DEFAULT_FAT_APK_CPUS = + ImmutableList.<String>of("armeabi-v7a"); public static final String ANDROID_DEP_PREFIX = "//external:android/".toString(); } 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 94b84ce3eb..a98fb177ce 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 @@ -118,7 +118,7 @@ public class AndroidNdkRepositoryFunction extends RepositoryFunction { StringBuilder toolchains = new StringBuilder(); for (String cpu : cpus) { - toolchainMap.append(String.format("\"%s\": \":cc-compiler-%s\", ", cpu, cpu)); + toolchainMap.append(String.format("\"%s\": \":cc-compiler-%s\", ", abi, abi)); toolchainProtos.append( toolchainTemplate .replace("%repository%", ruleName) @@ -141,7 +141,7 @@ public class AndroidNdkRepositoryFunction extends RepositoryFunction { .replace("%toolchain_map%", toolchainMap) .replace("%toolchain_protos%", toolchainProtos) .replace("%toolchains%", toolchains) - .replace("%default_cpu%", cpus.get(0)); + .replace("%default_cpu%", abi); return writeBuildFile(directoryValue, buildFile); } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_cc_toolchain_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_cc_toolchain_template.txt index 64ebd7f182..c920236f00 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_cc_toolchain_template.txt +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_cc_toolchain_template.txt @@ -1,5 +1,5 @@ filegroup( - name = "%cpu%-android-%compiler%-toolchain", + name = "%abi%-android-%compiler%-toolchain", srcs = glob([ "toolchains/%cpu%-linux-androideabi-%compiler%/**", ]), @@ -7,29 +7,29 @@ filegroup( ) filegroup( - name = "%cpu%-android-%api_level%-%compiler%-files", + name = "%abi%-android-%api_level%-%compiler%-files", srcs = [ - ":everything-%api_level%-%compiler%", - ":%cpu%-android-%compiler%-toolchain", + ":everything-%api_level%-%abi%", + ":%abi%-android-%compiler%-toolchain", ], ) cc_toolchain( - name = "cc-compiler-%cpu%", - all_files = ":%cpu%-android-%api_level%-%compiler%-files", - compiler_files = ":%cpu%-android-%compiler%-toolchain", - cpu = "%cpu%", - dwp_files = ":%cpu%-android-%compiler%-toolchain", - dynamic_runtime_libs = [":%cpu%-android-%compiler%-toolchain"], - linker_files = ":%cpu%-android-%compiler%-toolchain", - objcopy_files = ":%cpu%-android-%compiler%-toolchain", - static_runtime_libs = [":%cpu%-android-%compiler%-toolchain"], - strip_files = ":%cpu%-android-%compiler%-toolchain", + name = "cc-compiler-%abi%", + all_files = ":%abi%-android-%api_level%-%compiler%-files", + compiler_files = ":%abi%-android-%compiler%-toolchain", + cpu = "%abi%", + dwp_files = ":%abi%-android-%compiler%-toolchain", + dynamic_runtime_libs = [":%abi%-android-%compiler%-toolchain"], + linker_files = ":%abi%-android-%compiler%-toolchain", + objcopy_files = ":%abi%-android-%compiler%-toolchain", + static_runtime_libs = [":%abi%-android-%compiler%-toolchain"], + strip_files = ":%abi%-android-%compiler%-toolchain", supports_param_files = 0, ) filegroup( - name = "everything-%api_level%-%cpu%", + name = "everything-%api_level%-%abi%", srcs = glob( [ "ndk/platforms/android-%api_level%/arch-%cpu%/usr/include/**/*.h", 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 f98152cd23..836a807cb8 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 @@ -1,6 +1,6 @@ default_toolchain { - cpu: "%cpu%" - toolchain_identifier: "%cpu%-linux-androideabi-%compiler%" + cpu: "%abi%" + toolchain_identifier: "%abi%-linux-androideabi-%compiler%" } toolchain { @@ -21,9 +21,9 @@ toolchain { supports_thin_archives: false target_libc: "local" - target_cpu: "%cpu%" - target_system_name: "%cpu%-linux-androideabi-%compiler%" - toolchain_identifier: "%cpu%-linux-androideabi-%compiler%" + target_cpu: "%abi%" + target_system_name: "%abi%-linux-androideabi-%compiler%" + toolchain_identifier: "%abi%-linux-androideabi-%compiler%" tool_path { name: "ar" path: "external/%repository%/ndk/toolchains/%cpu%-linux-androideabi-%compiler%/prebuilt/%host_cpu%/bin/%cpu%-linux-androideabi-ar" diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java index 5373533105..a472310402 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java @@ -199,6 +199,14 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { return Label.parseAbsoluteUnchecked(Constants.ANDROID_DEFAULT_CROSSTOOL); } + public List<String> realFatApkCpus() { + if (fatApkCpus.isEmpty()) { + return Constants.ANDROID_DEFAULT_FAT_APK_CPUS; + } else { + return fatApkCpus; + } + } + @Override public ImmutableList<String> getDefaultsRules() { return ImmutableList.of("android_tools_defaults_jar(name = 'android_jar')"); @@ -248,7 +256,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { this.strictDeps = options.strictDeps; this.legacyNativeSupport = options.legacyNativeSupport; this.cpu = options.cpu; - this.fatApk = !options.fatApkCpus.isEmpty(); + this.fatApk = !options.realFatApkCpus().isEmpty(); this.configurationDistinguisher = options.configurationDistinguisher; this.proguard = options.proguard; this.useJackForDexing = options.useJackForDexing; diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java index a941660541..91eb7960c5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java @@ -201,19 +201,19 @@ public final class AndroidRuleClasses { buildOptions.get(AndroidConfiguration.Options.class); CppOptions cppOptions = buildOptions.get(CppOptions.class); Label androidCrosstoolTop = androidOptions.realAndroidCrosstoolTop(); - if (androidOptions.fatApkCpus.isEmpty() + if (androidOptions.realFatApkCpus().isEmpty() && (androidCrosstoolTop == null || androidCrosstoolTop.equals(cppOptions.crosstoolTop))) { return ImmutableList.of(); } - if (androidOptions.fatApkCpus.isEmpty()) { + if (androidOptions.realFatApkCpus().isEmpty()) { BuildOptions splitOptions = buildOptions.clone(); setCrosstoolToAndroid(splitOptions, buildOptions); return ImmutableList.of(splitOptions); } List<BuildOptions> result = new ArrayList<>(); - for (String cpu : ImmutableSortedSet.copyOf(androidOptions.fatApkCpus)) { + for (String cpu : ImmutableSortedSet.copyOf(androidOptions.realFatApkCpus())) { BuildOptions splitOptions = buildOptions.clone(); // Disable fat APKs for the child configurations. splitOptions.get(AndroidConfiguration.Options.class).fatApkCpus = ImmutableList.of(); |