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-27 21:10:44 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-09-28 08:28:05 +0000
commitae3b6a93cd342d900e93a47efb9bbf0f1cd227f2 (patch)
treef51bc64abf594b253a9cc6144f9bea419819aa34 /src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
parentc5545fd0896f3c602a9be0986debed6f0c9c662d (diff)
Implement input pruning using .d files in objc behind a flag that defaults to
false. -- MOS_MIGRATED_REVID=134452391
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.java35
1 files changed, 30 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..572853fc7d 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,32 @@ 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...