aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-02-24 10:48:38 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-02-24 10:48:38 +0000
commit1b18ae9eb999c137e7e37fc2033514363c569d75 (patch)
tree4a83844d0c855039869b85207e49bf4e6ad1d9f1 /src/main/java/com/google/devtools/build/lib/rules
parent3f4d4e971e67dfd0956e408afb7b61352edb9827 (diff)
Simplify the algorithm to compute top-level artifacts to build even more by creating a HIDDEN_TOP_LEVEL output group and putting the artifacts required for building runfiles there.
-- MOS_MIGRATED_REVID=87039530
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java21
1 files changed, 10 insertions, 11 deletions
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 d85a6fa091..50654e6b67 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
@@ -19,7 +19,6 @@ import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.AlwaysBuiltArtifactsProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
@@ -232,7 +231,7 @@ public abstract class CcLibrary implements RuleConfiguredTargetFactory {
CcLinkingOutputs linkedLibraries = info.getCcLinkingOutputsExcludingPrecompiledLibraries();
NestedSet<Artifact> artifactsToForce =
- collectArtifactsToForce(ruleContext, common, info.getCcCompilationOutputs());
+ collectHiddenTopLevelArtifacts(ruleContext, common, info.getCcCompilationOutputs());
NestedSetBuilder<Artifact> filesBuilder = NestedSetBuilder.stableOrder();
filesBuilder.addAll(LinkerInputs.toLibraryArtifacts(linkedLibraries.getStaticLibraries()));
@@ -266,23 +265,23 @@ public abstract class CcLibrary implements RuleConfiguredTargetFactory {
.add(CppRunfilesProvider.class, new CppRunfilesProvider(staticRunfiles, sharedRunfiles))
.add(ImplementedCcPublicLibrariesProvider.class,
new ImplementedCcPublicLibrariesProvider(getImplementedCcPublicLibraries(ruleContext)))
- .add(AlwaysBuiltArtifactsProvider.class,
- new AlwaysBuiltArtifactsProvider(artifactsToForce))
- .addOutputGroup(TopLevelArtifactProvider.BASELINE_COVERAGE,
- BaselineCoverageAction.getBaselineCoverageArtifacts(
- ruleContext, instrumentedFilesProvider.getInstrumentedFiles()));
+ .addOutputGroup(TopLevelArtifactProvider.HIDDEN_TOP_LEVEL, artifactsToForce)
+ .addOutputGroup(TopLevelArtifactProvider.BASELINE_COVERAGE, BaselineCoverageAction
+ .getBaselineCoverageArtifacts(ruleContext,
+ instrumentedFilesProvider.getInstrumentedFiles()));
}
- private static NestedSet<Artifact> collectArtifactsToForce(RuleContext ruleContext,
+ 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();
artifactsToForceBuilder.addTransitive(
NestedSetBuilder.wrap(Order.STABLE_ORDER, common.getFilesToCompile(ccCompilationOutputs)));
- for (AlwaysBuiltArtifactsProvider dep :
- ruleContext.getPrerequisites("deps", Mode.TARGET, AlwaysBuiltArtifactsProvider.class)) {
- artifactsToForceBuilder.addTransitive(dep.getArtifactsToAlwaysBuild());
+ for (TopLevelArtifactProvider dep :
+ ruleContext.getPrerequisites("deps", Mode.TARGET, TopLevelArtifactProvider.class)) {
+ artifactsToForceBuilder.addTransitive(
+ dep.getOutputGroup(TopLevelArtifactProvider.HIDDEN_TOP_LEVEL));
}
return artifactsToForceBuilder.build();
}