diff options
author | elenairina <elenairina@google.com> | 2018-04-17 05:56:43 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-17 05:58:15 -0700 |
commit | b1efe45a57e108e091ab632596c7a5e6162bb5a4 (patch) | |
tree | bb100b93f45edf735f479a92679c8fb088202845 /src/main/java/com/google | |
parent | 932b1f6c1429c5f6641ebd4850a6ed1854df98e5 (diff) |
Add compilation_info in java_common.compile.
PiperOrigin-RevId: 193185628
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java | 47 |
2 files changed, 51 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java index 714dbd74ab..dd8298d9fd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java @@ -411,6 +411,7 @@ final class JavaInfoBuildHelper { helper.addAllPlugins(JavaInfo.fetchProvidersFromList(plugins, JavaPluginInfoProvider.class)); helper.addAllPlugins(JavaInfo.fetchProvidersFromList(deps, JavaPluginInfoProvider.class)); + helper.setNeverlink(neverlink); JavaRuleOutputJarsProvider.Builder outputJarsBuilder = JavaRuleOutputJarsProvider.builder(); @@ -422,6 +423,7 @@ final class JavaInfoBuildHelper { ? getSourceJar(skylarkRuleContext.getRuleContext(), outputJar) : sourceJars.get(0); + JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create(); JavaCompilationArtifacts artifacts = helper.build( javaSemantics, @@ -430,7 +432,8 @@ final class JavaInfoBuildHelper { SkylarkList.createImmutable(ImmutableList.of()), outputJarsBuilder, /*createOutputSourceJar*/ generateMergedSourceJar, - outputSourceJar); + outputSourceJar, + javaInfoBuilder); JavaCompilationArgsProvider javaCompilationArgsProvider = helper.buildCompilationArgsProvider(artifacts, true, neverlink); @@ -457,7 +460,7 @@ final class JavaInfoBuildHelper { transitiveSourceJars.addTransitive(sourceJarsProvider.getTransitiveSourceJars()); } - return JavaInfo.Builder.create() + return javaInfoBuilder .addProvider(JavaCompilationArgsProvider.class, javaCompilationArgsProvider) .addProvider( JavaSourceJarsProvider.class, diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java index 47a214d1af..0a153af354 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java @@ -61,6 +61,7 @@ public final class JavaLibraryHelper { private StrictDepsMode strictDepsMode = StrictDepsMode.OFF; private JavaClasspathMode classpathMode = JavaClasspathMode.OFF; private String injectingRuleKind; + private boolean neverlink; public JavaLibraryHelper(RuleContext ruleContext) { this.ruleContext = ruleContext; @@ -68,6 +69,11 @@ public final class JavaLibraryHelper { this.classpathMode = ruleContext.getFragment(JavaConfiguration.class).getReduceJavaClasspath(); } + public JavaLibraryHelper setNeverlink(boolean neverlink) { + this.neverlink = neverlink; + return this; + } + /** * Sets the final output jar; if this is not set, then the {@link #build} method throws an {@link * IllegalStateException}. Note that this class may generate not just the output itself, but also @@ -183,6 +189,26 @@ public final class JavaLibraryHelper { JavaRuleOutputJarsProvider.Builder outputJarsBuilder, boolean createOutputSourceJar, @Nullable Artifact outputSourceJar) { + return build( + semantics, + javaToolchainProvider, + hostJavabase, + jacocoInstrumental, + outputJarsBuilder, + createOutputSourceJar, + outputSourceJar, + /* javaInfoBuilder= */ null); + } + + public JavaCompilationArtifacts build( + JavaSemantics semantics, + JavaToolchainProvider javaToolchainProvider, + JavaRuntimeInfo hostJavabase, + Iterable<Artifact> jacocoInstrumental, + JavaRuleOutputJarsProvider.Builder outputJarsBuilder, + boolean createOutputSourceJar, + @Nullable Artifact outputSourceJar, + @Nullable JavaInfo.Builder javaInfoBuilder) { Preconditions.checkState(output != null, "must have an output file; use setOutput()"); Preconditions.checkState( !createOutputSourceJar || outputSourceJar != null, @@ -246,7 +272,26 @@ public final class JavaLibraryHelper { .addOutputJar(new OutputJar(output, iJar, outputSourceJars)) .setJdeps(outputDepsProto); - return artifactsBuilder.build(); + JavaCompilationArtifacts javaArtifacts = artifactsBuilder.build(); + if (javaInfoBuilder != null) { + ClasspathConfiguredFragment classpathFragment = new ClasspathConfiguredFragment( + javaArtifacts, + attributes.build(), + neverlink, + JavaCompilationHelper.getBootClasspath(javaToolchainProvider) + ); + + javaInfoBuilder.addProvider( + JavaCompilationInfoProvider.class, + new JavaCompilationInfoProvider.Builder() + .setJavacOpts(javacOpts) + .setBootClasspath(classpathFragment.getBootClasspath()) + .setCompilationClasspath(classpathFragment.getCompileTimeClasspath()) + .setRuntimeClasspath(classpathFragment.getRuntimeClasspath()) + .build()); + } + + return javaArtifacts; } /** |