aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 12cb38cb85..ed88bebca5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -26,6 +26,7 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionExecutionException;
import com.google.devtools.build.lib.actions.ActionInput;
import com.google.devtools.build.lib.actions.ActionOwner;
+import com.google.devtools.build.lib.actions.ActionStatusMessage;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander;
import com.google.devtools.build.lib.actions.ArtifactResolver;
@@ -506,15 +507,24 @@ public class CppCompileAction extends AbstractAction
public Iterable<Artifact> discoverInputs(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException, InterruptedException {
Executor executor = actionExecutionContext.getExecutor();
- Collection<Artifact> initialResult;
-
- try {
- initialResult = executor.getContext(actionContext)
- .findAdditionalInputs(this, actionExecutionContext);
- } catch (ExecException e) {
- throw e.toActionExecutionException("Include scanning of rule '" + getOwner().getLabel() + "'",
- executor.getVerboseFailures(), this);
+ Collection<Artifact> initialResult = null;
+
+ // Switch running status to "analysis".
+ if (shouldScanIncludes()) {
+ actionExecutionContext.getExecutor().getEventBus()
+ .post(ActionStatusMessage.analysisStrategy(this));
+
+ try {
+ initialResult = executor.getContext(actionContext)
+ .findAdditionalInputs(this, actionExecutionContext);
+ } catch (ExecException e) {
+ throw e.toActionExecutionException(
+ "Include scanning of rule '" + getOwner().getLabel() + "'",
+ executor.getVerboseFailures(),
+ this);
+ }
}
+
if (initialResult == null) {
// We will find inputs during execution. Store an empty list to show we did try to discover
// inputs and return null to inform the caller that inputs will be discovered later.
@@ -1372,9 +1382,18 @@ public class CppCompileAction extends AbstractAction
public Iterable<Artifact> getInputFilesForExtraAction(
ActionExecutionContext actionExecutionContext)
throws ActionExecutionException, InterruptedException {
- Collection<Artifact> scannedIncludes =
- actionExecutionContext.getExecutor().getContext(actionContext)
- .getScannedIncludeFiles(this, actionExecutionContext);
+ Collection<Artifact> scannedIncludes;
+ try {
+ scannedIncludes = actionExecutionContext.getExecutor().getContext(actionContext)
+ .findAdditionalInputs(this, actionExecutionContext);
+ } catch (ExecException e) {
+ throw e.toActionExecutionException(this);
+ }
+
+ if (scannedIncludes == null) {
+ return ImmutableList.of();
+ }
+
// Use a set to eliminate duplicates.
ImmutableSet.Builder<Artifact> result = ImmutableSet.builder();
return result.addAll(getInputs()).addAll(scannedIncludes).build();