aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-07-29 15:32:19 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-07-29 16:03:57 +0000
commita93c63bb96ac9f540d8d39ae4158cc8bd335e127 (patch)
treeee11ca8373d5d6c020a607beef70173c9e728abf /src/main/java/com/google/devtools/build/lib
parente685ef34b4bec0c7125e7a4041d8598556d73246 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/Constants.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_cc_toolchain_template.txt30
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_toolchain_template.txt10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java6
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();