diff options
author | 2016-09-27 21:10:44 +0000 | |
---|---|---|
committer | 2016-09-28 08:28:05 +0000 | |
commit | ae3b6a93cd342d900e93a47efb9bbf0f1cd227f2 (patch) | |
tree | f51bc64abf594b253a9cc6144f9bea419819aa34 /src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java | |
parent | c5545fd0896f3c602a9be0986debed6f0c9c662d (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.java | 35 |
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... |