diff options
author | Ulf Adams <ulfjack@google.com> | 2015-07-29 14:19:25 +0000 |
---|---|---|
committer | Lukacs Berki <lberki@google.com> | 2015-07-29 16:03:12 +0000 |
commit | c68faf184631759724386aa53747bcdff03f5ed7 (patch) | |
tree | 9c7e590f9175b1fa1ff25efa8ea6f122ce812bcb /src/main/java/com/google/devtools/build/lib | |
parent | bad588aebf2d1f2028fa85635720dc34fd7dbb37 (diff) |
Move a method from CcCommon to CcBinary that is only called from there.
--
MOS_MIGRATED_REVID=99372555
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java | 71 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java | 63 |
2 files changed, 68 insertions, 66 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 bff7edf667..76081e2e09 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 @@ -45,6 +45,7 @@ import com.google.devtools.build.lib.rules.cpp.Link.LinkStaticness; import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType; import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink; import com.google.devtools.build.lib.rules.test.BaselineCoverageAction; +import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.syntax.Label; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.util.FileTypeSet; @@ -272,9 +273,9 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory { } RuleConfiguredTargetBuilder ruleBuilder = new RuleConfiguredTargetBuilder(ruleContext); - common.addTransitiveInfoProviders( - ruleBuilder, filesToBuild, ccCompilationOutputs, cppCompilationContext, linkingOutputs, - dwoArtifacts, transitiveLipoInfo); + addTransitiveInfoProviders( + ruleContext, common, ruleBuilder, filesToBuild, ccCompilationOutputs, cppCompilationContext, + linkingOutputs, dwoArtifacts, transitiveLipoInfo); Map<Artifact, IncludeScannable> scannableMap = new LinkedHashMap<>(); if (cppConfiguration.isLipoContextCollector()) { @@ -604,4 +605,68 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory { return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } } + + private static void addTransitiveInfoProviders( + RuleContext ruleContext, + CcCommon common, + RuleConfiguredTargetBuilder builder, + NestedSet<Artifact> filesToBuild, + CcCompilationOutputs ccCompilationOutputs, + CppCompilationContext cppCompilationContext, + CcLinkingOutputs linkingOutputs, + DwoArtifactsCollector dwoArtifacts, + TransitiveLipoInfoProvider transitiveLipoInfo) { + List<Artifact> instrumentedObjectFiles = new ArrayList<>(); + instrumentedObjectFiles.addAll(ccCompilationOutputs.getObjectFiles(false)); + instrumentedObjectFiles.addAll(ccCompilationOutputs.getObjectFiles(true)); + 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(InstrumentedFilesProvider.class, common.getInstrumentedFilesProvider( + instrumentedObjectFiles)) + .add(CppDebugFileProvider.class, new CppDebugFileProvider( + dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts())) + .addOutputGroup(OutputGroupProvider.TEMP_FILES, common.getTemps(ccCompilationOutputs)) + .addOutputGroup(OutputGroupProvider.FILES_TO_COMPILE, + NestedSetBuilder.wrap(Order.STABLE_ORDER, + common.getFilesToCompile(ccCompilationOutputs))) + .addOutputGroup(OutputGroupProvider.COMPILATION_PREREQUISITES, + CcCommon.collectCompilationPrerequisites(ruleContext, cppCompilationContext)); + } + + private static NestedSet<Artifact> collectExecutionDynamicLibraryArtifacts( + RuleContext ruleContext, + List<LibraryToLink> executionDynamicLibraries) { + Iterable<Artifact> artifacts = LinkerInputs.toLibraryArtifacts(executionDynamicLibraries); + if (!Iterables.isEmpty(artifacts)) { + return NestedSetBuilder.wrap(Order.STABLE_ORDER, artifacts); + } + + Iterable<CcExecutionDynamicLibrariesProvider> deps = ruleContext + .getPrerequisites("deps", Mode.TARGET, CcExecutionDynamicLibrariesProvider.class); + + NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder(); + for (CcExecutionDynamicLibrariesProvider dep : deps) { + builder.addTransitive(dep.getExecutionDynamicLibraryArtifacts()); + } + return builder.build(); + } + + private static NestedSet<LinkerInput> collectTransitiveCcNativeLibraries( + RuleContext ruleContext, + List<? extends LinkerInput> dynamicLibraries) { + NestedSetBuilder<LinkerInput> builder = NestedSetBuilder.linkOrder(); + builder.addAll(dynamicLibraries); + for (CcNativeLibraryProvider dep : + ruleContext.getPrerequisites("deps", Mode.TARGET, CcNativeLibraryProvider.class)) { + builder.addTransitive(dep.getTransitiveCcNativeLibraries()); + } + return builder.build(); + } } 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 c4c49af695..a19e05feed 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 @@ -23,9 +23,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.AnalysisEnvironment; import com.google.devtools.build.lib.analysis.AnalysisUtils; import com.google.devtools.build.lib.analysis.FileProvider; -import com.google.devtools.build.lib.analysis.OutputGroupProvider; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; -import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -151,24 +149,6 @@ public final class CcCommon { return ruleContext.attributes().has(name, type); } - private static NestedSet<Artifact> collectExecutionDynamicLibraryArtifacts( - RuleContext ruleContext, - List<LibraryToLink> executionDynamicLibraries) { - Iterable<Artifact> artifacts = LinkerInputs.toLibraryArtifacts(executionDynamicLibraries); - if (!Iterables.isEmpty(artifacts)) { - return NestedSetBuilder.wrap(Order.STABLE_ORDER, artifacts); - } - - Iterable<CcExecutionDynamicLibrariesProvider> deps = ruleContext - .getPrerequisites("deps", Mode.TARGET, CcExecutionDynamicLibrariesProvider.class); - - NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder(); - for (CcExecutionDynamicLibrariesProvider dep : deps) { - builder.addTransitive(dep.getExecutionDynamicLibraryArtifacts()); - } - return builder.build(); - } - /** * Collects all .dwo artifacts in this target's transitive closure. */ @@ -211,18 +191,6 @@ public final class CcCommon { return new TransitiveLipoInfoProvider(scannableBuilder.build()); } - private NestedSet<LinkerInput> collectTransitiveCcNativeLibraries( - RuleContext ruleContext, - List<? extends LinkerInput> dynamicLibraries) { - NestedSetBuilder<LinkerInput> builder = NestedSetBuilder.linkOrder(); - builder.addAll(dynamicLibraries); - for (CcNativeLibraryProvider dep : - ruleContext.getPrerequisites("deps", Mode.TARGET, CcNativeLibraryProvider.class)) { - builder.addTransitive(dep.getTransitiveCcNativeLibraries()); - } - return builder.build(); - } - /** * Returns a list of ({@link Artifact}, {@link Label}) pairs. Each pair represents an input * source file and the label of the rule that generates it (or the label of the source file @@ -724,35 +692,4 @@ public final class CcCommon { public static FeatureConfiguration configureFeatures(RuleContext ruleContext) { return configureFeatures(ruleContext, ImmutableSet.<String>of(), ImmutableSet.<String>of()); } - - public void addTransitiveInfoProviders(RuleConfiguredTargetBuilder builder, - NestedSet<Artifact> filesToBuild, - CcCompilationOutputs ccCompilationOutputs, - CppCompilationContext cppCompilationContext, - CcLinkingOutputs linkingOutputs, - DwoArtifactsCollector dwoArtifacts, - TransitiveLipoInfoProvider transitiveLipoInfo) { - List<Artifact> instrumentedObjectFiles = new ArrayList<>(); - instrumentedObjectFiles.addAll(ccCompilationOutputs.getObjectFiles(false)); - instrumentedObjectFiles.addAll(ccCompilationOutputs.getObjectFiles(true)); - 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(InstrumentedFilesProvider.class, getInstrumentedFilesProvider( - instrumentedObjectFiles)) - .add(CppDebugFileProvider.class, new CppDebugFileProvider( - dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts())) - .addOutputGroup(OutputGroupProvider.TEMP_FILES, getTemps(ccCompilationOutputs)) - .addOutputGroup(OutputGroupProvider.FILES_TO_COMPILE, - NestedSetBuilder.wrap(Order.STABLE_ORDER, getFilesToCompile(ccCompilationOutputs))) - .addOutputGroup(OutputGroupProvider.COMPILATION_PREREQUISITES, - collectCompilationPrerequisites(ruleContext, cppCompilationContext)); - - } } |