xref: /aosp_15_r20/external/bazelbuild-rules_java/toolchains/jdk_build_file.bzl (revision abe8e1b943c923005d847f1e3cf6637de4ed1a1f)
1*abe8e1b9SSadaf Ebrahimi# Copyright 2023 The Bazel Authors. All rights reserved.
2*abe8e1b9SSadaf Ebrahimi#
3*abe8e1b9SSadaf Ebrahimi# Licensed under the Apache License, Version 2.0 (the "License");
4*abe8e1b9SSadaf Ebrahimi# you may not use this file except in compliance with the License.
5*abe8e1b9SSadaf Ebrahimi# You may obtain a copy of the License at
6*abe8e1b9SSadaf Ebrahimi#
7*abe8e1b9SSadaf Ebrahimi#    http://www.apache.org/licenses/LICENSE-2.0
8*abe8e1b9SSadaf Ebrahimi#
9*abe8e1b9SSadaf Ebrahimi# Unless required by applicable law or agreed to in writing, software
10*abe8e1b9SSadaf Ebrahimi# distributed under the License is distributed on an "AS IS" BASIS,
11*abe8e1b9SSadaf Ebrahimi# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*abe8e1b9SSadaf Ebrahimi# See the License for the specific language governing permissions and
13*abe8e1b9SSadaf Ebrahimi# limitations under the License.
14*abe8e1b9SSadaf Ebrahimi
15*abe8e1b9SSadaf Ebrahimi"""A templated BUILD file for Java repositories."""
16*abe8e1b9SSadaf Ebrahimi
17*abe8e1b9SSadaf EbrahimiJDK_BUILD_TEMPLATE = """load("@rules_java//java:defs.bzl", "java_runtime")
18*abe8e1b9SSadaf Ebrahimi
19*abe8e1b9SSadaf Ebrahimipackage(default_visibility = ["//visibility:public"])
20*abe8e1b9SSadaf Ebrahimi
21*abe8e1b9SSadaf Ebrahimiexports_files(["WORKSPACE", "BUILD.bazel"])
22*abe8e1b9SSadaf Ebrahimi
23*abe8e1b9SSadaf Ebrahimifilegroup(
24*abe8e1b9SSadaf Ebrahimi    name = "jre",
25*abe8e1b9SSadaf Ebrahimi    srcs = glob(
26*abe8e1b9SSadaf Ebrahimi        [
27*abe8e1b9SSadaf Ebrahimi            "jre/bin/**",
28*abe8e1b9SSadaf Ebrahimi            "jre/lib/**",
29*abe8e1b9SSadaf Ebrahimi        ],
30*abe8e1b9SSadaf Ebrahimi        allow_empty = True,
31*abe8e1b9SSadaf Ebrahimi        # In some configurations, Java browser plugin is considered harmful and
32*abe8e1b9SSadaf Ebrahimi        # common antivirus software blocks access to npjp2.dll interfering with Bazel,
33*abe8e1b9SSadaf Ebrahimi        # so do not include it in JRE on Windows.
34*abe8e1b9SSadaf Ebrahimi        exclude = ["jre/bin/plugin2/**"],
35*abe8e1b9SSadaf Ebrahimi    ),
36*abe8e1b9SSadaf Ebrahimi)
37*abe8e1b9SSadaf Ebrahimi
38*abe8e1b9SSadaf Ebrahimifilegroup(
39*abe8e1b9SSadaf Ebrahimi    name = "jdk-bin",
40*abe8e1b9SSadaf Ebrahimi    srcs = glob(
41*abe8e1b9SSadaf Ebrahimi        ["bin/**"],
42*abe8e1b9SSadaf Ebrahimi        # The JDK on Windows sometimes contains a directory called
43*abe8e1b9SSadaf Ebrahimi        # "%systemroot%", which is not a valid label.
44*abe8e1b9SSadaf Ebrahimi        exclude = ["**/*%*/**"],
45*abe8e1b9SSadaf Ebrahimi    ),
46*abe8e1b9SSadaf Ebrahimi)
47*abe8e1b9SSadaf Ebrahimi
48*abe8e1b9SSadaf Ebrahimi# This folder holds security policies.
49*abe8e1b9SSadaf Ebrahimifilegroup(
50*abe8e1b9SSadaf Ebrahimi    name = "jdk-conf",
51*abe8e1b9SSadaf Ebrahimi    srcs = glob(
52*abe8e1b9SSadaf Ebrahimi        ["conf/**"],
53*abe8e1b9SSadaf Ebrahimi        allow_empty = True,
54*abe8e1b9SSadaf Ebrahimi    ),
55*abe8e1b9SSadaf Ebrahimi)
56*abe8e1b9SSadaf Ebrahimi
57*abe8e1b9SSadaf Ebrahimifilegroup(
58*abe8e1b9SSadaf Ebrahimi    name = "jdk-include",
59*abe8e1b9SSadaf Ebrahimi    srcs = glob(
60*abe8e1b9SSadaf Ebrahimi        ["include/**"],
61*abe8e1b9SSadaf Ebrahimi        allow_empty = True,
62*abe8e1b9SSadaf Ebrahimi    ),
63*abe8e1b9SSadaf Ebrahimi)
64*abe8e1b9SSadaf Ebrahimi
65*abe8e1b9SSadaf Ebrahimifilegroup(
66*abe8e1b9SSadaf Ebrahimi    name = "jdk-lib",
67*abe8e1b9SSadaf Ebrahimi    srcs = glob(
68*abe8e1b9SSadaf Ebrahimi        ["lib/**", "release"],
69*abe8e1b9SSadaf Ebrahimi        allow_empty = True,
70*abe8e1b9SSadaf Ebrahimi        exclude = [
71*abe8e1b9SSadaf Ebrahimi            "lib/missioncontrol/**",
72*abe8e1b9SSadaf Ebrahimi            "lib/visualvm/**",
73*abe8e1b9SSadaf Ebrahimi        ],
74*abe8e1b9SSadaf Ebrahimi    ),
75*abe8e1b9SSadaf Ebrahimi)
76*abe8e1b9SSadaf Ebrahimi
77*abe8e1b9SSadaf Ebrahimijava_runtime(
78*abe8e1b9SSadaf Ebrahimi    name = "jdk",
79*abe8e1b9SSadaf Ebrahimi    srcs = [
80*abe8e1b9SSadaf Ebrahimi        ":jdk-bin",
81*abe8e1b9SSadaf Ebrahimi        ":jdk-conf",
82*abe8e1b9SSadaf Ebrahimi        ":jdk-include",
83*abe8e1b9SSadaf Ebrahimi        ":jdk-lib",
84*abe8e1b9SSadaf Ebrahimi        ":jre",
85*abe8e1b9SSadaf Ebrahimi    ],
86*abe8e1b9SSadaf Ebrahimi    # Provide the 'java` binary explicitly so that the correct path is used by
87*abe8e1b9SSadaf Ebrahimi    # Bazel even when the host platform differs from the execution platform.
88*abe8e1b9SSadaf Ebrahimi    # Exactly one of the two globs will be empty depending on the host platform.
89*abe8e1b9SSadaf Ebrahimi    # When --incompatible_disallow_empty_glob is enabled, each individual empty
90*abe8e1b9SSadaf Ebrahimi    # glob will fail without allow_empty = True, even if the overall result is
91*abe8e1b9SSadaf Ebrahimi    # non-empty.
92*abe8e1b9SSadaf Ebrahimi    java = glob(["bin/java.exe", "bin/java"], allow_empty = True)[0],
93*abe8e1b9SSadaf Ebrahimi    version = {RUNTIME_VERSION},
94*abe8e1b9SSadaf Ebrahimi)
95*abe8e1b9SSadaf Ebrahimi
96*abe8e1b9SSadaf Ebrahimifilegroup(
97*abe8e1b9SSadaf Ebrahimi    name = "jdk-jmods",
98*abe8e1b9SSadaf Ebrahimi    srcs = glob(
99*abe8e1b9SSadaf Ebrahimi        ["jmods/**"],
100*abe8e1b9SSadaf Ebrahimi        allow_empty = True,
101*abe8e1b9SSadaf Ebrahimi    ),
102*abe8e1b9SSadaf Ebrahimi)
103*abe8e1b9SSadaf Ebrahimi
104*abe8e1b9SSadaf Ebrahimijava_runtime(
105*abe8e1b9SSadaf Ebrahimi    name = "jdk-with-jmods",
106*abe8e1b9SSadaf Ebrahimi    srcs = [
107*abe8e1b9SSadaf Ebrahimi        ":jdk-bin",
108*abe8e1b9SSadaf Ebrahimi        ":jdk-conf",
109*abe8e1b9SSadaf Ebrahimi        ":jdk-include",
110*abe8e1b9SSadaf Ebrahimi        ":jdk-lib",
111*abe8e1b9SSadaf Ebrahimi        ":jdk-jmods",
112*abe8e1b9SSadaf Ebrahimi        ":jre",
113*abe8e1b9SSadaf Ebrahimi    ],
114*abe8e1b9SSadaf Ebrahimi    java = glob(["bin/java.exe", "bin/java"], allow_empty = True)[0],
115*abe8e1b9SSadaf Ebrahimi    version = {RUNTIME_VERSION},
116*abe8e1b9SSadaf Ebrahimi)
117*abe8e1b9SSadaf Ebrahimi"""
118