diff options
author | twerth <twerth@google.com> | 2018-08-14 00:00:02 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-14 00:01:58 -0700 |
commit | e5719662a91a7eb310eb0ea528992c49090784c9 (patch) | |
tree | 3a7ec7df05198ce8acca7700d5d4dd5cdd51bb61 /src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java | |
parent | 1f253d2a1a44bd53910e26a891e1ef88301e934d (diff) |
Add exports attribute to proto_library.
Note that it is currently only used by the java_proto_library family of rules (if enabled per flag).
RELNOTES: None
PiperOrigin-RevId: 208601730
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java index 09cf02d0d1..a2649622d5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java @@ -113,6 +113,7 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured AspectDefinition.Builder result = new AspectDefinition.Builder(this) .propagateAlongAttribute("deps") + .propagateAlongAttribute("exports") .requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class) .requireProviders(ProtoSourcesProvider.class) .advertiseProvider(JavaProtoLibraryAspectProvider.class) @@ -154,9 +155,14 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured */ private final JavaCompilationArgsProvider dependencyCompilationArgs; + // Compilation-args from all exports, merged together. + private final JavaCompilationArgsProvider exportsCompilationArgs; + private final JavaProtoAspectCommon aspectCommon; private final Iterable<JavaProtoLibraryAspectProvider> javaProtoLibraryAspectProviders; + private final boolean isJavaProtoExportsEnabled; + Impl( RuleContext ruleContext, SupportData supportData, @@ -172,6 +178,22 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured 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) { @@ -225,6 +247,12 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured javaProvidersBuilder.add(JavaRuleOutputJarsProvider.EMPTY); } + if (isJavaProtoExportsEnabled) { + generatedCompilationArgsProvider = + JavaCompilationArgsProvider.merge( + ImmutableList.of(generatedCompilationArgsProvider, exportsCompilationArgs)); + } + javaProvidersBuilder.add(generatedCompilationArgsProvider); javaProvidersBuilder.add(createCcLinkParamsStore( ruleContext, aspectCommon.getProtoRuntimeDeps())); @@ -260,7 +288,9 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured ruleContext.getLabel(), ImmutableList.of(sourceJar), "JavaLite", - /* allowServices= */ true); + /* allowServices= */ true, + supportData.getProtosInExports(), + supportData.getExportedProtoSourceRoots()); } } } |