1// Copyright (C) 2023 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15
16package {
17    default_applicable_licenses: ["Android-Apache-2.0"],
18}
19
20cc_library_headers {
21    name: "libberberis_code_gen_lib_headers",
22    defaults: ["berberis_all_hosts_defaults"],
23    host_supported: true,
24    export_include_dirs: ["include"],
25    header_libs: [
26        "libberberis_assembler_headers",
27        "libberberis_guest_state_headers",
28        "libberberis_runtime_primitives_headers",
29    ],
30    export_header_lib_headers: [
31        "libberberis_assembler_headers",
32        "libberberis_guest_state_headers",
33        "libberberis_runtime_primitives_headers",
34    ],
35}
36
37filegroup {
38    name: "berberis_code_gen_lib_riscv64_to_x86_64_files",
39    srcs: ["riscv64_to_x86_64/gen_wrapper.cc"],
40}
41
42filegroup {
43    name: "berberis_code_gen_lib_all_to_x86_32_files",
44    srcs: ["all_to_x86_32/code_gen_lib.cc"],
45}
46
47filegroup {
48    name: "berberis_code_gen_lib_arm_to_x86_32_files",
49    srcs: ["arm_to_x86_32/gen_wrapper.cc"],
50}
51
52filegroup {
53    name: "berberis_code_gen_lib_all_to_x86_64_files",
54    srcs: ["all_to_x86_64/code_gen_lib.cc"],
55}
56
57filegroup {
58    name: "berberis_code_gen_lib_arm64_to_x86_64_files",
59    srcs: ["arm64_to_x86_64/gen_wrapper.cc"],
60}
61
62filegroup {
63    name: "berberis_code_gen_lib_all_to_riscv64_files",
64    srcs: [
65        "all_to_riscv64/code_gen_lib.cc",
66        "all_to_riscv64/gen_wrapper.cc",
67    ],
68}
69
70cc_defaults {
71    name: "berberis_code_gen_lib_defaults",
72    defaults: ["berberis_guest_agnostic_defaults"],
73    host_supported: true,
74    arch: {
75        x86: {
76            srcs: [":berberis_code_gen_lib_all_to_x86_32_files"],
77        },
78        x86_64: {
79            srcs: [":berberis_code_gen_lib_all_to_x86_64_files"],
80        },
81        riscv64: {
82            srcs: [":berberis_code_gen_lib_all_to_riscv64_files"],
83        },
84    },
85    header_libs: [
86        "libberberis_assembler_headers",
87        "libberberis_base_headers",
88        "libberberis_calling_conventions_headers",
89        "libberberis_code_gen_lib_headers",
90        "libberberis_kernel_api_headers",
91        "libberberis_instrument_headers",
92    ],
93    export_header_lib_headers: [
94        "libberberis_assembler_headers",
95        "libberberis_code_gen_lib_headers",
96    ],
97}
98
99cc_library_static {
100    name: "libberberis_code_gen_lib_riscv64",
101    defaults: [
102        "berberis_defaults_64",
103        "berberis_code_gen_lib_defaults",
104    ],
105    host_supported: true,
106    arch: {
107        x86_64: {
108            header_libs: ["berberis_code_gen_lib_riscv64_to_all_headers"],
109            srcs: [":berberis_code_gen_lib_riscv64_to_x86_64_files"],
110        },
111    },
112    header_libs: [
113        "libberberis_guest_abi_riscv64_headers",
114        "libberberis_guest_state_headers",
115        "libberberis_macro_assembler_headers_riscv64_to_x86_64",
116        "libberberis_runtime_primitives_headers",
117    ],
118    export_header_lib_headers: [
119        "libberberis_assembler_headers",
120        "libberberis_code_gen_lib_headers",
121        "libberberis_macro_assembler_headers_riscv64_to_x86_64",
122    ],
123}
124
125cc_test_library {
126    name: "libberberis_code_gen_lib_riscv64_unit_tests",
127    defaults: ["berberis_test_library_defaults_64"],
128    host_supported: true,
129    srcs: ["code_gen_lib_riscv64_test.cc"],
130    static_libs: ["libberberis_code_gen_lib_riscv64"],
131    header_libs: [
132        "libberberis_base_headers",
133        "libberberis_guest_abi_riscv64_headers",
134        "libberberis_guest_state_headers",
135        "libberberis_runtime_primitives_headers",
136        "berberis_test_utils_headers",
137    ],
138    shared: {
139        enabled: false,
140    },
141}
142