xref: /aosp_15_r20/external/bazelbuild-kotlin-rules/tests/jvm/java/jni/BUILD (revision 3a22c0a33dd99bcca39a024d43e6fbcc55c2806e)
1*3a22c0a3SAlix# Copyright 2022 Google LLC. All rights reserved.
2*3a22c0a3SAlix#
3*3a22c0a3SAlix# Licensed under the Apache License, Version 2.0 (the License);
4*3a22c0a3SAlix# you may not use this file except in compliance with the License.
5*3a22c0a3SAlix# You may obtain a copy of the License at
6*3a22c0a3SAlix#
7*3a22c0a3SAlix#     http://www.apache.org/licenses/LICENSE-2.0
8*3a22c0a3SAlix#
9*3a22c0a3SAlix# Unless required by applicable law or agreed to in writing, software
10*3a22c0a3SAlix# distributed under the License is distributed on an "AS IS" BASIS,
11*3a22c0a3SAlix# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*3a22c0a3SAlix# See the License for the specific language governing permissions and
13*3a22c0a3SAlix# limitations under the License.
14*3a22c0a3SAlix
15*3a22c0a3SAlixload("//kotlin:rules.bzl", "kt_jvm_library", "kt_jvm_test")
16*3a22c0a3SAlix
17*3a22c0a3SAlixpackage(
18*3a22c0a3SAlix    default_testonly = 1,
19*3a22c0a3SAlix)
20*3a22c0a3SAlix
21*3a22c0a3SAlixlicenses(["notice"])
22*3a22c0a3SAlix
23*3a22c0a3SAlixkt_jvm_library(
24*3a22c0a3SAlix    name = "NativeApiKt",
25*3a22c0a3SAlix    srcs = ["NativeApi.kt"],
26*3a22c0a3SAlix    visibility = ["//tests:__subpackages__"],
27*3a22c0a3SAlix    runtime_deps = [":jni_NativeApi"],
28*3a22c0a3SAlix)
29*3a22c0a3SAlix
30*3a22c0a3SAlixjava_library(
31*3a22c0a3SAlix    name = "NativeApiJava",
32*3a22c0a3SAlix    srcs = ["NativeApi.java"],
33*3a22c0a3SAlix    deps = [":libNativeApi.so"],
34*3a22c0a3SAlix)
35*3a22c0a3SAlix
36*3a22c0a3SAlixjava_library(
37*3a22c0a3SAlix    name = "NativeApiJava-through_cc_lib",
38*3a22c0a3SAlix    srcs = ["NativeApi.java"],
39*3a22c0a3SAlix    deps = [":native_api_so"],
40*3a22c0a3SAlix)
41*3a22c0a3SAlix
42*3a22c0a3SAlixkt_jvm_library(
43*3a22c0a3SAlix    name = "NativeApiKt-through_cc_lib",
44*3a22c0a3SAlix    srcs = ["NativeApi.kt"],
45*3a22c0a3SAlix    runtime_deps = [":native_api_so"],
46*3a22c0a3SAlix)
47*3a22c0a3SAlix
48*3a22c0a3SAlixcc_library(
49*3a22c0a3SAlix    name = "native_api_so",
50*3a22c0a3SAlix    srcs = [":libNativeApi.so"],
51*3a22c0a3SAlix)
52*3a22c0a3SAlix
53*3a22c0a3SAlixcc_binary(
54*3a22c0a3SAlix    name = "libNativeApi.so",
55*3a22c0a3SAlix    linkshared = 1,
56*3a22c0a3SAlix    linkstatic = 1,
57*3a22c0a3SAlix    deps = [":jni_NativeApi"],
58*3a22c0a3SAlix)
59*3a22c0a3SAlix
60*3a22c0a3SAlixcc_library(
61*3a22c0a3SAlix    name = "jni_NativeApi",
62*3a22c0a3SAlix    srcs = ["jni_NativeApi.cc"],
63*3a22c0a3SAlix    hdrs = ["jni_NativeApi.h"],  # manually generated with "javac -h NativeApi.java"
64*3a22c0a3SAlix    deps = ["@bazel_tools//tools/jdk:jni"],
65*3a22c0a3SAlix    alwayslink = 1,
66*3a22c0a3SAlix)
67*3a22c0a3SAlix
68*3a22c0a3SAlix[
69*3a22c0a3SAlix    kt_jvm_test(
70*3a22c0a3SAlix        name = "NativeApiTest_" + native_loader,
71*3a22c0a3SAlix        srcs = ["NativeApiTest.kt"],
72*3a22c0a3SAlix        args = args,
73*3a22c0a3SAlix        main_class = "jni.NativeApiTestKt",
74*3a22c0a3SAlix        deps = [
75*3a22c0a3SAlix            native_loader,
76*3a22c0a3SAlix            "@maven//:com_google_truth_truth",
77*3a22c0a3SAlix            "@maven//:junit_junit",
78*3a22c0a3SAlix        ],
79*3a22c0a3SAlix    )
80*3a22c0a3SAlix    for native_loader, args in {
81*3a22c0a3SAlix        "NativeApiJava": ["--load"],
82*3a22c0a3SAlix        "NativeApiJava-through_cc_lib": ["--load"],
83*3a22c0a3SAlix        "NativeApiKt-through_cc_lib": ["--load"],
84*3a22c0a3SAlix    }.items()
85*3a22c0a3SAlix]
86*3a22c0a3SAlix
87*3a22c0a3SAlixsh_test(
88*3a22c0a3SAlix    name = "jdk_check",
89*3a22c0a3SAlix    srcs = ["jdk_check.sh"],
90*3a22c0a3SAlix)
91