C++: Remove CppDebugFileProvider from CompilationInfo
RELNOTES:none
PiperOrigin-RevId: 232431924
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 8b0fe11..f488325 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
@@ -202,22 +202,15 @@
// this class with {@code CcCompilationOutputs}.
public static final class CompilationInfo implements CompilationInfoApi {
private final CcCompilationContext ccCompilationContext;
- private final CppDebugFileProvider cppDebugFileProvider;
private final CcCompilationOutputs compilationOutputs;
private CompilationInfo(
CcCompilationContext ccCompilationContext,
- CppDebugFileProvider cppDebugFileProvider,
CcCompilationOutputs compilationOutputs) {
this.ccCompilationContext = ccCompilationContext;
- this.cppDebugFileProvider = cppDebugFileProvider;
this.compilationOutputs = compilationOutputs;
}
- public CppDebugFileProvider getCppDebugFileProvider() {
- return cppDebugFileProvider;
- }
-
@Override
public CcCompilationOutputs getCcCompilationOutputs() {
return compilationOutputs;
@@ -747,18 +740,7 @@
// Create compile actions (both PIC and no-PIC).
CcCompilationOutputs ccOutputs = createCcCompileActions();
- DwoArtifactsCollector dwoArtifacts =
- DwoArtifactsCollector.transitiveCollector(
- ccOutputs,
- deps,
- /*generateDwo=*/ false,
- /*ltoBackendArtifactsUsePic=*/ false,
- /*ltoBackendArtifacts=*/ ImmutableList.of());
-
- CppDebugFileProvider cppDebugFileProvider =
- new CppDebugFileProvider(dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts());
-
- return new CompilationInfo(ccCompilationContext, cppDebugFileProvider, ccOutputs);
+ return new CompilationInfo(ccCompilationContext, ccOutputs);
}
public static Map<String, NestedSet<Artifact>> buildOutputGroups(
@@ -768,6 +750,20 @@
return outputGroups;
}
+ public static CppDebugFileProvider buildCppDebugFileProvider(
+ CcCompilationOutputs ccCompilationOutputs, Iterable<TransitiveInfoCollection> deps) {
+ DwoArtifactsCollector dwoArtifacts =
+ DwoArtifactsCollector.transitiveCollector(
+ ccCompilationOutputs,
+ deps,
+ /*generateDwo=*/ false,
+ /*ltoBackendArtifactsUsePic=*/ false,
+ /*ltoBackendArtifacts=*/ ImmutableList.of());
+ CppDebugFileProvider cppDebugFileProvider =
+ new CppDebugFileProvider(dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts());
+ return cppDebugFileProvider;
+ }
+
public static Map<String, NestedSet<Artifact>> buildOutputGroupsForEmittingCompileProviders(
CcCompilationOutputs ccCompilationOutputs,
CcCompilationContext ccCompilationContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
index 0313bb5..e48999a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.rules.cpp;
import com.google.auto.value.AutoValue;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -167,11 +168,14 @@
.setHeadersCheckingMode(HeadersCheckingMode.STRICT)
.compile();
+ CppDebugFileProvider cppDebugFileProvider =
+ CcCompilationHelper.buildCppDebugFileProvider(
+ compilationInfo.getCcCompilationOutputs(), ImmutableList.of());
Map<String, NestedSet<Artifact>> outputGroups =
CcCompilationHelper.buildOutputGroups(compilationInfo.getCcCompilationOutputs());
RuleConfiguredTargetBuilder result =
new RuleConfiguredTargetBuilder(ruleContext)
- .addProvider(compilationInfo.getCppDebugFileProvider())
+ .addProvider(cppDebugFileProvider)
.addNativeDeclaredProvider(
CcInfo.builder()
.setCcCompilationContext(compilationInfo.getCcCompilationContext())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index b6bc9da..46433f7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -31,6 +31,7 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
+import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
@@ -454,6 +455,11 @@
LibraryToLinkWrapper.getDynamicLibrariesForRuntime(
/* linkingStatically= */ false, libraryToLinkWrappers));
+ @SuppressWarnings("unchecked")
+ CppDebugFileProvider cppDebugFileProvider =
+ CcCompilationHelper.buildCppDebugFileProvider(
+ compilationInfo.getCcCompilationOutputs(),
+ (List<TransitiveInfoCollection>) ruleContext.getPrerequisites("deps", Mode.TARGET));
Map<String, NestedSet<Artifact>> currentOutputGroups =
CcCompilationHelper.buildOutputGroupsForEmittingCompileProviders(
compilationInfo.getCcCompilationOutputs(),
@@ -465,7 +471,7 @@
CcSkylarkApiProvider.maybeAdd(ruleContext, targetBuilder);
targetBuilder
.setFilesToBuild(filesToBuild)
- .addProvider(compilationInfo.getCppDebugFileProvider())
+ .addProvider(cppDebugFileProvider)
.addProvider(ccNativeLibraryProvider)
.addNativeDeclaredProvider(
CcInfo.builder()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
index 7f41226..b9a532c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
@@ -53,6 +53,7 @@
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
+import com.google.devtools.build.lib.rules.cpp.CppDebugFileProvider;
import com.google.devtools.build.lib.rules.cpp.CppHelper;
import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
import com.google.devtools.build.lib.rules.cpp.CppSemantics;
@@ -153,7 +154,16 @@
FeatureConfiguration featureConfiguration = getFeatureConfiguration();
ProtoConfiguration protoConfiguration = ruleContext.getFragment(ProtoConfiguration.class);
- CcCompilationHelper compilationHelper = initializeCompilationHelper(featureConfiguration);
+ ImmutableList.Builder<TransitiveInfoCollection> depsBuilder = ImmutableList.builder();
+ TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
+ if (runtime != null) {
+ depsBuilder.add(runtime);
+ }
+ depsBuilder.addAll(ruleContext.getPrerequisites("deps", TARGET));
+ ImmutableList<TransitiveInfoCollection> deps = depsBuilder.build();
+
+ CcCompilationHelper compilationHelper =
+ initializeCompilationHelper(featureConfiguration, deps);
// Compute and register files generated by this proto library.
Collection<Artifact> outputs = new ArrayList<>();
@@ -196,22 +206,14 @@
CompilationInfo compilationInfo = compilationHelper.compile();
CcCompilationOutputs ccCompilationOutputs = compilationInfo.getCcCompilationOutputs();
- ImmutableList.Builder<TransitiveInfoCollection> depsBuilder =
- ImmutableList.<TransitiveInfoCollection>builder();
- TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
- if (runtime != null) {
- depsBuilder.add(runtime);
- }
- depsBuilder.addAll(ruleContext.getPrerequisites("deps", TARGET));
- ImmutableList<TransitiveInfoCollection> deps = depsBuilder.build();
CcLinkingHelper ccLinkingHelper = initializeLinkingHelper(featureConfiguration, deps);
if (ccToolchain(ruleContext).supportsInterfaceSharedLibraries(featureConfiguration)) {
ccLinkingHelper.emitInterfaceSharedLibraries(true);
}
- CcLinkingOutputs ccLinkingOutputs = CcLinkingOutputs.EMPTY;
+
ImmutableList<LibraryToLinkWrapper> libraryToLinkWrapper = ImmutableList.of();
if (!ccCompilationOutputs.isEmpty()) {
- ccLinkingOutputs = ccLinkingHelper.link(ccCompilationOutputs);
+ CcLinkingOutputs ccLinkingOutputs = ccLinkingHelper.link(ccCompilationOutputs);
if (!ccLinkingOutputs.isEmpty()) {
libraryToLinkWrapper = ImmutableList.of(ccLinkingOutputs.getLibraryToLink());
}
@@ -222,9 +224,12 @@
ccLinkingHelper.buildCcLinkingContextFromLibraryToLinkWrappers(
libraryToLinkWrapper, compilationInfo.getCcCompilationContext());
+ CppDebugFileProvider cppDebugFileProvider =
+ CcCompilationHelper.buildCppDebugFileProvider(
+ compilationInfo.getCcCompilationOutputs(), deps);
ccLibraryProviders =
new TransitiveInfoProviderMapBuilder()
- .add(compilationInfo.getCppDebugFileProvider())
+ .add(cppDebugFileProvider)
.put(
CcInfo.builder()
.setCcCompilationContext(compilationInfo.getCcCompilationContext())
@@ -288,7 +293,7 @@
}
private CcCompilationHelper initializeCompilationHelper(
- FeatureConfiguration featureConfiguration) {
+ FeatureConfiguration featureConfiguration, List<TransitiveInfoCollection> deps) {
CcToolchainProvider toolchain = ccToolchain(ruleContext);
CcCompilationHelper helper =
new CcCompilationHelper(
@@ -297,13 +302,7 @@
featureConfiguration,
toolchain,
toolchain.getFdoContext());
- TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
- if (runtime != null) {
- helper.addDeps(ImmutableList.of(runtime));
- }
-
- helper.addDeps(ruleContext.getPrerequisites("deps", TARGET));
-
+ helper.addDeps(deps);
// Don't instrument the generated C++ files even when --collect_code_coverage is set.
helper.setAllowCoverageInstrumentation(false);
return helper;