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