aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index ba662d8aff..49c88e280a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -128,8 +128,11 @@ public final class CcCompilationHelper {
/** Function for extracting module maps from CppCompilationDependencies. */
private static final Function<TransitiveInfoCollection, CppModuleMap> CPP_DEPS_TO_MODULES =
dep -> {
- CcCompilationContextInfo ccCompilationContextInfo =
- dep.get(CcCompilationContextInfo.PROVIDER);
+ CcCompilationInfo ccCompilationInfo = dep.get(CcCompilationInfo.PROVIDER);
+ CcCompilationContextInfo ccCompilationContextInfo = null;
+ if (ccCompilationInfo != null) {
+ ccCompilationContextInfo = ccCompilationInfo.getCcCompilationContextInfo();
+ }
return ccCompilationContextInfo == null ? null : ccCompilationContextInfo.getCppModuleMap();
};
@@ -150,17 +153,14 @@ public final class CcCompilationHelper {
private final TransitiveInfoProviderMap providers;
private final Map<String, NestedSet<Artifact>> outputGroups;
private final CcCompilationOutputs compilationOutputs;
- private final CcCompilationContextInfo ccCompilationContextInfo;
private CompilationInfo(
TransitiveInfoProviderMap providers,
Map<String, NestedSet<Artifact>> outputGroups,
- CcCompilationOutputs compilationOutputs,
- CcCompilationContextInfo ccCompilationContextInfo) {
+ CcCompilationOutputs compilationOutputs) {
this.providers = providers;
this.outputGroups = outputGroups;
this.compilationOutputs = compilationOutputs;
- this.ccCompilationContextInfo = ccCompilationContextInfo;
}
public TransitiveInfoProviderMap getProviders() {
@@ -177,8 +177,13 @@ public final class CcCompilationHelper {
}
@SkylarkCallable(name = "cc_compilation_info", documented = false)
+ public CcCompilationInfo getCcCompilationInfo() {
+ return (CcCompilationInfo) providers.getProvider(CcCompilationInfo.PROVIDER.getKey());
+ }
+
public CcCompilationContextInfo getCcCompilationContextInfo() {
- return ccCompilationContextInfo;
+ return ((CcCompilationInfo) providers.getProvider(CcCompilationInfo.PROVIDER.getKey()))
+ .getCcCompilationContextInfo();
}
}
@@ -731,7 +736,9 @@ public final class CcCompilationHelper {
new CppDebugFileProvider(
dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts()),
collectTransitiveLipoInfo(ccOutputs));
- providers.put(ccCompilationContextInfo);
+ CcCompilationInfo.Builder ccCompilationInfoBuilder = CcCompilationInfo.Builder.create();
+ ccCompilationInfoBuilder.setCcCompilationContextInfo(ccCompilationContextInfo);
+ providers.put(ccCompilationInfoBuilder.build());
Map<String, NestedSet<Artifact>> outputGroups = new TreeMap<>();
outputGroups.put(OutputGroupInfo.TEMP_FILES, getTemps(ccOutputs));
@@ -747,8 +754,7 @@ public final class CcCompilationHelper {
CcCommon.collectCompilationPrerequisites(ruleContext, ccCompilationContextInfo));
}
- return new CompilationInfo(
- providers.build(), outputGroups, ccOutputs, ccCompilationContextInfo);
+ return new CompilationInfo(providers.build(), outputGroups, ccOutputs);
}
@Immutable
@@ -922,7 +928,7 @@ public final class CcCompilationHelper {
if (useDeps) {
ccCompilationContextInfoBuilder.mergeDependentCcCompilationContextInfos(
- AnalysisUtils.getProviders(deps, CcCompilationContextInfo.PROVIDER));
+ CcCompilationInfo.getCcCompilationContextInfos(deps));
ccCompilationContextInfoBuilder.mergeDependentCcCompilationContextInfos(
depCcCompilationContextInfos);
}
@@ -1097,10 +1103,10 @@ public final class CcCompilationHelper {
List<CppModuleMap> result =
deps.stream().map(CPP_DEPS_TO_MODULES).collect(toCollection(ArrayList::new));
if (ruleContext.getRule().getAttributeDefinition(":stl") != null) {
- CcCompilationContextInfo stl =
- ruleContext.getPrerequisite(":stl", Mode.TARGET, CcCompilationContextInfo.PROVIDER);
+ CcCompilationInfo stl =
+ ruleContext.getPrerequisite(":stl", Mode.TARGET, CcCompilationInfo.PROVIDER);
if (stl != null) {
- result.add(stl.getCppModuleMap());
+ result.add(stl.getCcCompilationContextInfo().getCppModuleMap());
}
}
@@ -1980,7 +1986,9 @@ public final class CcCompilationHelper {
// implementation (with caching results of this method) to avoid O(N^2) slowdown.
if (ruleContext.getRule().isAttrDefined("deps", BuildType.LABEL_LIST)) {
for (TransitiveInfoCollection dep : ruleContext.getPrerequisites("deps", Mode.TARGET)) {
- if (dep.get(CcCompilationContextInfo.PROVIDER) != null
+ CcCompilationInfo ccCompilationInfo = dep.get(CcCompilationInfo.PROVIDER);
+ if (ccCompilationInfo != null
+ && ccCompilationInfo.getCcCompilationContextInfo() != null
&& InstrumentedFilesCollector.shouldIncludeLocalSources(configuration, dep)) {
return true;
}