1/*
2 * Copyright (C) 2023 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package {
18    default_applicable_licenses: ["Android-Apache-2.0"],
19}
20
21python_binary_host {
22    name: "berberis_gen_jni_trampolines",
23    main: "gen_jni_trampolines.py",
24    srcs: ["gen_jni_trampolines.py"],
25}
26
27genrule {
28    name: "libberberis_jni_gen_headers",
29    out: ["jni_trampolines-inl.h"],
30    srcs: ["api.json"],
31    tools: ["berberis_gen_jni_trampolines"],
32    cmd: "$(location berberis_gen_jni_trampolines) $(out) $(in)",
33}
34
35cc_library_headers {
36    name: "libberberis_jni_headers",
37    defaults: ["berberis_defaults"],
38    host_supported: true,
39    export_include_dirs: ["include"],
40}
41
42// filegroups ensure valid file paths for modules depending on
43// libberberis_jni_defaults.
44filegroup {
45    name: "_libberberis_jni_srcs",
46    srcs: [
47        "guest_jni_trampolines.cc",
48        "jni_trampolines.cc",
49    ],
50}
51
52// Shared source files for compiling guest-specific static libs.
53// See libberberis_jni_riscv64 below.
54cc_defaults {
55    name: "libberberis_jni_defaults",
56    host_supported: false,
57    srcs: [":_libberberis_jni_srcs"],
58    generated_headers: ["libberberis_jni_gen_headers"],
59    header_libs: [
60        "jni_headers",
61        "libberberis_base_headers",
62        "libberberis_guest_abi_headers",
63        "libberberis_guest_loader_headers",
64        "libberberis_jni_headers",
65        "libberberis_native_bridge_headers",
66        "libberberis_guest_state_headers",
67        "libberberis_runtime_primitives_headers",
68    ],
69    export_header_lib_headers: [
70        "libberberis_guest_abi_headers",
71        "libberberis_guest_state_headers",
72        "libberberis_jni_headers",
73        "libberberis_runtime_primitives_headers",
74    ],
75}
76
77cc_library_static {
78    name: "libberberis_jni_riscv64",
79    defaults: [
80        "berberis_defaults_64",
81        "libberberis_jni_defaults",
82    ],
83    header_libs: [
84        "libberberis_guest_abi_riscv64_headers",
85    ],
86    export_header_lib_headers: [
87        "libberberis_guest_abi_riscv64_headers",
88    ],
89}
90