aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Manuel Klimek <klimek@google.com>2016-05-31 17:06:48 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-05-31 18:08:23 +0000
commitc4052e2835e7a78b58ab6ca8c838141e31e9a6f9 (patch)
treefad335c6c3ae8b9b124b225d43d6ecc2e7c8a5fc /src
parent623cdf810d1ca367c981a5353c5c4bfda18cc58c (diff)
Remove DepsContext from CppCompilationContext. This simplifies the
CppCompilationContext as well as preparing it for further refactorings. DepsContext was introduced before NestedSets were available and is superfluous in a NestedSet world. -- MOS_MIGRATED_REVID=123653478
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompilationContext.java417
1 files changed, 152 insertions, 265 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompilationContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompilationContext.java
index 691deb8c12..b3b293bfb1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompilationContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompilationContext.java
@@ -33,7 +33,6 @@ import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.LinkedHashSet;
-import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -48,7 +47,41 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
public static final CppCompilationContext EMPTY = new Builder(null).build();
private final CommandLineContext commandLineContext;
- private final ImmutableList<DepsContext> depsContexts;
+
+ private final NestedSet<PathFragment> declaredIncludeDirs;
+ private final NestedSet<PathFragment> declaredIncludeWarnDirs;
+ private final NestedSet<Artifact> declaredIncludeSrcs;
+
+ /**
+ * Module maps from direct dependencies.
+ */
+ private final NestedSet<Artifact> directModuleMaps;
+
+ /**
+ * All declared headers of the current module, if compiled as a header module.
+ */
+ private final NestedSet<Artifact> headerModuleSrcs;
+
+ /**
+ * All header modules in the transitive closure of {@code topLevelHeaderModules}.
+ */
+ private final NestedSet<Artifact> impliedHeaderModules;
+ private final NestedSet<Artifact> picImpliedHeaderModules;
+
+ private final NestedSet<Pair<Artifact, Artifact>> pregreppedHdrs;
+
+ /**
+ * All header modules in our transitive closure that are not in the transitive closure of
+ * another header module in our transitive closure.
+ */
+ private final NestedSet<Artifact> topLevelHeaderModules;
+ private final NestedSet<Artifact> picTopLevelHeaderModules;
+
+ /**
+ * The module maps from all targets the current target depends on transitively.
+ */
+ private final NestedSet<Artifact> transitiveModuleMaps;
+
private final CppModuleMap cppModuleMap;
private final Artifact headerModule;
private final Artifact picHeaderModule;
@@ -64,37 +97,42 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
private CppCompilationContext(
CommandLineContext commandLineContext,
- List<DepsContext> depsContexts,
+ ImmutableSet<Artifact> compilationPrerequisites,
+ NestedSet<PathFragment> declaredIncludeDirs,
+ NestedSet<PathFragment> declaredIncludeWarnDirs,
+ NestedSet<Artifact> declaredIncludeSrcs,
+ NestedSet<Pair<Artifact, Artifact>> pregreppedHdrs,
+ NestedSet<Artifact> headerModuleSrcs,
+ NestedSet<Artifact> topLevelHeaderModules,
+ NestedSet<Artifact> picTopLevelHeaderModules,
+ NestedSet<Artifact> impliedHeaderModules,
+ NestedSet<Artifact> picImpliedHeaderModules,
+ NestedSet<Artifact> transitiveModuleMaps,
+ NestedSet<Artifact> directModuleMaps,
CppModuleMap cppModuleMap,
Artifact headerModule,
Artifact picHeaderModule,
boolean provideTransitiveModuleMaps,
boolean useHeaderModules) {
Preconditions.checkNotNull(commandLineContext);
- Preconditions.checkArgument(!depsContexts.isEmpty());
this.commandLineContext = commandLineContext;
- this.depsContexts = ImmutableList.copyOf(depsContexts);
+ this.declaredIncludeDirs = declaredIncludeDirs;
+ this.declaredIncludeWarnDirs = declaredIncludeWarnDirs;
+ this.declaredIncludeSrcs = declaredIncludeSrcs;
+ this.directModuleMaps = directModuleMaps;
+ this.headerModuleSrcs = headerModuleSrcs;
+ this.impliedHeaderModules = impliedHeaderModules;
+ this.picImpliedHeaderModules = picImpliedHeaderModules;
+ this.pregreppedHdrs = pregreppedHdrs;
+ this.topLevelHeaderModules = topLevelHeaderModules;
+ this.picTopLevelHeaderModules = picTopLevelHeaderModules;
+ this.transitiveModuleMaps = transitiveModuleMaps;
this.cppModuleMap = cppModuleMap;
this.headerModule = headerModule;
this.picHeaderModule = picHeaderModule;
this.provideTransitiveModuleMaps = provideTransitiveModuleMaps;
this.useHeaderModules = useHeaderModules;
-
- if (depsContexts.size() == 1) {
- // Only LIPO targets have more than one DepsContexts. This codepath avoids creating
- // an ImmutableSet.Builder for the vast majority of the cases.
- compilationPrerequisites = (depsContexts.get(0).compilationPrerequisiteStampFile != null)
- ? ImmutableSet.<Artifact>of(depsContexts.get(0).compilationPrerequisiteStampFile)
- : ImmutableSet.<Artifact>of();
- } else {
- ImmutableSet.Builder<Artifact> prerequisites = ImmutableSet.builder();
- for (DepsContext depsContext : depsContexts) {
- if (depsContext.compilationPrerequisiteStampFile != null) {
- prerequisites.add(depsContext.compilationPrerequisiteStampFile);
- }
- }
- compilationPrerequisites = prerequisites.build();
- }
+ this.compilationPrerequisites = compilationPrerequisites;
}
/**
@@ -164,20 +202,7 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* used by consumers.
*/
public NestedSet<PathFragment> getDeclaredIncludeDirs() {
- if (depsContexts.isEmpty()) {
- return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
- }
-
- if (depsContexts.size() == 1) {
- return depsContexts.get(0).declaredIncludeDirs;
- }
-
- NestedSetBuilder<PathFragment> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(depsContext.declaredIncludeDirs);
- }
-
- return builder.build();
+ return declaredIncludeDirs;
}
/**
@@ -191,20 +216,7 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* used by consumers.
*/
public NestedSet<PathFragment> getDeclaredIncludeWarnDirs() {
- if (depsContexts.isEmpty()) {
- return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
- }
-
- if (depsContexts.size() == 1) {
- return depsContexts.get(0).declaredIncludeWarnDirs;
- }
-
- NestedSetBuilder<PathFragment> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(depsContext.declaredIncludeWarnDirs);
- }
-
- return builder.build();
+ return declaredIncludeWarnDirs;
}
/**
@@ -217,20 +229,7 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* used by consumers.
*/
public NestedSet<Artifact> getDeclaredIncludeSrcs() {
- if (depsContexts.isEmpty()) {
- return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
- }
-
- if (depsContexts.size() == 1) {
- return depsContexts.get(0).declaredIncludeSrcs;
- }
-
- NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(depsContext.declaredIncludeSrcs);
- }
-
- return builder.build();
+ return declaredIncludeSrcs;
}
/**
@@ -238,20 +237,7 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* (pregrepped header file) are generated by {@link ExtractInclusionAction}.
*/
NestedSet<Pair<Artifact, Artifact>> getPregreppedHeaders() {
- if (depsContexts.isEmpty()) {
- return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
- }
-
- if (depsContexts.size() == 1) {
- return depsContexts.get(0).pregreppedHdrs;
- }
-
- NestedSetBuilder<Pair<Artifact, Artifact>> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(depsContext.pregreppedHdrs);
- }
-
- return builder.build();
+ return pregreppedHdrs;
}
/**
@@ -259,26 +245,20 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* compilation, like C++ module map artifacts.
*/
public NestedSet<Artifact> getAdditionalInputs(boolean usePic) {
- if (depsContexts.isEmpty()) {
- return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
- }
-
NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- if (useHeaderModules) {
- if (usePic) {
- builder.addTransitive(depsContext.picTopLevelHeaderModules);
- builder.addTransitive(depsContext.picImpliedHeaderModules);
- } else {
- builder.addTransitive(depsContext.topLevelHeaderModules);
- builder.addTransitive(depsContext.impliedHeaderModules);
- }
- }
- builder.addTransitive(depsContext.directModuleMaps);
- if (provideTransitiveModuleMaps) {
- builder.addTransitive(depsContext.transitiveModuleMaps);
+ if (useHeaderModules) {
+ if (usePic) {
+ builder.addTransitive(picTopLevelHeaderModules);
+ builder.addTransitive(picImpliedHeaderModules);
+ } else {
+ builder.addTransitive(topLevelHeaderModules);
+ builder.addTransitive(impliedHeaderModules);
}
}
+ builder.addTransitive(directModuleMaps);
+ if (provideTransitiveModuleMaps) {
+ builder.addTransitive(transitiveModuleMaps);
+ }
if (cppModuleMap != null) {
builder.add(cppModuleMap.getArtifact());
}
@@ -290,22 +270,14 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* @return modules maps from direct dependencies.
*/
public NestedSet<Artifact> getDirectModuleMaps() {
- NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(depsContext.directModuleMaps);
- }
- return builder.build();
+ return directModuleMaps;
}
/**
* @return modules maps in the transitive closure that are not from direct dependencies.
*/
private NestedSet<Artifact> getTransitiveModuleMaps() {
- NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(depsContext.transitiveModuleMaps);
- }
- return builder.build();
+ return transitiveModuleMaps;
}
/**
@@ -313,11 +285,7 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* is compiled as a module.
*/
protected NestedSet<Artifact> getHeaderModuleSrcs() {
- NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(depsContext.headerModuleSrcs);
- }
- return builder.build();
+ return headerModuleSrcs;
}
/**
@@ -325,24 +293,14 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* of another header module in our transitive closure.
*/
protected NestedSet<Artifact> getTopLevelHeaderModules(boolean usePic) {
- NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(
- usePic ? depsContext.picTopLevelHeaderModules : depsContext.topLevelHeaderModules);
- }
- return builder.build();
+ return usePic ? picTopLevelHeaderModules : topLevelHeaderModules;
}
/**
* @return all header modules in the transitive closure of {@code getTopLevelHeaderModules()}.
*/
protected NestedSet<Artifact> getImpliedHeaderModules(boolean usePic) {
- NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
- for (DepsContext depsContext : depsContexts) {
- builder.addTransitive(
- usePic ? depsContext.picImpliedHeaderModules : depsContext.impliedHeaderModules);
- }
- return builder.build();
+ return usePic ? picImpliedHeaderModules : impliedHeaderModules;
}
/**
@@ -367,7 +325,17 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
&& Objects.equals(cppModuleMap, other.cppModuleMap)
&& Objects.equals(picHeaderModule, other.picHeaderModule)
&& commandLineContext.equals(other.commandLineContext)
- && depsContexts.equals(other.depsContexts)
+ && Objects.equals(declaredIncludeDirs, other.declaredIncludeDirs)
+ && Objects.equals(declaredIncludeWarnDirs, other.declaredIncludeWarnDirs)
+ && Objects.equals(declaredIncludeSrcs, other.declaredIncludeSrcs)
+ && Objects.equals(directModuleMaps, other.directModuleMaps)
+ && Objects.equals(headerModuleSrcs, other.headerModuleSrcs)
+ && Objects.equals(impliedHeaderModules, other.impliedHeaderModules)
+ && Objects.equals(picImpliedHeaderModules, other.picImpliedHeaderModules)
+ && Objects.equals(topLevelHeaderModules, other.topLevelHeaderModules)
+ && Objects.equals(picTopLevelHeaderModules, other.picTopLevelHeaderModules)
+ && Objects.equals(transitiveModuleMaps, other.transitiveModuleMaps)
+ && Objects.equals(compilationPrerequisites, other.compilationPrerequisites)
&& (provideTransitiveModuleMaps == other.provideTransitiveModuleMaps)
&& (useHeaderModules == other.useHeaderModules);
}
@@ -378,7 +346,17 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
headerModule,
picHeaderModule,
commandLineContext,
- depsContexts,
+ declaredIncludeDirs,
+ declaredIncludeWarnDirs,
+ declaredIncludeSrcs,
+ directModuleMaps,
+ headerModuleSrcs,
+ impliedHeaderModules,
+ picImpliedHeaderModules,
+ transitiveModuleMaps,
+ topLevelHeaderModules,
+ picTopLevelHeaderModules,
+ compilationPrerequisites,
cppModuleMap,
provideTransitiveModuleMaps,
useHeaderModules);
@@ -389,26 +367,20 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
* for {@link #getDeclaredIncludeDirs()} and {@link #getDeclaredIncludeWarnDirs()}.
*/
public static CppCompilationContext disallowUndeclaredHeaders(CppCompilationContext context) {
- ImmutableList.Builder<DepsContext> builder = ImmutableList.builder();
- for (DepsContext depsContext : context.depsContexts) {
- builder.add(
- new DepsContext(
- depsContext.compilationPrerequisiteStampFile,
- NestedSetBuilder.<PathFragment>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<PathFragment>emptySet(Order.STABLE_ORDER),
- depsContext.declaredIncludeSrcs,
- depsContext.pregreppedHdrs,
- depsContext.headerModuleSrcs,
- depsContext.topLevelHeaderModules,
- depsContext.picTopLevelHeaderModules,
- depsContext.impliedHeaderModules,
- depsContext.picImpliedHeaderModules,
- depsContext.transitiveModuleMaps,
- depsContext.directModuleMaps));
- }
return new CppCompilationContext(
context.commandLineContext,
- builder.build(),
+ context.compilationPrerequisites,
+ NestedSetBuilder.<PathFragment>emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.<PathFragment>emptySet(Order.STABLE_ORDER),
+ context.declaredIncludeSrcs,
+ context.pregreppedHdrs,
+ context.headerModuleSrcs,
+ context.topLevelHeaderModules,
+ context.picTopLevelHeaderModules,
+ context.impliedHeaderModules,
+ context.picImpliedHeaderModules,
+ context.transitiveModuleMaps,
+ context.directModuleMaps,
context.cppModuleMap,
context.headerModule,
context.picHeaderModule,
@@ -443,15 +415,39 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
*/
public static CppCompilationContext mergeForLipo(CppCompilationContext ownerContext,
CppCompilationContext libContext) {
+ ImmutableSet.Builder<Artifact> prerequisites = ImmutableSet.builder();
+ prerequisites.addAll(ownerContext.compilationPrerequisites);
+ prerequisites.addAll(libContext.compilationPrerequisites);
return new CppCompilationContext(
libContext.commandLineContext,
- ImmutableList.copyOf(Iterables.concat(ownerContext.depsContexts, libContext.depsContexts)),
+ prerequisites.build(),
+ mergeSets(ownerContext.declaredIncludeDirs, libContext.declaredIncludeDirs),
+ mergeSets(ownerContext.declaredIncludeWarnDirs, libContext.declaredIncludeWarnDirs),
+ mergeSets(ownerContext.declaredIncludeSrcs, libContext.declaredIncludeSrcs),
+ mergeSets(ownerContext.pregreppedHdrs, libContext.pregreppedHdrs),
+ mergeSets(ownerContext.headerModuleSrcs, libContext.headerModuleSrcs),
+ mergeSets(ownerContext.topLevelHeaderModules, libContext.topLevelHeaderModules),
+ mergeSets(ownerContext.picTopLevelHeaderModules, libContext.picTopLevelHeaderModules),
+ mergeSets(ownerContext.impliedHeaderModules, libContext.impliedHeaderModules),
+ mergeSets(ownerContext.picImpliedHeaderModules, libContext.picImpliedHeaderModules),
+ mergeSets(ownerContext.transitiveModuleMaps, libContext.transitiveModuleMaps),
+ mergeSets(ownerContext.directModuleMaps, libContext.directModuleMaps),
libContext.cppModuleMap,
libContext.headerModule,
libContext.picHeaderModule,
libContext.provideTransitiveModuleMaps,
libContext.useHeaderModules);
}
+
+ /**
+ * Return a nested set containing all elements from {@code s1} and {@code s2}.
+ */
+ private static <T> NestedSet<T> mergeSets(NestedSet<T> s1, NestedSet<T> s2) {
+ NestedSetBuilder<T> builder = NestedSetBuilder.stableOrder();
+ builder.addTransitive(s1);
+ builder.addTransitive(s2);
+ return builder.build();
+ }
/**
* @return the C++ module map of the owner.
@@ -517,115 +513,6 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
}
/**
- * The parts of the compilation context that defined the dependencies of
- * actions of scheduling and inclusion validity checking.
- */
- @Immutable
- private static class DepsContext {
- private final Artifact compilationPrerequisiteStampFile;
- private final NestedSet<PathFragment> declaredIncludeDirs;
- private final NestedSet<PathFragment> declaredIncludeWarnDirs;
- private final NestedSet<Artifact> declaredIncludeSrcs;
- /**
- * Module maps from direct dependencies.
- */
- private final NestedSet<Artifact> directModuleMaps;
-
- /**
- * All declared headers of the current module, if compiled as a header module.
- */
- private final NestedSet<Artifact> headerModuleSrcs;
-
- /**
- * All header modules in the transitive closure of {@code topLevelHeaderModules}.
- */
- private final NestedSet<Artifact> impliedHeaderModules;
- private final NestedSet<Artifact> picImpliedHeaderModules;
-
- private final NestedSet<Pair<Artifact, Artifact>> pregreppedHdrs;
-
- /**
- * All header modules in our transitive closure that are not in the transitive closure of
- * another header module in our transitive closure.
- */
- private final NestedSet<Artifact> topLevelHeaderModules;
- private final NestedSet<Artifact> picTopLevelHeaderModules;
-
- /**
- * The module maps from all targets the current target depends on transitively.
- */
- private final NestedSet<Artifact> transitiveModuleMaps;
-
- DepsContext(
- Artifact compilationPrerequisiteStampFile,
- NestedSet<PathFragment> declaredIncludeDirs,
- NestedSet<PathFragment> declaredIncludeWarnDirs,
- NestedSet<Artifact> declaredIncludeSrcs,
- NestedSet<Pair<Artifact, Artifact>> pregreppedHdrs,
- NestedSet<Artifact> headerModuleSrcs,
- NestedSet<Artifact> topLevelHeaderModules,
- NestedSet<Artifact> picTopLevelHeaderModules,
- NestedSet<Artifact> impliedHeaderModules,
- NestedSet<Artifact> picImpliedHeaderModules,
- NestedSet<Artifact> transitiveModuleMaps,
- NestedSet<Artifact> directModuleMaps) {
- this.compilationPrerequisiteStampFile = compilationPrerequisiteStampFile;
- this.declaredIncludeDirs = declaredIncludeDirs;
- this.declaredIncludeWarnDirs = declaredIncludeWarnDirs;
- this.declaredIncludeSrcs = declaredIncludeSrcs;
- this.directModuleMaps = directModuleMaps;
- this.headerModuleSrcs = headerModuleSrcs;
- this.impliedHeaderModules = impliedHeaderModules;
- this.picImpliedHeaderModules = picImpliedHeaderModules;
- this.pregreppedHdrs = pregreppedHdrs;
- this.topLevelHeaderModules = topLevelHeaderModules;
- this.picTopLevelHeaderModules = picTopLevelHeaderModules;
- this.transitiveModuleMaps = transitiveModuleMaps;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (!(obj instanceof DepsContext)) {
- return false;
- }
- DepsContext other = (DepsContext) obj;
- return Objects.equals(
- compilationPrerequisiteStampFile, other.compilationPrerequisiteStampFile)
- && Objects.equals(declaredIncludeDirs, other.declaredIncludeDirs)
- && Objects.equals(declaredIncludeWarnDirs, other.declaredIncludeWarnDirs)
- && Objects.equals(declaredIncludeSrcs, other.declaredIncludeSrcs)
- && Objects.equals(directModuleMaps, other.directModuleMaps)
- && Objects.equals(headerModuleSrcs, other.headerModuleSrcs)
- && Objects.equals(impliedHeaderModules, other.impliedHeaderModules)
- && Objects.equals(picImpliedHeaderModules, other.picImpliedHeaderModules)
- // TODO(bazel-team): add pregreppedHdrs?
- && Objects.equals(topLevelHeaderModules, other.topLevelHeaderModules)
- && Objects.equals(picTopLevelHeaderModules, other.picTopLevelHeaderModules)
- && Objects.equals(transitiveModuleMaps, other.transitiveModuleMaps);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(
- compilationPrerequisiteStampFile,
- declaredIncludeDirs,
- declaredIncludeWarnDirs,
- declaredIncludeSrcs,
- directModuleMaps,
- headerModuleSrcs,
- impliedHeaderModules,
- picImpliedHeaderModules,
- // pregreppedHdrs ?
- transitiveModuleMaps,
- topLevelHeaderModules,
- picTopLevelHeaderModules);
- }
- }
-
- /**
* Builder class for {@link CppCompilationContext}.
*/
public static class Builder {
@@ -967,20 +854,20 @@ public final class CppCompilationContext implements TransitiveInfoProvider {
ImmutableList.copyOf(quoteIncludeDirs),
ImmutableList.copyOf(systemIncludeDirs),
ImmutableList.copyOf(defines)),
- ImmutableList.of(
- new DepsContext(
- prerequisiteStampFile,
- declaredIncludeDirs.build(),
- declaredIncludeWarnDirs.build(),
- declaredIncludeSrcs.build(),
- pregreppedHdrs.build(),
- headerModuleSrcs.build(),
- topLevelHeaderModules,
- picTopLevelHeaderModules,
- impliedHeaderModules,
- picImpliedHeaderModules,
- transitiveModuleMaps.build(),
- directModuleMaps.build())),
+ prerequisiteStampFile == null
+ ? ImmutableSet.<Artifact>of()
+ : ImmutableSet.of(prerequisiteStampFile),
+ declaredIncludeDirs.build(),
+ declaredIncludeWarnDirs.build(),
+ declaredIncludeSrcs.build(),
+ pregreppedHdrs.build(),
+ headerModuleSrcs.build(),
+ topLevelHeaderModules,
+ picTopLevelHeaderModules,
+ impliedHeaderModules,
+ picImpliedHeaderModules,
+ transitiveModuleMaps.build(),
+ directModuleMaps.build(),
cppModuleMap,
headerModule,
picHeaderModule,