aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-02-26 13:13:39 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-28 17:04:23 +0000
commitde62b4e9cd0f56473278811774ec191a4e0fafcd (patch)
treed5f18446ad3935c35340f84f0fcab7d3dceb47c3 /src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
parentb8101f57681f292a9ec312a9cbbc84ac4ec0668d (diff)
Pass the source path -> Artifact mapping into FdoSupport from a provider instead of special-casing it.
This removes the need to deserialize artifacts in FdoSupport, which in turn removes the need to support artifact deserialization at all, which makes our lives simpler and Thoreauvian programming is good. -- MOS_MIGRATED_REVID=115660698
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java5
1 files changed, 4 insertions, 1 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 4df20e40ac..5d4bb91a40 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
@@ -321,6 +321,7 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
fake);
Map<Artifact, IncludeScannable> scannableMap = new LinkedHashMap<>();
+ Map<PathFragment, Artifact> sourceFileMap = new LinkedHashMap<>();
if (cppConfiguration.isLipoContextCollector()) {
for (IncludeScannable scannable : transitiveLipoInfo.getTransitiveIncludeScannables()) {
// These should all be CppCompileActions, which should have only one source file.
@@ -328,6 +329,7 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
Artifact source =
Iterables.getOnlyElement(scannable.getIncludeScannerSources());
scannableMap.put(source, scannable);
+ sourceFileMap.put(source.getExecPath(), source);
}
}
@@ -339,7 +341,8 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
ruleContext.getLabel(), strippedFile, executable, explicitDwpFile))
.setRunfilesSupport(runfilesSupport, executable)
.addProvider(LipoContextProvider.class, new LipoContextProvider(
- cppCompilationContext, ImmutableMap.copyOf(scannableMap)))
+ cppCompilationContext, ImmutableMap.copyOf(scannableMap),
+ ImmutableMap.copyOf(sourceFileMap)))
.addProvider(CppLinkAction.Context.class, linkContext)
.addSkylarkTransitiveInfo(CcSkylarkApiProvider.NAME, new CcSkylarkApiProvider())
.build();