aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-11-03 19:42:10 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2016-11-04 09:21:59 +0000
commit69e6a8f12c2ed9242c2da32cf659caf39e72c974 (patch)
tree27d4886ef970bd41efe750de724b498ad20448ab /src/main/java/com/google/devtools
parentf2ad683c0873991fd1cbca0fe32b7c81fdc9d26a (diff)
Use android javacopts for java_proto_library-related compilations.
-- MOS_MIGRATED_REVID=138104417
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/ProtoJavacOpts.java43
5 files changed, 48 insertions, 32 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 901b0d9987..c5bc348bdc 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -778,6 +778,7 @@ java_library(
"rules/java/proto/JavaProtoLibrary.java",
"rules/java/proto/JavaProtoLibraryTransitiveFilesToBuildProvider.java",
"rules/java/proto/JavaSourceJarsAspectProvider.java",
+ "rules/java/proto/ProtoJavacOpts.java",
"rules/java/proto/StrictDepsUtils.java",
],
deps = [
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
index b1b72dcea6..38b689415c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -95,6 +95,8 @@ public interface JavaSemantics {
/** The java_toolchain.compatible_javacopts key for Java 7 javacopts */
public static final String JAVA7_JAVACOPTS_KEY = "java7";
+ /** The java_toolchain.compatible_javacopts key for Android javacopts */
+ public static final String ANDROID_JAVACOPTS_KEY = "android";
LateBoundLabel<BuildConfiguration> JAVA_TOOLCHAIN =
new LateBoundLabel<BuildConfiguration>(JAVA_TOOLCHAIN_LABEL, JavaConfiguration.class) {
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 9908324de7..4e0c5c853c 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
@@ -52,7 +52,6 @@ import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaLibraryHelper;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
-import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder;
import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
@@ -214,7 +213,7 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
new JavaLibraryHelper(ruleContext)
.setOutput(outputJar)
.addSourceJars(sourceJar)
- .setJavacOpts(getAndroidCompatibleJavacOpts());
+ .setJavacOpts(ProtoJavacOpts.constructJavacOpts(ruleContext));
helper.addDep(dependencyCompilationArgs);
TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
if (runtime != null) {
@@ -239,22 +238,6 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured
return ruleContext.getBinArtifact("lib" + ruleContext.getLabel().getName() + "-lite.jar");
}
- /**
- * Returns javacopts for compiling the Java source files generated by the proto compiler.
- * Ensures that they are compiled so that they can be used by Android targets.
- *
- * <p>See java_toolchain.compatible_javacopts for the javacopts required for android.
- */
- private ImmutableList<String> getAndroidCompatibleJavacOpts() {
- JavaToolchainProvider toolchain = JavaToolchainProvider.fromRuleContext(ruleContext);
- ImmutableList.Builder<String> listBuilder = ImmutableList.builder();
- listBuilder.addAll(toolchain.getJavacOptions());
- // TODO(b/30890416): Get this from AndroidSemantics.getJavacArguments()
- listBuilder.addAll(
- toolchain.getCompatibleJavacOptions("android"));
- return listBuilder.build();
- }
-
private <C extends TransitiveInfoProvider> Iterable<C> getDeps(Class<C> clazz) {
return ruleContext.getPrerequisites("deps", TARGET, clazz);
}
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 daa56daa12..ba6184eb61 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
@@ -53,7 +53,6 @@ import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaLibraryHelper;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
-import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder;
import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
import com.google.devtools.build.lib.rules.proto.ProtoSourceFileBlacklist;
@@ -277,7 +276,7 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
new JavaLibraryHelper(ruleContext)
.setOutput(outputJar)
.addSourceJars(sourceJar)
- .setJavacOpts(constructJavacOpts());
+ .setJavacOpts(ProtoJavacOpts.constructJavacOpts(ruleContext));
helper
.addDep(dependencyCompilationArgs)
.addDep(
@@ -297,18 +296,6 @@ public class JavaProtoAspect extends NativeAspectClass implements ConfiguredAspe
return ruleContext.getBinArtifact("lib" + ruleContext.getLabel().getName() + "-speed.jar");
}
- /**
- * Returns javacopts for compiling the Java source files generated by the proto compiler.
- * Ensures that they are compiled so that they can be used by App Engine targets.
- */
- private ImmutableList<String> constructJavacOpts() {
- JavaToolchainProvider toolchain = JavaToolchainProvider.fromRuleContext(ruleContext);
- return ImmutableList.<String>builder()
- .addAll(toolchain.getJavacOptions())
- .addAll(toolchain.getCompatibleJavacOptions(JavaSemantics.JAVA7_JAVACOPTS_KEY))
- .build();
- }
-
private <C extends TransitiveInfoProvider> Iterable<C> getDeps(Class<C> clazz) {
return ruleContext.getPrerequisites("deps", TARGET, clazz);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/ProtoJavacOpts.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/ProtoJavacOpts.java
new file mode 100644
index 0000000000..86a1a694e7
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/ProtoJavacOpts.java
@@ -0,0 +1,43 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.rules.java.proto;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.rules.java.JavaSemantics;
+import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
+
+/**
+ * Helper class to centralize Javac flags handling.
+ */
+public class ProtoJavacOpts {
+
+ /**
+ * Returns javacopts for compiling the Java source files generated by the proto compiler.
+ * Ensures that they are compiled so that they can be used by Android targets.
+ *
+ * <p>See java_toolchain.compatible_javacopts for the javacopts required for android.
+ */
+ public static ImmutableList<String> constructJavacOpts(RuleContext ruleContext) {
+ JavaToolchainProvider toolchain = JavaToolchainProvider.fromRuleContext(ruleContext);
+ return ImmutableList.<String>builder()
+ .addAll(toolchain.getJavacOptions())
+ .addAll(toolchain.getCompatibleJavacOptions(JavaSemantics.ANDROID_JAVACOPTS_KEY))
+ .build();
+ }
+
+ // Static access only
+ private ProtoJavacOpts() {}
+}