18
18
import com .google .devtools .build .lib .analysis .PlatformOptions ;
19
19
import com .google .devtools .build .lib .analysis .config .BuildOptions ;
20
20
import com .google .devtools .build .lib .analysis .config .BuildOptionsView ;
21
+ import com .google .devtools .build .lib .analysis .config .CoreOptions ;
21
22
import com .google .devtools .build .lib .analysis .config .FragmentOptions ;
22
23
import com .google .devtools .build .lib .analysis .config .transitions .PatchTransition ;
23
24
import com .google .devtools .build .lib .analysis .config .transitions .StarlarkExposedRuleTransitionFactory ;
24
25
import com .google .devtools .build .lib .analysis .config .transitions .TransitionFactory ;
26
+ import com .google .devtools .build .lib .analysis .starlark .FunctionTransitionUtil ;
25
27
import com .google .devtools .build .lib .events .EventHandler ;
26
28
import com .google .devtools .build .lib .packages .RuleTransitionData ;
27
29
import com .google .devtools .build .lib .rules .cpp .CppOptions ;
@@ -51,7 +53,10 @@ public static TransitionFactory<RuleTransitionData> create() {
51
53
@ Override
52
54
public ImmutableSet <Class <? extends FragmentOptions >> requiresOptionFragments () {
53
55
return ImmutableSet .of (
54
- AndroidConfiguration .Options .class , PlatformOptions .class , CppOptions .class );
56
+ AndroidConfiguration .Options .class ,
57
+ PlatformOptions .class ,
58
+ CoreOptions .class ,
59
+ CppOptions .class );
55
60
}
56
61
57
62
@ Override
@@ -74,6 +79,22 @@ public BuildOptions patch(BuildOptionsView options, EventHandler eventHandler) {
74
79
newOptions .get (CppOptions .class ).enableCcToolchainResolution = true ;
75
80
}
76
81
82
+ if (androidOptions .androidPlatformsTransitionsUpdateAffected ) {
83
+ ImmutableSet .Builder <String > affected = ImmutableSet .builder ();
84
+ if (!options
85
+ .get (PlatformOptions .class )
86
+ .platforms
87
+ .equals (newOptions .get (PlatformOptions .class ).platforms )) {
88
+ affected .add ("//command_line_option:platforms" );
89
+ }
90
+ if (options .get (CppOptions .class ).enableCcToolchainResolution
91
+ != newOptions .get (CppOptions .class ).enableCcToolchainResolution ) {
92
+ affected .add ("//command_line_option:incompatible_enable_cc_toolchain_resolution" );
93
+ }
94
+ FunctionTransitionUtil .updateAffectedByStarlarkTransition (
95
+ newOptions .get (CoreOptions .class ), affected .build ());
96
+ }
97
+
77
98
return newOptions .underlying ();
78
99
}
79
100
0 commit comments