diff options
Diffstat (limited to 'src/main/java/com')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java | 13 |
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) { |