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