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-22 12:50:02 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2016-09-22 12:58:48 +0000
commit4946ab9d5b5d78862c043e35342107a1b9b2f398 (patch)
tree2ff3c7e3ccac4bffe53ab5d781fd354aab009472 /src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
parent5c548f11e20c0b75203e9fe4ab682ed0418064cf (diff)
Implement input pruning using .d files in objc.
-- MOS_MIGRATED_REVID=133944059
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.java33
1 files changed, 28 insertions, 5 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 ad7d5fe735..f7c47301ae 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,
@@ -117,7 +119,7 @@ public class FakeCppCompileAction extends CppCompileAction {
ImmutableMap.<String, String>of(),
CppCompileAction.CPP_COMPILE,
ruleContext,
- semantics);
+ cppSemantics);
this.tempOutputFile = Preconditions.checkNotNull(tempOutputFile);
}
@@ -148,9 +150,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...