When Android is using toolchain resolution, CC rules should also.
PiperOrigin-RevId: 361579888
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 567e12b..af522a5 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
@@ -985,6 +985,7 @@
host.androidCrosstoolTop = androidCrosstoolTop;
host.sdk = sdk;
host.fatApkCpus = ImmutableList.of(); // Fat APK archs don't apply to the host.
+ host.incompatibleUseToolchainResolution = incompatibleUseToolchainResolution;
host.desugarJava8 = desugarJava8;
host.desugarJava8Libs = desugarJava8Libs;
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 6c9d1c2..ce62bcb 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
@@ -57,6 +57,7 @@
import com.google.devtools.build.lib.rules.config.ConfigFeatureFlagProvider;
import com.google.devtools.build.lib.rules.cpp.CcInfo;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
+import com.google.devtools.build.lib.rules.cpp.CppOptions;
import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaRuleClasses;
@@ -482,7 +483,8 @@
@Override
public ImmutableSet<Class<? extends FragmentOptions>> requiresOptionFragments() {
- return ImmutableSet.of(AndroidConfiguration.Options.class, PlatformOptions.class);
+ return ImmutableSet.of(
+ AndroidConfiguration.Options.class, PlatformOptions.class, CppOptions.class);
}
@Override
@@ -496,6 +498,14 @@
BuildOptionsView newOptions = options.clone();
PlatformOptions newPlatformOptions = newOptions.get(PlatformOptions.class);
newPlatformOptions.platforms = ImmutableList.of(androidOptions.androidPlatforms.get(0));
+
+ // If we are using toolchain resolution for Android, also use it for CPP.
+ // This needs to be before the AndroidBinary is analyzed so that all native dependencies
+ // use the same configuration.
+ if (androidOptions.incompatibleUseToolchainResolution) {
+ newOptions.get(CppOptions.class).enableCcToolchainResolution = true;
+ }
+
return newOptions.underlying();
}