diff options
author | 2016-11-03 19:42:10 +0000 | |
---|---|---|
committer | 2016-11-04 09:21:59 +0000 | |
commit | 69e6a8f12c2ed9242c2da32cf659caf39e72c974 (patch) | |
tree | 27d4886ef970bd41efe750de724b498ad20448ab /src/main/java/com/google/devtools | |
parent | f2ad683c0873991fd1cbca0fe32b7c81fdc9d26a (diff) |
Use android javacopts for java_proto_library-related compilations.
--
MOS_MIGRATED_REVID=138104417
Diffstat (limited to 'src/main/java/com/google/devtools')
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() {} +} |