aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-09-08 13:47:10 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-09-09 09:02:09 +0000
commita85bf4b19c680a6db11f21758847dc88ec0aa658 (patch)
tree33408c64c3f0777852ec51ec5f5c12fa6c71fcc8 /src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
parent8e62a7f29efcf60f9120598f670a6d54d652784c (diff)
Implement input pruning using .d files in objc.
-- MOS_MIGRATED_REVID=132550233
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 631e697331..97fe0825fe 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -34,6 +34,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
@@ -41,6 +42,7 @@ import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.util.ShellEscaper;
import com.google.devtools.build.lib.util.io.FileOutErr;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
+import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.UUID;
@@ -79,7 +81,7 @@ public class FakeCppCompileAction extends CppCompileAction {
ImmutableList<String> copts,
Predicate<String> nocopts,
RuleContext ruleContext,
- CppSemantics semantics) {
+ CppSemantics cppSemantics) {
super(
owner,
features,
@@ -88,7 +90,6 @@ public class FakeCppCompileAction extends CppCompileAction {
sourceFile,
shouldScanIncludes,
shouldPruneModules,
- usePic,
sourceLabel,
mandatoryInputs,
outputFile,
@@ -116,7 +117,7 @@ public class FakeCppCompileAction extends CppCompileAction {
ImmutableMap.<String, String>of(),
CppCompileAction.CPP_COMPILE,
ruleContext,
- semantics);
+ cppSemantics);
this.tempOutputFile = Preconditions.checkNotNull(tempOutputFile);
}
@@ -147,9 +148,30 @@ public class FakeCppCompileAction extends CppCompileAction {
}
}
IncludeScanningContext scanningContext = executor.getContext(IncludeScanningContext.class);
- NestedSet<Artifact> discoveredInputs =
- discoverInputsFromDotdFiles(
- executor.getExecRoot(), scanningContext.getArtifactResolver(), reply);
+ Path execRoot = executor.getExecRoot();
+
+ NestedSet<Artifact> discoveredInputs;
+ if (getDotdFile() == null) {
+ discoveredInputs = NestedSetBuilder.<Artifact>stableOrder().build();
+ } else {
+ HeaderDiscovery.Builder discoveryBuilder = new HeaderDiscovery.Builder()
+ .setAction(this)
+ .setDotdFile(getDotdFile())
+ .setSourceFile(getSourceFile())
+ .setSpecialInputsHandler(specialInputsHandler)
+ .setDependencySet(processDepset(execRoot, reply))
+ .setPermittedSystemIncludePrefixes(getPermittedSystemIncludePrefixes(execRoot))
+ .setAllowedDerivedinputsMap(getAllowedDerivedInputsMap());
+
+ if (cppSemantics.needsIncludeValidation()) {
+ discoveryBuilder.shouldValidateInclusions();
+ }
+
+ discoveredInputs = discoveryBuilder
+ .build()
+ .discoverInputsFromDotdFiles(execRoot, scanningContext.getArtifactResolver());
+ }
+
reply = null; // Clear in-memory .d files early.
// Even cc_fake_binary rules need to properly declare their dependencies...