1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# Description:
# Tools for working with Java source code, using the Sun javac API.
#
# This is not the source code for javac itself.
package(
default_visibility = ["//src/java_tools/buildjar:buildjar_package_group"],
)
load(":build_defs.bzl", "default_javacopts")
# Exports the canonical javac bootclasspath artifact locations
genrule(
name = "javac-bootclasspath-locations",
srcs = ["@bazel_tools//tools/jdk:bootclasspath"],
outs = ["JavacBootclasspathLocations.java"],
cmd = "$(location javac-bootclasspath-locations.sh) $@ $(GENDIR) $(SRCS)",
tools = ["javac-bootclasspath-locations.sh"],
)
# Provides java-level access to the canonical javac bootclasspath
java_library(
name = "JavacBootclasspath",
srcs = [
"JavacBootclasspath.java",
":javac-bootclasspath-locations",
],
data = ["@bazel_tools//tools/jdk:bootclasspath"],
visibility = ["//visibility:public"],
deps = ["//third_party:guava"],
)
# Exports the canonical javac jar location
genrule(
name = "java-langtools-location",
srcs = ["//third_party/java/jdk/langtools:javac_jar"],
outs = ["JavaLangtoolsLocation.java"],
cmd = "$(location java-langtools-location.sh) $@ $(BINDIR) $(SRCS)",
tools = ["java-langtools-location.sh"],
)
# Provides java-level access to the canonical javac jar
java_library(
name = "JavaLangtools",
srcs = [
"JavaLangtools.java",
":java-langtools-location",
],
data = ["//third_party/java/jdk/langtools:javac_jar"],
visibility = ["//visibility:public"],
)
# Exports javacopts from the current java toolchain
default_javacopts(
name = "gen_default_javacopts",
out = "JavaBuilderJavacOpts.java",
template = "JavaBuilderJavacOpts.java.template",
)
# Provides java-level access to the javacopts in the current java toolchain
java_library(
name = "JavaBuilderConfig",
srcs = [
"JavaBuilderConfig.java",
"JavaBuilderJavacOpts.java",
],
visibility = ["//visibility:public"],
deps = [
"//src/java_tools/buildjar/java/com/google/devtools/build/buildjar:javac_options",
"//third_party:guava",
],
)
# Provides programmatic access to a bazel compatible javac.
# Use this instead of ToolProvider.getSystemJavaCompiler().
java_library(
name = "BazelJavaCompiler",
srcs = ["BazelJavaCompiler.java"],
data = ["//third_party/java/jdk/langtools:javac_jar"],
visibility = ["//visibility:public"],
deps = [
":JavaBuilderConfig",
":JavaLangtools",
":JavacBootclasspath",
"//third_party:guava",
],
)
# Command line version of BazelJavaCompiler, interface-compatible
# with the javac command, for use with ant, for example.
java_library(
name = "BazelJavac",
srcs = ["BazelJavac.java"],
visibility = ["//visibility:public"],
deps = [":BazelJavaCompiler"],
)
java_binary(
name = "bazeljavac",
# Use same stack size as javac and JavaBuilder.
jvm_flags = ["-Xss4m"],
main_class = "com.google.devtools.build.java.bazel.BazelJavac",
visibility = ["//visibility:public"],
runtime_deps = [":BazelJavac"],
)
filegroup(
name = "srcs",
srcs = glob([
"*.java",
"*.sh",
]) + [
"BUILD",
"JavaBuilderJavacOpts.java.template",
"build_defs.bzl",
],
)
|