aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
index a86f703e9b..131c617650 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -121,6 +121,7 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
AspectDefinition.Builder result =
new AspectDefinition.Builder(this)
.propagateAlongAttribute("deps")
+ .propagateAlongAttribute("exports")
.requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class)
.requireProviders(ProtoSourcesProvider.class)
.advertiseProvider(JavaProtoLibraryAspectProvider.class)
@@ -163,8 +164,13 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
*/
private final JavaCompilationArgsProvider dependencyCompilationArgs;
+ // Compilation-args from all exports, merged together.
+ private final JavaCompilationArgsProvider exportsCompilationArgs;
+
private final Iterable<JavaProtoLibraryAspectProvider> javaProtoLibraryAspectProviders;
+ private final boolean isJavaProtoExportsEnabled;
+
Impl(
RuleContext ruleContext,
SupportData supportData,
@@ -178,10 +184,27 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
ruleContext.getPrerequisites(
"deps", RuleConfiguredTarget.Mode.TARGET, JavaProtoLibraryAspectProvider.class);
- dependencyCompilationArgs =
+ this.dependencyCompilationArgs =
JavaCompilationArgsProvider.merge(
WrappingProvider.Helper.unwrapProviders(
javaProtoLibraryAspectProviders, JavaCompilationArgsProvider.class));
+
+ this.isJavaProtoExportsEnabled =
+ ruleContext.getFragment(JavaConfiguration.class).isJavaProtoExportsEnabled();
+
+ if (this.isJavaProtoExportsEnabled) {
+ this.exportsCompilationArgs =
+ JavaCompilationArgsProvider.merge(
+ WrappingProvider.Helper.unwrapProviders(
+ ruleContext.getPrerequisites(
+ "exports",
+ RuleConfiguredTarget.Mode.TARGET,
+ JavaProtoLibraryAspectProvider.class),
+ JavaCompilationArgsProvider.class));
+ } else {
+ this.exportsCompilationArgs = null;
+ }
+
}
void addProviders(ConfiguredAspect.Builder aspect) {
@@ -235,6 +258,12 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
javaProvidersBuilder.add(JavaRuleOutputJarsProvider.EMPTY);
}
+ if (isJavaProtoExportsEnabled) {
+ generatedCompilationArgsProvider =
+ JavaCompilationArgsProvider.merge(
+ ImmutableList.of(generatedCompilationArgsProvider, exportsCompilationArgs));
+ }
+
javaProvidersBuilder.add(generatedCompilationArgsProvider);
javaProvidersBuilder.add(createCcLinkParamsStore(
ruleContext, aspectCommon.getProtoRuntimeDeps()));
@@ -289,7 +318,9 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
ruleContext.getLabel(),
ImmutableList.of(sourceJar),
"Java (Immutable)",
- rpcSupport.allowServices(ruleContext));
+ rpcSupport.allowServices(ruleContext),
+ supportData.getProtosInExports(),
+ supportData.getExportedProtoSourceRoots());
}
}
}