diff options
author | 2016-06-10 23:49:07 +0000 | |
---|---|---|
committer | 2016-06-13 08:12:36 +0000 | |
commit | 945e47914b63d0a2dbc319e20dbc9b0bd9dccc60 (patch) | |
tree | bfe857d38556460cf5f95de98deb3593259ec6cf /src | |
parent | a0440a7defb8a950ac07aabe27bb121cc3eec253 (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')
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); } |