diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
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, |