aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools/buildjar/java/com/google/devtools/build/java/bazel/BUILD
blob: 4816cd8216359a0e49ebe6cf9f782da09f7f5186 (plain)
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",
    ],
)