aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java
new file mode 100644
index 0000000000..16801eecd2
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainRule.java
@@ -0,0 +1,92 @@
+// Copyright 2014 Google Inc. 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;
+
+import static com.google.devtools.build.lib.packages.Attribute.attr;
+import static com.google.devtools.build.lib.packages.Type.STRING;
+import static com.google.devtools.build.lib.packages.Type.STRING_LIST;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.BaseRuleClasses;
+import com.google.devtools.build.lib.analysis.BlazeRule;
+import com.google.devtools.build.lib.analysis.RuleDefinition;
+import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
+import com.google.devtools.build.lib.packages.RuleClass;
+import com.google.devtools.build.lib.packages.RuleClass.Builder;
+
+/**
+ * Rule definition for {@code java_toolchain}
+ */
+@BlazeRule(name = "java_toolchain", ancestors = {BaseRuleClasses.BaseRule.class},
+ factoryClass = JavaToolchain.class)
+public final class JavaToolchainRule implements RuleDefinition {
+ @Override
+ public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
+ return builder.setUndocumented()
+ /* <!-- #BLAZE_RULE(java_toolchain).ATTRIBUTE(source_version) -->
+ The Java source version (e.g., '6' or '7'). It specifies which set of code structures
+ are allowed in the Java source code.
+ <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
+ .add(attr("source_version", STRING).mandatory()) // javac -source flag value.
+ /* <!-- #BLAZE_RULE(java_toolchain).ATTRIBUTE(target_version) -->
+ The Java target version (e.g., '6' or '7'). It specifies for which Java runtime the class
+ should be build.
+ <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
+ .add(attr("target_version", STRING).mandatory()) // javac -target flag value.
+ /* <!-- #BLAZE_RULE(java_toolchain).ATTRIBUTE(encoding) -->
+ The encoding of the java files (e.g., 'UTF-8').
+ <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
+ .add(attr("encoding", STRING).mandatory()) // javac -encoding flag value.
+ /* <!-- #BLAZE_RULE(java_toolchain).ATTRIBUTE(xlint) -->
+ The list of warning to add or removes from default list. Precedes it with a dash to
+ removes it. Please see the Javac documentation on the -Xlint options for more information.
+ <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
+ .add(attr("xlint", STRING_LIST).value(ImmutableList.<String>of()))
+ /* <!-- #BLAZE_RULE(java_toolchain).ATTRIBUTE(xlint) -->
+ The list of extra arguments for the Java compiler. Please refer to the Java compiler
+ documentation for the extensive list of possible Java compiler flags.
+ <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
+ .add(attr("misc", STRING_LIST).value(ImmutableList.<String>of()))
+ .build();
+ }
+}
+/*<!-- #BLAZE_RULE (NAME = java_toolchain, TYPE = OTHER, FAMILY = Java) -->
+
+${ATTRIBUTE_SIGNATURE}
+
+<p>
+Specifies the configuration for the Java compiler. Which toolchain to be used can be changed through
+the --java_toolchain argument. Normally you should not write those kind of rules unless you want to
+tune your Java compiler.
+</p>
+
+${ATTRIBUTE_DEFINITION}
+
+<h4 id="java_binary_examples">Examples</h4>
+
+<p>A simple example would be:
+</p>
+
+<pre class="code">
+java_toolchain(
+ name = "toolchain",
+ source_version = "7",
+ target_version = "7",
+ encoding = "UTF-8",
+ xlint = [ "classfile", "divzero", "empty", "options", "path" ],
+ misc = [ "-g" ],
+)
+</pre>
+
+<!-- #END_BLAZE_RULE -->*/