aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java47
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java10
7 files changed, 35 insertions, 79 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 4e79ea0363..3afa030e1c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -300,17 +300,8 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
RuleConfiguredTargetBuilder ruleBuilder = new RuleConfiguredTargetBuilder(ruleContext);
addTransitiveInfoProviders(
- ruleContext,
- cppConfiguration,
- common,
- ruleBuilder,
- filesToBuild,
- ccCompilationOutputs,
- cppCompilationContext,
- linkingOutputs,
- dwoArtifacts,
- transitiveLipoInfo,
- fake);
+ ruleContext, cppConfiguration, common, ruleBuilder, filesToBuild, ccCompilationOutputs,
+ cppCompilationContext, linkingOutputs, dwoArtifacts, transitiveLipoInfo, fake);
Map<Artifact, IncludeScannable> scannableMap = new LinkedHashMap<>();
if (cppConfiguration.isLipoContextCollector()) {
@@ -595,33 +586,23 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
InstrumentedFilesProvider instrumentedFilesProvider = common.getInstrumentedFilesProvider(
instrumentedObjectFiles, !TargetUtils.isTestRule(ruleContext.getRule()) && !fake);
- NestedSet<Artifact> filesToCompile = ccCompilationOutputs.getFilesToCompile(
- cppConfiguration.isLipoContextCollector(), CppHelper.usePic(ruleContext, false));
builder
.setFilesToBuild(filesToBuild)
.add(CppCompilationContext.class, cppCompilationContext)
.add(TransitiveLipoInfoProvider.class, transitiveLipoInfo)
- .add(
- CcExecutionDynamicLibrariesProvider.class,
- new CcExecutionDynamicLibrariesProvider(
- collectExecutionDynamicLibraryArtifacts(
- ruleContext, linkingOutputs.getExecutionDynamicLibraries())))
- .add(
- CcNativeLibraryProvider.class,
- new CcNativeLibraryProvider(
- collectTransitiveCcNativeLibraries(
- ruleContext, linkingOutputs.getDynamicLibraries())))
+ .add(CcExecutionDynamicLibrariesProvider.class,
+ new CcExecutionDynamicLibrariesProvider(collectExecutionDynamicLibraryArtifacts(
+ ruleContext, linkingOutputs.getExecutionDynamicLibraries())))
+ .add(CcNativeLibraryProvider.class, new CcNativeLibraryProvider(
+ collectTransitiveCcNativeLibraries(ruleContext, linkingOutputs.getDynamicLibraries())))
.add(InstrumentedFilesProvider.class, instrumentedFilesProvider)
- .add(
- CppDebugFileProvider.class,
- new CppDebugFileProvider(
- dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts()))
- .addOutputGroup(
- OutputGroupProvider.TEMP_FILES, getTemps(cppConfiguration, ccCompilationOutputs))
- .addOutputGroup(
- OutputGroupProvider.FILES_TO_COMPILE, filesToCompile)
- .addOutputGroup(
- OutputGroupProvider.COMPILATION_PREREQUISITES,
+ .add(CppDebugFileProvider.class, new CppDebugFileProvider(
+ dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts()))
+ .addOutputGroup(OutputGroupProvider.TEMP_FILES,
+ getTemps(cppConfiguration, ccCompilationOutputs))
+ .addOutputGroup(OutputGroupProvider.FILES_TO_COMPILE,
+ common.getFilesToCompile(ccCompilationOutputs))
+ .addOutputGroup(OutputGroupProvider.COMPILATION_PREREQUISITES,
CcCommon.collectCompilationPrerequisites(ruleContext, cppCompilationContext));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index 49715198c4..2ede292346 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.rules.apple.Platform;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
@@ -459,6 +460,14 @@ public final class CcCommon {
CppFileTypes.LINKER_SCRIPT);
}
+ NestedSet<Artifact> getFilesToCompile(CcCompilationOutputs compilationOutputs) {
+ if (cppConfiguration.isLipoContextCollector()) {
+ return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
+ }
+ return NestedSetBuilder.wrap(Order.STABLE_ORDER,
+ compilationOutputs.getObjectFiles(CppHelper.usePic(ruleContext, false)));
+ }
+
InstrumentedFilesProvider getInstrumentedFilesProvider(Iterable<Artifact> files,
boolean withBaselineCoverage) {
return cppConfiguration.isLipoContextCollector()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
index aad62f05e7..67162c20d7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
@@ -19,7 +19,6 @@ import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.collect.nestedset.Order;
import java.util.ArrayList;
import java.util.LinkedHashSet;
@@ -145,20 +144,6 @@ public class CcCompilationOutputs {
public List<IncludeScannable> getLipoScannables() {
return lipoScannables;
}
-
- /**
- * Returns the output files that are considered "copmiled" by this C++ compile action.
- */
- NestedSet<Artifact> getFilesToCompile(boolean isLipoContextCollector, boolean usePic) {
- if (isLipoContextCollector) {
- return NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER);
- }
- NestedSetBuilder<Artifact> files = NestedSetBuilder.stableOrder();
- files.addAll(getObjectFiles(usePic));
- files.addAll(getHeaderTokenFiles());
- return files.build();
- }
-
public static final class Builder {
private final Set<Artifact> objectFiles = new LinkedHashSet<>();
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 411f9ac5e3..764b7f4441 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
@@ -231,7 +231,7 @@ public abstract class CcLibrary implements RuleConfiguredTargetFactory {
CcLinkingOutputs linkedLibraries = info.getCcLinkingOutputsExcludingPrecompiledLibraries();
NestedSet<Artifact> artifactsToForce =
- collectHiddenTopLevelArtifacts(ruleContext, info.getCcCompilationOutputs());
+ collectHiddenTopLevelArtifacts(ruleContext, common, info.getCcCompilationOutputs());
NestedSetBuilder<Artifact> filesBuilder = NestedSetBuilder.stableOrder();
filesBuilder.addAll(LinkerInputs.toLibraryArtifacts(linkedLibraries.getStaticLibraries()));
@@ -268,15 +268,11 @@ public abstract class CcLibrary implements RuleConfiguredTargetFactory {
}
- private static NestedSet<Artifact> collectHiddenTopLevelArtifacts(
- RuleContext ruleContext, CcCompilationOutputs ccCompilationOutputs) {
+ private static NestedSet<Artifact> collectHiddenTopLevelArtifacts(RuleContext ruleContext,
+ CcCommon common, CcCompilationOutputs ccCompilationOutputs) {
// Ensure that we build all the dependencies, otherwise users may get confused.
NestedSetBuilder<Artifact> artifactsToForceBuilder = NestedSetBuilder.stableOrder();
- boolean isLipoCollector =
- ruleContext.getFragment(CppConfiguration.class).isLipoContextCollector();
- boolean usePic = CppHelper.usePic(ruleContext, false);
- artifactsToForceBuilder.addTransitive(
- ccCompilationOutputs.getFilesToCompile(isLipoCollector, usePic));
+ artifactsToForceBuilder.addTransitive(common.getFilesToCompile(ccCompilationOutputs));
for (OutputGroupProvider dep :
ruleContext.getPrerequisites("deps", Mode.TARGET, OutputGroupProvider.class)) {
artifactsToForceBuilder.addTransitive(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
index f08baba335..6fd24c9659 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
@@ -744,12 +744,7 @@ public final class CcLibraryHelper {
Map<String, NestedSet<Artifact>> outputGroups = new TreeMap<>();
outputGroups.put(OutputGroupProvider.TEMP_FILES, getTemps(ccOutputs));
if (emitCompileProviders) {
- boolean isLipoCollector =
- ruleContext.getFragment(CppConfiguration.class).isLipoContextCollector();
- boolean usePic = CppHelper.usePic(ruleContext, false);
- outputGroups.put(
- OutputGroupProvider.FILES_TO_COMPILE,
- ccOutputs.getFilesToCompile(isLipoCollector, usePic));
+ outputGroups.put(OutputGroupProvider.FILES_TO_COMPILE, getFilesToCompile(ccOutputs));
outputGroups.put(OutputGroupProvider.COMPILATION_PREREQUISITES,
CcCommon.collectCompilationPrerequisites(ruleContext, cppCompilationContext));
}
@@ -1008,4 +1003,11 @@ public final class CcLibraryHelper {
? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)
: compilationOutputs.getTemps();
}
+
+ private NestedSet<Artifact> getFilesToCompile(CcCompilationOutputs compilationOutputs) {
+ return ruleContext.getFragment(CppConfiguration.class).isLipoContextCollector()
+ ? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)
+ : NestedSetBuilder.<Artifact>wrap(Order.STABLE_ORDER,
+ compilationOutputs.getObjectFiles(CppHelper.usePic(ruleContext, false)));
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index 9a81fec0db..bab6cf54ca 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -1530,13 +1530,6 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
public boolean skipStaticOutputs() {
return cppOptions.skipStaticOutputs;
}
-
- /**
- * Returns whether we are processing headers in dependencies of built C++ targets.
- */
- public boolean processHeadersInDependencies() {
- return cppOptions.processHeadersInDependencies;
- }
/**
* Returns true if Fission is specified for this build and supported by the crosstool.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 683e559a46..a1015979e7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -244,16 +244,6 @@ public class CppOptions extends FragmentOptions {
+ "network and disk I/O load (and thus, continuous build cycle times) by a lot. "
+ "NOTE: use of this flag REQUIRES --distinct_host_configuration.")
public boolean skipStaticOutputs;
-
- @Option(
- name = "process_headers_in_dependencies",
- defaultValue = "false",
- category = "semantics",
- help =
- "When building a target //a:a, process headers in all targets that //a:a depends "
- + "on (if header processing is enabled for the toolchain)."
- )
- public boolean processHeadersInDependencies;
@Option(name = "copt",
allowMultiple = true,