aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-08-30 03:10:41 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-08-30 13:48:58 +0200
commitfc41c430e4de4594a1d699f573d191cbad52a2fb (patch)
tree60bfc201402d9b810952ac62ba564247415294cf /src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
parent75f97c1194c82bdd59f0a8c2809e7bfa464b01d4 (diff)
Move ObjcProvider FLAG into a new provider type (TransitiveSourcesProvider) that is accessible to the c++ rules.
PiperOrigin-RevId: 166934390
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index b787ebcaf5..c282b5fc84 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -53,6 +53,7 @@ import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.PrerequisiteArtifacts;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap;
import com.google.devtools.build.lib.analysis.actions.CommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
@@ -302,6 +303,7 @@ public abstract class CompilationSupport {
protected final boolean useDeps;
protected final Map<String, NestedSet<Artifact>> outputGroupCollector;
protected final CcToolchainProvider toolchain;
+ protected final ImmutableList.Builder<TransitiveInfoProviderMap> providerCollector;
protected final boolean isTestRule;
protected final boolean usePch;
@@ -326,6 +328,7 @@ public abstract class CompilationSupport {
boolean useDeps,
Map<String, NestedSet<Artifact>> outputGroupCollector,
CcToolchainProvider toolchain,
+ ImmutableList.Builder<TransitiveInfoProviderMap> providerCollector,
boolean isTestRule,
boolean usePch) {
this.ruleContext = ruleContext;
@@ -337,6 +340,7 @@ public abstract class CompilationSupport {
this.useDeps = useDeps;
this.isTestRule = isTestRule;
this.outputGroupCollector = outputGroupCollector;
+ this.providerCollector = providerCollector;
this.usePch = usePch;
// TODO(b/62143697): Remove this check once all rules are using the crosstool support.
if (ruleContext
@@ -360,6 +364,8 @@ public abstract class CompilationSupport {
private CompilationAttributes compilationAttributes;
private boolean useDeps = true;
private Map<String, NestedSet<Artifact>> outputGroupCollector;
+ private ImmutableList.Builder<TransitiveInfoProviderMap> providerCollector =
+ ImmutableList.builder();
private boolean isObjcLibrary = false;
private CcToolchainProvider toolchain;
private boolean isTestRule = false;
@@ -449,6 +455,16 @@ public abstract class CompilationSupport {
}
/**
+ * Causes the provided list to be updated with providers that should be exported by this target.
+ */
+ public Builder setProviderCollector(
+ ImmutableList.Builder<TransitiveInfoProviderMap> providerCollector) {
+ Preconditions.checkNotNull(providerCollector);
+ this.providerCollector = providerCollector;
+ return this;
+ }
+
+ /**
* Returns a {@link CompilationSupport} instance. This is either a {@link
* CrosstoolCompilationSupport} or {@link LegacyCompilationSupport} depending on the value of
* --experimental_objc_crosstool.
@@ -485,6 +501,7 @@ public abstract class CompilationSupport {
useDeps,
outputGroupCollector,
toolchain,
+ providerCollector,
isTestRule,
usePch);
} else {