diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/proto')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java | 32 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java | 35 |
2 files changed, 64 insertions, 3 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()); } } } 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()); } } } |