aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-02-25 13:12:00 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-02-25 14:16:46 +0000
commit7ed934b52e09891a13cae5454f3f0cf8203461a9 (patch)
tree4f9a83c2110d55c9523408c9713242625f77cd45 /src/main/java/com
parentc944ac270677cb052753ed6521cbd659e2b5a5eb (diff)
Make process_headers_in_dependencies work for cc_binary und cc_test targets.
-- MOS_MIGRATED_REVID=115550466
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java13
1 files changed, 13 insertions, 0 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 b8c0727bee..4df20e40ac 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
@@ -608,6 +608,7 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
cppConfiguration.isLipoContextCollector(),
cppConfiguration.processHeadersInDependencies(),
CppHelper.usePic(ruleContext, false));
+ NestedSet<Artifact> artifactsToForce = collectHiddenTopLevelArtifacts(ruleContext);
builder
.setFilesToBuild(filesToBuild)
.add(CppCompilationContext.class, cppCompilationContext)
@@ -630,11 +631,23 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
.addOutputGroup(
OutputGroupProvider.TEMP_FILES, getTemps(cppConfiguration, ccCompilationOutputs))
.addOutputGroup(OutputGroupProvider.FILES_TO_COMPILE, filesToCompile)
+ .addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, artifactsToForce)
.addOutputGroup(
OutputGroupProvider.COMPILATION_PREREQUISITES,
CcCommon.collectCompilationPrerequisites(ruleContext, cppCompilationContext));
}
+ private static NestedSet<Artifact> collectHiddenTopLevelArtifacts(RuleContext ruleContext) {
+ // Ensure that we build all the dependencies, otherwise users may get confused.
+ NestedSetBuilder<Artifact> artifactsToForceBuilder = NestedSetBuilder.stableOrder();
+ for (OutputGroupProvider dep :
+ ruleContext.getPrerequisites("deps", Mode.TARGET, OutputGroupProvider.class)) {
+ artifactsToForceBuilder.addTransitive(
+ dep.getOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL));
+ }
+ return artifactsToForceBuilder.build();
+ }
+
private static NestedSet<Artifact> collectExecutionDynamicLibraryArtifacts(
RuleContext ruleContext,
List<LibraryToLink> executionDynamicLibraries) {