aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-06-10 23:49:07 +0000
committerGravatar Yue Gan <yueg@google.com>2016-06-13 08:12:36 +0000
commit945e47914b63d0a2dbc319e20dbc9b0bd9dccc60 (patch)
treebfe857d38556460cf5f95de98deb3593259ec6cf /src
parenta0440a7defb8a950ac07aabe27bb121cc3eec253 (diff)
Always use android_compiler if android_crosstool_top is set.
Previously, android_compiler would only be used if fat_apk_cpu and android_crosstool_top were both set. This led to confusing errors about invalid toolchains. If --android_crosstool_top is set but --fat_apk_cpu is not, then --cpu will become --android_cpu during the transition. (android_cpu defaults to armeabi if it is not set.) RELNOTES: If --android_crosstool_top is set, native code compiled for android will always use --android_compiler and not --compiler in choosing the crosstool toolchain, and will use --android_cpu if --fat_apk_cpu is not set. -- MOS_MIGRATED_REVID=124611770
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java4
3 files changed, 10 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index 135192fb55..e876d2f993 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -150,7 +150,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
Multimap<String, TransitiveInfoCollection> depsByArchitecture =
MultimapBuilder.treeKeys().arrayListValues().build();
AndroidConfiguration config = ruleContext.getFragment(AndroidConfiguration.class);
- if (config.isFatApk()) {
+ if (config.usesAndroidCrosstool()) {
for (Map.Entry<String, ? extends List<? extends TransitiveInfoCollection>> entry :
ruleContext.getSplitPrerequisites("deps").entrySet()) {
depsByArchitecture.putAll(entry.getKey(), entry.getValue());
@@ -161,7 +161,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
}
Map<String, BuildConfiguration> configurationMap = new LinkedHashMap<>();
Map<String, CcToolchainProvider> toolchainMap = new LinkedHashMap<>();
- if (config.isFatApk()) {
+ if (config.usesAndroidCrosstool()) {
for (Map.Entry<String, ? extends List<? extends TransitiveInfoCollection>> entry :
ruleContext.getSplitPrerequisites(":cc_toolchain_split").entrySet()) {
TransitiveInfoCollection dep = Iterables.getOnlyElement(entry.getValue());
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 f033771d9a..cdc30bf39f 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
@@ -356,7 +356,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
private final boolean legacyNativeSupport;
private final String cpu;
private final boolean incrementalNativeLibs;
- private final boolean fatApk;
+ private final boolean usesAndroidCrosstool;
private final ConfigurationDistinguisher configurationDistinguisher;
private final boolean useJackForDexing;
private final boolean jackSanityChecks;
@@ -373,7 +373,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.usesAndroidCrosstool = (options.androidCrosstoolTop != null);
this.configurationDistinguisher = options.configurationDistinguisher;
this.useJackForDexing = options.useJackForDexing;
this.jackSanityChecks = options.jackSanityChecks;
@@ -407,8 +407,8 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
return strictDeps;
}
- public boolean isFatApk() {
- return fatApk;
+ public boolean usesAndroidCrosstool() {
+ return usesAndroidCrosstool;
}
/**
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 a299489829..306a922bce 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
@@ -224,6 +224,10 @@ public final class AndroidRuleClasses {
if (androidOptions.fatApkCpus.isEmpty()) {
BuildOptions splitOptions = buildOptions.clone();
+ splitOptions.get(CppOptions.class).cppCompiler = androidOptions.cppCompiler;
+ // getSplitPrerequisites() will complain if cpu is null after this transition,
+ // so default to android_cpu.
+ splitOptions.get(BuildConfiguration.Options.class).cpu = androidOptions.cpu;
setCrosstoolToAndroid(splitOptions, buildOptions);
return ImmutableList.of(splitOptions);
}