diff options
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.java | 35 |
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()); } } } |