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_guest_os_primitives_headers", 22 defaults: ["berberis_defaults"], 23 host_supported: true, 24 export_include_dirs: ["include"], 25 header_libs: [ 26 "libberberis_base_headers", 27 "libberberis_guest_state_headers", 28 "libberberis_runtime_primitives_headers", 29 ], 30 export_header_lib_headers: [ 31 "libberberis_base_headers", 32 "libberberis_guest_state_headers", 33 "libberberis_runtime_primitives_headers", 34 ], 35} 36 37// Local headers for compiling guest_os_primitives modules only. 38// Don't depend on these headers in other modules. 39cc_library_headers { 40 name: "_libberberis_guest_os_primitives_private_headers", 41 defaults: ["berberis_defaults"], 42 host_supported: true, 43 export_include_dirs: ["."], 44} 45 46cc_library_headers { 47 name: "libberberis_guest_os_primitives_riscv64_headers", 48 defaults: ["berberis_defaults"], 49 host_supported: true, 50 export_include_dirs: ["riscv64/include"], 51 header_libs: [ 52 "libberberis_guest_os_primitives_headers", 53 ], 54 export_header_lib_headers: [ 55 "libberberis_guest_os_primitives_headers", 56 ], 57} 58 59filegroup { 60 name: "libberberis_guest_os_primitives_common_srcs", 61 srcs: [ 62 "guest_map_shadow.cc", 63 "guest_signal_action.cc", 64 "guest_signal_handling.cc", 65 "guest_thread.cc", 66 "guest_thread_clone.cc", 67 "guest_thread_key.cc", 68 "guest_thread_manager.cc", 69 "guest_thread_map.cc", 70 "guest_thread_pthread_create.cc", 71 ], 72} 73 74filegroup { 75 name: "libberberis_guest_os_primitives_common_x86_32_srcs", 76 srcs: ["unmap_and_exit_x86_32.S"], 77} 78 79filegroup { 80 name: "libberberis_guest_os_primitives_common_x86_64_srcs", 81 srcs: ["unmap_and_exit_x86_64.S"], 82} 83 84// Common sources to be shared across arch-specific libraries. 85cc_defaults { 86 name: "libberberis_guest_os_primitives_common_defaults", 87 defaults: ["berberis_defaults"], 88 host_supported: true, 89 srcs: [":libberberis_guest_os_primitives_common_srcs"], 90 arch: { 91 x86: { 92 srcs: [":libberberis_guest_os_primitives_common_x86_32_srcs"], 93 }, 94 x86_64: { 95 srcs: [":libberberis_guest_os_primitives_common_x86_64_srcs"], 96 }, 97 }, 98 header_libs: [ 99 "libberberis_base_headers", 100 "libberberis_guest_os_primitives_headers", 101 "libberberis_guest_state_headers", 102 "libberberis_instrument_headers", 103 "libberberis_runtime_headers", 104 "libberberis_runtime_primitives_headers", 105 "//frameworks/libs/native_bridge_support:native_bridge_guest_linker_headers", 106 ], 107 export_header_lib_headers: ["libberberis_guest_os_primitives_headers"], 108 include_dirs: [ 109 // private/bionic_constants.h 110 "bionic/libc", 111 ], 112} 113 114// This hidden filegroup ensures valid file paths for modules depending on 115// libberberis_guest_os_primitives_common_arch_defaults. 116filegroup { 117 name: "_libberberis_guest_os_primitives_common_arch_srcs", 118 srcs: [ 119 "guest_signal_action_arch.cc", 120 "guest_signal_handling_arch.cc", 121 "guest_thread_pthread_create_arch.cc", 122 ], 123} 124 125// Similar to the filegroup above. Hidden header lib for modules depending on 126// libberberis_guest_os_primitives_common_arch_defaults. 127cc_library_headers { 128 name: "_libberberis_guest_os_primitives_local_headers", 129 defaults: ["berberis_defaults"], 130 host_supported: true, 131 export_include_dirs: ["."], 132} 133 134// Contains sources that are textually common, but must be compiled with arch- 135// specific headers, which makes object code arch-specific. In other words, 136// only include this module in guest arch-specific libraries. 137cc_defaults { 138 name: "libberberis_guest_os_primitives_common_arch_defaults", 139 srcs: [":_libberberis_guest_os_primitives_common_arch_srcs"], 140 header_libs: [ 141 "_libberberis_guest_os_primitives_local_headers", 142 "libberberis_base_headers", 143 "libberberis_guest_abi_headers", 144 "libberberis_guest_state_headers", 145 ], 146} 147 148cc_library_static { 149 name: "libberberis_guest_os_primitives_riscv64", 150 defaults: [ 151 "berberis_defaults_64", 152 "libberberis_guest_os_primitives_common_defaults", 153 "libberberis_guest_os_primitives_common_arch_defaults", 154 ], 155 host_supported: true, 156 srcs: [ 157 "riscv64/gen_syscall_numbers.cc", 158 "riscv64/guest_setjmp.cc", 159 "riscv64/guest_signal.cc", 160 ], 161 local_include_dirs: ["riscv64"], 162 header_libs: [ 163 "libberberis_guest_abi_riscv64_headers", 164 "libberberis_guest_os_primitives_headers", 165 "libberberis_guest_os_primitives_riscv64_headers", 166 "libberberis_guest_state_headers", 167 "libberberis_guest_state_riscv64_headers", 168 ], 169 export_header_lib_headers: [ 170 "libberberis_guest_os_primitives_headers", 171 "libberberis_guest_os_primitives_riscv64_headers", 172 ], 173} 174 175filegroup { 176 name: "libberberis_guest_os_primitives_unit_tests_srcs", 177 srcs: [ 178 "guest_map_shadow_test.cc", 179 "guest_signal_action_test.cc", 180 "guest_thread_test.cc", 181 ], 182} 183 184cc_defaults { 185 name: "libberberis_guest_os_primitives_unit_tests_defaults", 186 srcs: [":libberberis_guest_os_primitives_unit_tests_srcs"], 187 header_libs: [ 188 "libberberis_base_headers", 189 "libberberis_guest_os_primitives_headers", 190 "libberberis_guest_state_headers", 191 "libberberis_runtime_headers", 192 ], 193} 194 195cc_test_library { 196 name: "libberberis_guest_os_primitives_unit_tests", 197 defaults: [ 198 "berberis_test_library_defaults_64", 199 "libberberis_guest_os_primitives_unit_tests_defaults", 200 ], 201 header_libs: [ 202 "libberberis_guest_os_primitives_riscv64_headers", 203 ], 204} 205