1# Copyright (c) 2021 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14if (defined(ohos_lite)) { 15 import("//build/lite/config/component/lite_component.gni") 16} else { 17 import("//build/ohos.gni") 18} 19libunwind_code_dir = "${target_gen_dir}/libunwind-1.6.2" 20common_source = [ 21 "$libunwind_code_dir/src/dwarf/Gexpr.c", 22 "$libunwind_code_dir/src/dwarf/Gfde.c", 23 "$libunwind_code_dir/src/dwarf/Gfind_proc_info-lsb.c", 24 "$libunwind_code_dir/src/dwarf/Gfind_unwind_table.c", 25 "$libunwind_code_dir/src/dwarf/global.c", 26 "$libunwind_code_dir/src/dwarf/Gparser.c", 27 "$libunwind_code_dir/src/dwarf/Gpe.c", 28 "$libunwind_code_dir/src/dwarf/Lexpr.c", 29 "$libunwind_code_dir/src/dwarf/Lfde.c", 30 "$libunwind_code_dir/src/dwarf/Lfind_proc_info-lsb.c", 31 "$libunwind_code_dir/src/dwarf/Lfind_unwind_table.c", 32 "$libunwind_code_dir/src/dwarf/Lparser.c", 33 "$libunwind_code_dir/src/dwarf/Lpe.c", 34 "$libunwind_code_dir/src/mi/backtrace.c", 35 "$libunwind_code_dir/src/mi/dyn-cancel.c", 36 "$libunwind_code_dir/src/mi/dyn-info-list.c", 37 "$libunwind_code_dir/src/mi/dyn-register.c", 38 "$libunwind_code_dir/src/mi/flush_cache.c", 39 "$libunwind_code_dir/src/mi/Gdestroy_addr_space.c", 40 "$libunwind_code_dir/src/mi/Gdyn-extract.c", 41 "$libunwind_code_dir/src/mi/Gdyn-remote.c", 42 "$libunwind_code_dir/src/mi/Gfind_dynamic_proc_info.c", 43 "$libunwind_code_dir/src/mi/Gget_accessors.c", 44 "$libunwind_code_dir/src/mi/Gget_fpreg.c", 45 "$libunwind_code_dir/src/mi/Gget_proc_info_by_ip.c", 46 "$libunwind_code_dir/src/mi/Gget_proc_name.c", 47 "$libunwind_code_dir/src/mi/Gget_reg.c", 48 "$libunwind_code_dir/src/mi/Gput_dynamic_unwind_info.c", 49 "$libunwind_code_dir/src/mi/Gset_cache_size.c", 50 "$libunwind_code_dir/src/mi/Gset_caching_policy.c", 51 "$libunwind_code_dir/src/mi/Gset_fpreg.c", 52 "$libunwind_code_dir/src/mi/Gset_reg.c", 53 "$libunwind_code_dir/src/mi/init.c", 54 "$libunwind_code_dir/src/mi/Ldestroy_addr_space.c", 55 "$libunwind_code_dir/src/mi/Ldyn-extract.c", 56 "$libunwind_code_dir/src/mi/Lfind_dynamic_proc_info.c", 57 "$libunwind_code_dir/src/mi/Lget_fpreg.c", 58 "$libunwind_code_dir/src/mi/Lget_proc_info_by_ip.c", 59 "$libunwind_code_dir/src/mi/Lget_proc_name.c", 60 "$libunwind_code_dir/src/mi/Lget_reg.c", 61 "$libunwind_code_dir/src/mi/Lput_dynamic_unwind_info.c", 62 "$libunwind_code_dir/src/mi/Lset_cache_size.c", 63 "$libunwind_code_dir/src/mi/Lset_caching_policy.c", 64 "$libunwind_code_dir/src/mi/Lset_fpreg.c", 65 "$libunwind_code_dir/src/mi/Lset_reg.c", 66 "$libunwind_code_dir/src/mi/mempool.c", 67 "$libunwind_code_dir/src/mi/strerror.c", 68 "$libunwind_code_dir/src/os-linux.c", 69 "$libunwind_code_dir/src/ptrace/_UPT_access_fpreg.c", 70 "$libunwind_code_dir/src/ptrace/_UPT_access_mem.c", 71 "$libunwind_code_dir/src/ptrace/_UPT_access_reg.c", 72 "$libunwind_code_dir/src/ptrace/_UPT_accessors.c", 73 "$libunwind_code_dir/src/ptrace/_UPT_create.c", 74 "$libunwind_code_dir/src/ptrace/_UPT_destroy.c", 75 "$libunwind_code_dir/src/ptrace/_UPT_find_proc_info.c", 76 "$libunwind_code_dir/src/ptrace/_UPT_get_dyn_info_list_addr.c", 77 "$libunwind_code_dir/src/ptrace/_UPT_get_proc_name.c", 78 "$libunwind_code_dir/src/ptrace/_UPT_put_unwind_info.c", 79 "$libunwind_code_dir/src/ptrace/_UPT_reg_offset.c", 80 "$libunwind_code_dir/src/ptrace/_UPT_resume.c", 81] 82 83# as libc++ is static linked with libunwind.a 84# we remove the Gstep.c for duplicated symbol violation 85arm_source = [ 86 "$libunwind_code_dir/src/arm/Gapply_reg_state.c", 87 "$libunwind_code_dir/src/arm/Gcreate_addr_space.c", 88 "$libunwind_code_dir/src/arm/Gex_tables.c", 89 "$libunwind_code_dir/src/arm/Gget_proc_info.c", 90 "$libunwind_code_dir/src/arm/Gget_save_loc.c", 91 "$libunwind_code_dir/src/arm/Gglobal.c", 92 "$libunwind_code_dir/src/arm/Ginit.c", 93 "$libunwind_code_dir/src/arm/Ginit_local.c", 94 "$libunwind_code_dir/src/arm/Ginit_remote.c", 95 "$libunwind_code_dir/src/arm/Gos-linux.c", 96 "$libunwind_code_dir/src/arm/Greg_states_iterate.c", 97 "$libunwind_code_dir/src/arm/Gregs.c", 98 "$libunwind_code_dir/src/arm/Gresume.c", 99 "$libunwind_code_dir/src/arm/Gstash_frame.c", 100 "$libunwind_code_dir/src/arm/Gstep.c", 101 "$libunwind_code_dir/src/arm/Gtrace.c", 102 "$libunwind_code_dir/src/arm/Lcreate_addr_space.c", 103 "$libunwind_code_dir/src/arm/Lex_tables.c", 104 "$libunwind_code_dir/src/arm/Lget_proc_info.c", 105 "$libunwind_code_dir/src/arm/Lget_save_loc.c", 106 "$libunwind_code_dir/src/arm/Lglobal.c", 107 "$libunwind_code_dir/src/arm/Linit.c", 108 "$libunwind_code_dir/src/arm/Linit_local.c", 109 "$libunwind_code_dir/src/arm/Linit_remote.c", 110 "$libunwind_code_dir/src/arm/Los-linux.c", 111 "$libunwind_code_dir/src/arm/Lregs.c", 112 "$libunwind_code_dir/src/arm/Lresume.c", 113 "$libunwind_code_dir/src/arm/Lstash_frame.c", 114 "$libunwind_code_dir/src/arm/Lstep.c", 115 "$libunwind_code_dir/src/arm/Ltrace.c", 116 "$libunwind_code_dir/src/arm/getcontext.S", 117 "$libunwind_code_dir/src/arm/is_fpreg.c", 118 "$libunwind_code_dir/src/arm/regname.c", 119 "$libunwind_code_dir/src/arm/siglongjmp.S", 120 "$libunwind_code_dir/src/elf32.c", 121] 122 123arm64_source = [ 124 "$libunwind_code_dir/src/aarch64/Gcreate_addr_space.c", 125 "$libunwind_code_dir/src/aarch64/Gget_proc_info.c", 126 "$libunwind_code_dir/src/aarch64/Gget_save_loc.c", 127 "$libunwind_code_dir/src/aarch64/Gglobal.c", 128 "$libunwind_code_dir/src/aarch64/Ginit.c", 129 "$libunwind_code_dir/src/aarch64/Ginit_local.c", 130 "$libunwind_code_dir/src/aarch64/Ginit_remote.c", 131 "$libunwind_code_dir/src/aarch64/Gis_signal_frame.c", 132 "$libunwind_code_dir/src/aarch64/Gregs.c", 133 "$libunwind_code_dir/src/aarch64/Gresume.c", 134 "$libunwind_code_dir/src/aarch64/Gstash_frame.c", 135 "$libunwind_code_dir/src/aarch64/Gstep.c", 136 "$libunwind_code_dir/src/aarch64/Gtrace.c", 137 "$libunwind_code_dir/src/aarch64/Lcreate_addr_space.c", 138 "$libunwind_code_dir/src/aarch64/Lget_proc_info.c", 139 "$libunwind_code_dir/src/aarch64/Lget_save_loc.c", 140 "$libunwind_code_dir/src/aarch64/Lglobal.c", 141 "$libunwind_code_dir/src/aarch64/Linit.c", 142 "$libunwind_code_dir/src/aarch64/Linit_local.c", 143 "$libunwind_code_dir/src/aarch64/Linit_remote.c", 144 "$libunwind_code_dir/src/aarch64/Lis_signal_frame.c", 145 "$libunwind_code_dir/src/aarch64/Lregs.c", 146 "$libunwind_code_dir/src/aarch64/Lresume.c", 147 "$libunwind_code_dir/src/aarch64/Lstash_frame.c", 148 "$libunwind_code_dir/src/aarch64/Lstep.c", 149 "$libunwind_code_dir/src/aarch64/Ltrace.c", 150 "$libunwind_code_dir/src/aarch64/getcontext.S", 151 "$libunwind_code_dir/src/aarch64/is_fpreg.c", 152 "$libunwind_code_dir/src/aarch64/regname.c", 153 "$libunwind_code_dir/src/elf64.c", 154] 155 156x64_source = [ 157 "$libunwind_code_dir/src/elf64.c", 158 "$libunwind_code_dir/src/x86_64/Gcreate_addr_space.c", 159 "$libunwind_code_dir/src/x86_64/Gget_proc_info.c", 160 "$libunwind_code_dir/src/x86_64/Gget_save_loc.c", 161 "$libunwind_code_dir/src/x86_64/Gglobal.c", 162 "$libunwind_code_dir/src/x86_64/Ginit.c", 163 "$libunwind_code_dir/src/x86_64/Ginit_local.c", 164 "$libunwind_code_dir/src/x86_64/Ginit_remote.c", 165 "$libunwind_code_dir/src/x86_64/Gos-linux.c", 166 "$libunwind_code_dir/src/x86_64/Gregs.c", 167 "$libunwind_code_dir/src/x86_64/Gresume.c", 168 "$libunwind_code_dir/src/x86_64/Gstash_frame.c", 169 "$libunwind_code_dir/src/x86_64/Gstep.c", 170 "$libunwind_code_dir/src/x86_64/Gtrace.c", 171 "$libunwind_code_dir/src/x86_64/Lcreate_addr_space.c", 172 "$libunwind_code_dir/src/x86_64/Lget_proc_info.c", 173 "$libunwind_code_dir/src/x86_64/Lget_save_loc.c", 174 "$libunwind_code_dir/src/x86_64/Lglobal.c", 175 "$libunwind_code_dir/src/x86_64/Linit.c", 176 "$libunwind_code_dir/src/x86_64/Linit_local.c", 177 "$libunwind_code_dir/src/x86_64/Linit_remote.c", 178 "$libunwind_code_dir/src/x86_64/Los-linux.c", 179 "$libunwind_code_dir/src/x86_64/Lregs.c", 180 "$libunwind_code_dir/src/x86_64/Lresume.c", 181 "$libunwind_code_dir/src/x86_64/Lstash_frame.c", 182 "$libunwind_code_dir/src/x86_64/Lstep.c", 183 "$libunwind_code_dir/src/x86_64/Ltrace.c", 184 "$libunwind_code_dir/src/x86_64/getcontext.S", 185 "$libunwind_code_dir/src/x86_64/is_fpreg.c", 186 "$libunwind_code_dir/src/x86_64/regname.c", 187 "$libunwind_code_dir/src/x86_64/setcontext.S", 188] 189 190riscv64_source = [ 191 "$libunwind_code_dir/src/elf64.c", 192 "$libunwind_code_dir/src/riscv/Gapply_reg_state.c", 193 "$libunwind_code_dir/src/riscv/Gcreate_addr_space.c", 194 "$libunwind_code_dir/src/riscv/getcontext.S", 195 "$libunwind_code_dir/src/riscv/Gget_proc_info.c", 196 "$libunwind_code_dir/src/riscv/Gget_save_loc.c", 197 "$libunwind_code_dir/src/riscv/Gglobal.c", 198 "$libunwind_code_dir/src/riscv/Ginit.c", 199 "$libunwind_code_dir/src/riscv/Ginit_local.c", 200 "$libunwind_code_dir/src/riscv/Ginit_remote.c", 201 "$libunwind_code_dir/src/riscv/Gis_signal_frame.c", 202 "$libunwind_code_dir/src/riscv/Gregs.c", 203 "$libunwind_code_dir/src/riscv/Greg_states_iterate.c", 204 "$libunwind_code_dir/src/riscv/Gresume.c", 205 "$libunwind_code_dir/src/riscv/Gstep.c", 206 "$libunwind_code_dir/src/riscv/is_fpreg.c", 207 "$libunwind_code_dir/src/riscv/Lcreate_addr_space.c", 208 "$libunwind_code_dir/src/riscv/Lget_proc_info.c", 209 "$libunwind_code_dir/src/riscv/Lget_save_loc.c", 210 "$libunwind_code_dir/src/riscv/Lglobal.c", 211 "$libunwind_code_dir/src/riscv/Linit.c", 212 "$libunwind_code_dir/src/riscv/Linit_local.c", 213 "$libunwind_code_dir/src/riscv/Linit_remote.c", 214 "$libunwind_code_dir/src/riscv/Lis_signal_frame.c", 215 "$libunwind_code_dir/src/riscv/Lregs.c", 216 "$libunwind_code_dir/src/riscv/Lreg_states_iterate.c", 217 "$libunwind_code_dir/src/riscv/Lresume.c", 218 "$libunwind_code_dir/src/riscv/Lstep.c", 219 "$libunwind_code_dir/src/riscv/offsets.h", 220 "$libunwind_code_dir/src/riscv/regname.c", 221 "$libunwind_code_dir/src/riscv/setcontext.S", 222 "$libunwind_code_dir/src/riscv/siglongjmp.S", 223] 224 225action("libunwind_action") { 226 print("libunwind_action is exec") 227 script = "//third_party/libunwind/install.py" 228 outputs = [ 229 "$libunwind_code_dir/src/dwarf/Gexpr.c", 230 "$libunwind_code_dir/src/dwarf/Gfde.c", 231 "$libunwind_code_dir/src/dwarf/Gfind_proc_info-lsb.c", 232 "$libunwind_code_dir/src/dwarf/Gfind_unwind_table.c", 233 "$libunwind_code_dir/src/dwarf/global.c", 234 "$libunwind_code_dir/src/dwarf/Gparser.c", 235 "$libunwind_code_dir/src/dwarf/Gpe.c", 236 "$libunwind_code_dir/src/dwarf/Lexpr.c", 237 "$libunwind_code_dir/src/dwarf/Lfde.c", 238 "$libunwind_code_dir/src/dwarf/Lfind_proc_info-lsb.c", 239 "$libunwind_code_dir/src/dwarf/Lfind_unwind_table.c", 240 "$libunwind_code_dir/src/dwarf/Lparser.c", 241 "$libunwind_code_dir/src/dwarf/Lpe.c", 242 "$libunwind_code_dir/src/mi/backtrace.c", 243 "$libunwind_code_dir/src/mi/dyn-cancel.c", 244 "$libunwind_code_dir/src/mi/dyn-info-list.c", 245 "$libunwind_code_dir/src/mi/dyn-register.c", 246 "$libunwind_code_dir/src/mi/flush_cache.c", 247 "$libunwind_code_dir/src/mi/Gdestroy_addr_space.c", 248 "$libunwind_code_dir/src/mi/Gdyn-extract.c", 249 "$libunwind_code_dir/src/mi/Gdyn-remote.c", 250 "$libunwind_code_dir/src/mi/Gfind_dynamic_proc_info.c", 251 "$libunwind_code_dir/src/mi/Gget_accessors.c", 252 "$libunwind_code_dir/src/mi/Gget_fpreg.c", 253 "$libunwind_code_dir/src/mi/Gget_proc_info_by_ip.c", 254 "$libunwind_code_dir/src/mi/Gget_proc_name.c", 255 "$libunwind_code_dir/src/mi/Gget_reg.c", 256 "$libunwind_code_dir/src/mi/Gput_dynamic_unwind_info.c", 257 "$libunwind_code_dir/src/mi/Gset_cache_size.c", 258 "$libunwind_code_dir/src/mi/Gset_caching_policy.c", 259 "$libunwind_code_dir/src/mi/Gset_fpreg.c", 260 "$libunwind_code_dir/src/mi/Gset_reg.c", 261 "$libunwind_code_dir/src/mi/init.c", 262 "$libunwind_code_dir/src/mi/Ldestroy_addr_space.c", 263 "$libunwind_code_dir/src/mi/Ldyn-extract.c", 264 "$libunwind_code_dir/src/mi/Lfind_dynamic_proc_info.c", 265 "$libunwind_code_dir/src/mi/Lget_fpreg.c", 266 "$libunwind_code_dir/src/mi/Lget_proc_info_by_ip.c", 267 "$libunwind_code_dir/src/mi/Lget_proc_name.c", 268 "$libunwind_code_dir/src/mi/Lget_reg.c", 269 "$libunwind_code_dir/src/mi/Lput_dynamic_unwind_info.c", 270 "$libunwind_code_dir/src/mi/Lset_cache_size.c", 271 "$libunwind_code_dir/src/mi/Lset_caching_policy.c", 272 "$libunwind_code_dir/src/mi/Lset_fpreg.c", 273 "$libunwind_code_dir/src/mi/Lset_reg.c", 274 "$libunwind_code_dir/src/mi/mempool.c", 275 "$libunwind_code_dir/src/mi/strerror.c", 276 "$libunwind_code_dir/src/os-linux.c", 277 "$libunwind_code_dir/src/ptrace/_UPT_access_fpreg.c", 278 "$libunwind_code_dir/src/ptrace/_UPT_access_mem.c", 279 "$libunwind_code_dir/src/ptrace/_UPT_access_reg.c", 280 "$libunwind_code_dir/src/ptrace/_UPT_accessors.c", 281 "$libunwind_code_dir/src/ptrace/_UPT_create.c", 282 "$libunwind_code_dir/src/ptrace/_UPT_destroy.c", 283 "$libunwind_code_dir/src/ptrace/_UPT_find_proc_info.c", 284 "$libunwind_code_dir/src/ptrace/_UPT_get_dyn_info_list_addr.c", 285 "$libunwind_code_dir/src/ptrace/_UPT_get_proc_name.c", 286 "$libunwind_code_dir/src/ptrace/_UPT_put_unwind_info.c", 287 "$libunwind_code_dir/src/ptrace/_UPT_reg_offset.c", 288 "$libunwind_code_dir/src/ptrace/_UPT_resume.c", 289 "$libunwind_code_dir/src/arm/Gapply_reg_state.c", 290 "$libunwind_code_dir/src/arm/Gcreate_addr_space.c", 291 "$libunwind_code_dir/src/arm/Gex_tables.c", 292 "$libunwind_code_dir/src/arm/Gget_proc_info.c", 293 "$libunwind_code_dir/src/arm/Gget_save_loc.c", 294 "$libunwind_code_dir/src/arm/Gglobal.c", 295 "$libunwind_code_dir/src/arm/Ginit.c", 296 "$libunwind_code_dir/src/arm/Ginit_local.c", 297 "$libunwind_code_dir/src/arm/Ginit_remote.c", 298 "$libunwind_code_dir/src/arm/Gos-linux.c", 299 "$libunwind_code_dir/src/arm/Greg_states_iterate.c", 300 "$libunwind_code_dir/src/arm/Gregs.c", 301 "$libunwind_code_dir/src/arm/Gresume.c", 302 "$libunwind_code_dir/src/arm/Gstash_frame.c", 303 "$libunwind_code_dir/src/arm/Gstep.c", 304 "$libunwind_code_dir/src/arm/Gtrace.c", 305 "$libunwind_code_dir/src/arm/Lcreate_addr_space.c", 306 "$libunwind_code_dir/src/arm/Lex_tables.c", 307 "$libunwind_code_dir/src/arm/Lget_proc_info.c", 308 "$libunwind_code_dir/src/arm/Lget_save_loc.c", 309 "$libunwind_code_dir/src/arm/Lglobal.c", 310 "$libunwind_code_dir/src/arm/Linit.c", 311 "$libunwind_code_dir/src/arm/Linit_local.c", 312 "$libunwind_code_dir/src/arm/Linit_remote.c", 313 "$libunwind_code_dir/src/arm/Los-linux.c", 314 "$libunwind_code_dir/src/arm/Lregs.c", 315 "$libunwind_code_dir/src/arm/Lresume.c", 316 "$libunwind_code_dir/src/arm/Lstash_frame.c", 317 "$libunwind_code_dir/src/arm/Lstep.c", 318 "$libunwind_code_dir/src/arm/Ltrace.c", 319 "$libunwind_code_dir/src/arm/getcontext.S", 320 "$libunwind_code_dir/src/arm/is_fpreg.c", 321 "$libunwind_code_dir/src/arm/regname.c", 322 "$libunwind_code_dir/src/arm/siglongjmp.S", 323 "$libunwind_code_dir/src/elf32.c", 324 "$libunwind_code_dir/src/aarch64/Gcreate_addr_space.c", 325 "$libunwind_code_dir/src/aarch64/Gget_proc_info.c", 326 "$libunwind_code_dir/src/aarch64/Gget_save_loc.c", 327 "$libunwind_code_dir/src/aarch64/Gglobal.c", 328 "$libunwind_code_dir/src/aarch64/Ginit.c", 329 "$libunwind_code_dir/src/aarch64/Ginit_local.c", 330 "$libunwind_code_dir/src/aarch64/Ginit_remote.c", 331 "$libunwind_code_dir/src/aarch64/Gis_signal_frame.c", 332 "$libunwind_code_dir/src/aarch64/Gregs.c", 333 "$libunwind_code_dir/src/aarch64/Gresume.c", 334 "$libunwind_code_dir/src/aarch64/Gstash_frame.c", 335 "$libunwind_code_dir/src/aarch64/Gstep.c", 336 "$libunwind_code_dir/src/aarch64/Gtrace.c", 337 "$libunwind_code_dir/src/aarch64/Lcreate_addr_space.c", 338 "$libunwind_code_dir/src/aarch64/Lget_proc_info.c", 339 "$libunwind_code_dir/src/aarch64/Lget_save_loc.c", 340 "$libunwind_code_dir/src/aarch64/Lglobal.c", 341 "$libunwind_code_dir/src/aarch64/Linit.c", 342 "$libunwind_code_dir/src/aarch64/Linit_local.c", 343 "$libunwind_code_dir/src/aarch64/Linit_remote.c", 344 "$libunwind_code_dir/src/aarch64/Lis_signal_frame.c", 345 "$libunwind_code_dir/src/aarch64/Lregs.c", 346 "$libunwind_code_dir/src/aarch64/Lresume.c", 347 "$libunwind_code_dir/src/aarch64/Lstash_frame.c", 348 "$libunwind_code_dir/src/aarch64/Lstep.c", 349 "$libunwind_code_dir/src/aarch64/Ltrace.c", 350 "$libunwind_code_dir/src/aarch64/getcontext.S", 351 "$libunwind_code_dir/src/aarch64/is_fpreg.c", 352 "$libunwind_code_dir/src/aarch64/regname.c", 353 "$libunwind_code_dir/src/elf64.c", 354 "$libunwind_code_dir/src/x86_64/Gcreate_addr_space.c", 355 "$libunwind_code_dir/src/x86_64/Gget_proc_info.c", 356 "$libunwind_code_dir/src/x86_64/Gget_save_loc.c", 357 "$libunwind_code_dir/src/x86_64/Gglobal.c", 358 "$libunwind_code_dir/src/x86_64/Ginit.c", 359 "$libunwind_code_dir/src/x86_64/Ginit_local.c", 360 "$libunwind_code_dir/src/x86_64/Ginit_remote.c", 361 "$libunwind_code_dir/src/x86_64/Gos-linux.c", 362 "$libunwind_code_dir/src/x86_64/Gregs.c", 363 "$libunwind_code_dir/src/x86_64/Gresume.c", 364 "$libunwind_code_dir/src/x86_64/Gstash_frame.c", 365 "$libunwind_code_dir/src/x86_64/Gstep.c", 366 "$libunwind_code_dir/src/x86_64/Gtrace.c", 367 "$libunwind_code_dir/src/x86_64/Lcreate_addr_space.c", 368 "$libunwind_code_dir/src/x86_64/Lget_proc_info.c", 369 "$libunwind_code_dir/src/x86_64/Lget_save_loc.c", 370 "$libunwind_code_dir/src/x86_64/Lglobal.c", 371 "$libunwind_code_dir/src/x86_64/Linit.c", 372 "$libunwind_code_dir/src/x86_64/Linit_local.c", 373 "$libunwind_code_dir/src/x86_64/Linit_remote.c", 374 "$libunwind_code_dir/src/x86_64/Los-linux.c", 375 "$libunwind_code_dir/src/x86_64/Lregs.c", 376 "$libunwind_code_dir/src/x86_64/Lresume.c", 377 "$libunwind_code_dir/src/x86_64/Lstash_frame.c", 378 "$libunwind_code_dir/src/x86_64/Lstep.c", 379 "$libunwind_code_dir/src/x86_64/Ltrace.c", 380 "$libunwind_code_dir/src/x86_64/getcontext.S", 381 "$libunwind_code_dir/src/x86_64/is_fpreg.c", 382 "$libunwind_code_dir/src/x86_64/regname.c", 383 "$libunwind_code_dir/src/x86_64/setcontext.S", 384 "$libunwind_code_dir/src/riscv/Gapply_reg_state.c", 385 "$libunwind_code_dir/src/riscv/Gcreate_addr_space.c", 386 "$libunwind_code_dir/src/riscv/getcontext.S", 387 "$libunwind_code_dir/src/riscv/Gget_proc_info.c", 388 "$libunwind_code_dir/src/riscv/Gget_save_loc.c", 389 "$libunwind_code_dir/src/riscv/Gglobal.c", 390 "$libunwind_code_dir/src/riscv/Ginit.c", 391 "$libunwind_code_dir/src/riscv/Ginit_local.c", 392 "$libunwind_code_dir/src/riscv/Ginit_remote.c", 393 "$libunwind_code_dir/src/riscv/Gis_signal_frame.c", 394 "$libunwind_code_dir/src/riscv/Gregs.c", 395 "$libunwind_code_dir/src/riscv/Greg_states_iterate.c", 396 "$libunwind_code_dir/src/riscv/Gresume.c", 397 "$libunwind_code_dir/src/riscv/Gstep.c", 398 "$libunwind_code_dir/src/riscv/is_fpreg.c", 399 "$libunwind_code_dir/src/riscv/Lcreate_addr_space.c", 400 "$libunwind_code_dir/src/riscv/Lget_proc_info.c", 401 "$libunwind_code_dir/src/riscv/Lget_save_loc.c", 402 "$libunwind_code_dir/src/riscv/Lglobal.c", 403 "$libunwind_code_dir/src/riscv/Linit.c", 404 "$libunwind_code_dir/src/riscv/Linit_local.c", 405 "$libunwind_code_dir/src/riscv/Linit_remote.c", 406 "$libunwind_code_dir/src/riscv/Lis_signal_frame.c", 407 "$libunwind_code_dir/src/riscv/Lregs.c", 408 "$libunwind_code_dir/src/riscv/Lreg_states_iterate.c", 409 "$libunwind_code_dir/src/riscv/Lresume.c", 410 "$libunwind_code_dir/src/riscv/Lstep.c", 411 "$libunwind_code_dir/src/riscv/offsets.h", 412 "$libunwind_code_dir/src/riscv/regname.c", 413 "$libunwind_code_dir/src/riscv/setcontext.S", 414 "$libunwind_code_dir/src/riscv/siglongjmp.S", 415 ] 416 417 inputs = [ "//third_party/libunwind/libunwind-1.6.2.tar.gz" ] 418 libunwind_path = rebase_path("${target_gen_dir}", root_build_dir) 419 libunwind_source_path = rebase_path("//third_party/libunwind", root_build_dir) 420 args = [ 421 "--gen-dir", 422 "$libunwind_path", 423 "--source-dir", 424 "$libunwind_source_path", 425 ] 426} 427 428if ("${target_cpu}" == "arm") { 429 arm_source_local = [ 430 "$libunwind_code_dir/src/arm/Lcreate_addr_space.c", 431 "$libunwind_code_dir/src/arm/Lex_tables.c", 432 "$libunwind_code_dir/src/arm/Lget_proc_info.c", 433 "$libunwind_code_dir/src/arm/Lget_save_loc.c", 434 "$libunwind_code_dir/src/arm/Lglobal.c", 435 "$libunwind_code_dir/src/arm/Linit.c", 436 "$libunwind_code_dir/src/arm/Linit_local.c", 437 "$libunwind_code_dir/src/arm/Linit_remote.c", 438 "$libunwind_code_dir/src/arm/Los-linux.c", 439 "$libunwind_code_dir/src/arm/Lregs.c", 440 "$libunwind_code_dir/src/arm/Lresume.c", 441 "$libunwind_code_dir/src/arm/Lstash_frame.c", 442 "$libunwind_code_dir/src/arm/Lstep.c", 443 "$libunwind_code_dir/src/arm/Ltrace.c", 444 ] 445} else if ("${target_cpu}" == "arm64") { 446 arm64_source_local = [ 447 "$libunwind_code_dir/src/aarch64/Lcreate_addr_space.c", 448 "$libunwind_code_dir/src/aarch64/Lget_proc_info.c", 449 "$libunwind_code_dir/src/aarch64/Lget_save_loc.c", 450 "$libunwind_code_dir/src/aarch64/Lglobal.c", 451 "$libunwind_code_dir/src/aarch64/Linit.c", 452 "$libunwind_code_dir/src/aarch64/Linit_local.c", 453 "$libunwind_code_dir/src/aarch64/Linit_remote.c", 454 "$libunwind_code_dir/src/aarch64/Lis_signal_frame.c", 455 "$libunwind_code_dir/src/aarch64/Lregs.c", 456 "$libunwind_code_dir/src/aarch64/Lresume.c", 457 "$libunwind_code_dir/src/aarch64/Lstash_frame.c", 458 "$libunwind_code_dir/src/aarch64/Lstep.c", 459 "$libunwind_code_dir/src/aarch64/Ltrace.c", 460 ] 461} else if ("${target_cpu}" == "riscv64") { 462 riscv64_source_local = [ 463 "$libunwind_code_dir/src/riscv/Lcreate_addr_space.c", 464 "$libunwind_code_dir/src/riscv/Lget_proc_info.c", 465 "$libunwind_code_dir/src/riscv/Lget_save_loc.c", 466 "$libunwind_code_dir/src/riscv/Lglobal.c", 467 "$libunwind_code_dir/src/riscv/Linit.c", 468 "$libunwind_code_dir/src/riscv/Linit_local.c", 469 "$libunwind_code_dir/src/riscv/Linit_remote.c", 470 "$libunwind_code_dir/src/riscv/Lis_signal_frame.c", 471 "$libunwind_code_dir/src/riscv/Lreg_states_iterate.c", 472 "$libunwind_code_dir/src/riscv/Lregs.c", 473 "$libunwind_code_dir/src/riscv/Lresume.c", 474 "$libunwind_code_dir/src/riscv/Lstep.c", 475 ] 476} else if ("${target_cpu}" == "x64" || "${target_cpu}" == "x86_64") { 477 x64_source_local = [ 478 "$libunwind_code_dir/src/x86_64/Lcreate_addr_space.c", 479 "$libunwind_code_dir/src/x86_64/Lget_proc_info.c", 480 "$libunwind_code_dir/src/x86_64/Lget_save_loc.c", 481 "$libunwind_code_dir/src/x86_64/Lglobal.c", 482 "$libunwind_code_dir/src/x86_64/Linit.c", 483 "$libunwind_code_dir/src/x86_64/Linit_local.c", 484 "$libunwind_code_dir/src/x86_64/Linit_remote.c", 485 "$libunwind_code_dir/src/x86_64/Los-linux.c", 486 "$libunwind_code_dir/src/x86_64/Lregs.c", 487 "$libunwind_code_dir/src/x86_64/Lresume.c", 488 "$libunwind_code_dir/src/x86_64/Lstash_frame.c", 489 "$libunwind_code_dir/src/x86_64/Lstep.c", 490 "$libunwind_code_dir/src/x86_64/Ltrace.c", 491 ] 492} 493 494libunwind_la_SOURCES_local = [ 495 "$libunwind_code_dir/src/mi/Ldyn-extract.c", 496 "$libunwind_code_dir/src/mi/Lfind_dynamic_proc_info.c", 497 "$libunwind_code_dir/src/mi/Lget_proc_info_by_ip.c", 498 "$libunwind_code_dir/src/mi/Lget_proc_name.c", 499 "$libunwind_code_dir/src/mi/Lput_dynamic_unwind_info.c", 500 "$libunwind_code_dir/src/mi/Ldestroy_addr_space.c", 501 "$libunwind_code_dir/src/mi/Lget_reg.c", 502 "$libunwind_code_dir/src/mi/Lset_reg.c", 503 "$libunwind_code_dir/src/mi/Lget_fpreg.c", 504 "$libunwind_code_dir/src/mi/Lset_fpreg.c", 505 "$libunwind_code_dir/src/mi/Lset_caching_policy.c", 506 "$libunwind_code_dir/src/mi/Lset_cache_size.c", 507] 508 509remove_sources = [] 510 511ptrace_sources = [ 512 "$libunwind_code_dir/src/ptrace/_UPT_access_fpreg.c", 513 "$libunwind_code_dir/src/ptrace/_UPT_access_mem.c", 514 "$libunwind_code_dir/src/ptrace/_UPT_access_reg.c", 515 "$libunwind_code_dir/src/ptrace/_UPT_accessors.c", 516 "$libunwind_code_dir/src/ptrace/_UPT_create.c", 517 "$libunwind_code_dir/src/ptrace/_UPT_destroy.c", 518 "$libunwind_code_dir/src/ptrace/_UPT_find_proc_info.c", 519 "$libunwind_code_dir/src/ptrace/_UPT_get_dyn_info_list_addr.c", 520 "$libunwind_code_dir/src/ptrace/_UPT_get_proc_name.c", 521 "$libunwind_code_dir/src/ptrace/_UPT_put_unwind_info.c", 522 "$libunwind_code_dir/src/ptrace/_UPT_reg_offset.c", 523 "$libunwind_code_dir/src/ptrace/_UPT_resume.c", 524] 525 526libunwind_la_SOURCES_local_nounwind = [ 527 "$libunwind_code_dir/src/mi/backtrace.c", 528 "$libunwind_code_dir/src/mi/dyn-cancel.c", 529 "$libunwind_code_dir/src/mi/dyn-info-list.c", 530 "$libunwind_code_dir/src/mi/dyn-register.c", 531 "$libunwind_code_dir/src/mi/Ldyn-extract.c", 532 "$libunwind_code_dir/src/mi/Lfind_dynamic_proc_info.c", 533 534 # "$libunwind_code_dir/src/mi/Lget_accessors.c", # miss 535 "$libunwind_code_dir/src/mi/Lget_proc_info_by_ip.c", 536 "$libunwind_code_dir/src/mi/Lget_proc_name.c", 537 "$libunwind_code_dir/src/mi/Lput_dynamic_unwind_info.c", 538 "$libunwind_code_dir/src/mi/Ldestroy_addr_space.c", 539 "$libunwind_code_dir/src/mi/Lget_reg.c", 540 "$libunwind_code_dir/src/mi/Lset_reg.c", 541 "$libunwind_code_dir/src/mi/Lget_fpreg.c", 542 "$libunwind_code_dir/src/mi/Lset_fpreg.c", 543 "$libunwind_code_dir/src/mi/Lset_caching_policy.c", 544 "$libunwind_code_dir/src/mi/Lset_cache_size.c", 545] 546 547libunwind_dwarf_local_la_SOURCES = [ 548 "$libunwind_code_dir/src/dwarf/Lexpr.c", 549 "$libunwind_code_dir/src/dwarf/Lfde.c", 550 "$libunwind_code_dir/src/dwarf/Lparser.c", 551 "$libunwind_code_dir/src/dwarf/Lpe.c", 552 "$libunwind_code_dir/src/dwarf/Lfind_proc_info-lsb.c", 553 "$libunwind_code_dir/src/dwarf/Lfind_unwind_table.c", 554] 555 556# remove local file 557remove_sources += libunwind_la_SOURCES_local_nounwind 558remove_sources += libunwind_dwarf_local_la_SOURCES 559remove_sources += ptrace_sources 560 561config("unwind_config_public") { 562 include_dirs = [ 563 "$libunwind_code_dir/src", 564 "$libunwind_code_dir/include", 565 get_label_info(":libunwind_action", "target_gen_dir") + "/libunwind-1.6.2", 566 ] 567 568 cflags = [ 569 "-D_GNU_SOURCE", 570 "-DHAVE_CONFIG_H", 571 "-DNDEBUG", 572 "-DCC_IS_CLANG", 573 "-fcommon", 574 "-Wno-absolute-value", 575 "-Wno-header-guard", 576 "-Wno-unused-parameter", 577 "-Wno-unused-variable", 578 "-Wno-int-to-pointer-cast", 579 "-Wno-pointer-to-int-cast", 580 "-Wno-error", 581 ] 582 583 if (defined(ohos_lite)) { 584 cflags += [ "-fPIC" ] 585 } 586 587 if (target_cpu == "arm") { 588 include_dirs += [ "$libunwind_code_dir/include/tdep-arm" ] 589 cflags += [ 590 "-Wno-inline-asm", 591 "-Wno-shift-count-overflow", 592 "-Wno-tautological-constant-out-of-range-compare", 593 "-Wno-unused-function", 594 ] 595 } else if (target_cpu == "riscv64") { 596 include_dirs += [ "$libunwind_code_dir/include/tdep-riscv" ] 597 cflags += [ "-Wno-implicit-function-declaration" ] 598 } else if (target_cpu == "arm64") { 599 include_dirs += [ "$libunwind_code_dir/include/tdep-aarch64" ] 600 cflags += [ "-Wno-incompatible-pointer-types" ] 601 } else if (target_cpu == "x64" || target_cpu == "x86_64") { 602 include_dirs += [ "$libunwind_code_dir/include/tdep-x86_64" ] 603 } else if (target_cpu == "mipsel") { 604 include_dirs += [ "$libunwind_code_dir/include/tdep-mips" ] 605 } 606} 607 608config("unwind_config_remote") { 609 cflags = 610 [ "-Wno-format" ] # some debug feature will warning in host x64 build 611} 612 613config("unwind_config_local_only") { 614 defines = [ "UNW_LOCAL_ONLY" ] 615} 616 617config("unwind_config_remote_public") { 618 cflags = [] 619 include_dirs = [] 620 defines = [] 621 622 # this is a host tools build 623 # what means host use remote mode to unwind 624 # with dwarf from stack or coredump or something not real target 625 # There is an exception, we can support local unwind for linux. 626 cflags += [ "-DUNW_REMOTE_ONLY" ] 627 628 cflags += [ "-DBUILD_REMOTE" ] 629 630 cflags += [ "-Wno-sometimes-uninitialized" ] # some value not initialized in 631 # host x64 build 632 cflags += [ "-Wno-int-to-void-pointer-cast" ] 633 634 if (is_linux) { 635 cflags += [ "-g" ] # we need debug info when it crash. 636 } 637 638 defines += [ "build_remote=1" ] 639 defines += [ "target_cpu=${target_cpu}" ] 640 defines += [ "host_toolchain=${host_toolchain}" ] 641 defines += [ "current_toolchain=${current_toolchain}" ] 642 defines += [ "default_toolchain=${default_toolchain}" ] 643} 644 645config("unwind_config_arm") { 646 defines = [ "UNW_TARGET_ARM" ] 647} 648 649config("unwind_config_arm64") { 650 defines = [ "UNW_TARGET_ARM64" ] 651} 652 653config("unwind_config_arm64_opt") { 654 defines = [ "ONLY_RECOVER_GENERAL_REGS" ] 655} 656 657config("unwind_config_x64") { 658 defines = [ "UNW_TARGET_X86_64" ] 659 defines += [ "UNW_TARGET_X86_64_LINUX" ] 660} 661 662config("unwind_config_x86_64") { 663 defines = [ "UNW_TARGET_X86_64" ] 664 defines += [ "UNW_TARGET_X86_64_LINUX" ] 665} 666 667config("unwind_config_riscv64") { 668 defines = [ "UNW_TARGET_RISCV" ] 669} 670 671if (defined(ohos_lite)) { 672 source_set("unwind_source_arm") { 673 configs += [ ":unwind_config_remote" ] 674 public_configs = [ 675 ":unwind_config_public", 676 ":unwind_config_remote_public", 677 ":unwind_config_arm", 678 ] 679 sources = common_source 680 681 # no jump lib 682 arm_source -= [ 683 "$libunwind_code_dir/src/arm/getcontext.S", 684 "$libunwind_code_dir/src/arm/siglongjmp.S", 685 ] 686 sources += arm_source 687 sources -= remove_sources 688 deps = [ ":libunwind_action" ] 689 } 690 691 source_set("unwind_source_arm64") { 692 configs += [ ":unwind_config_remote" ] 693 public_configs = [ 694 ":unwind_config_public", 695 ":unwind_config_remote_public", 696 ":unwind_config_arm64", 697 ] 698 sources = common_source 699 700 arm64_source -= [ "$libunwind_code_dir/src/aarch64/getcontext.S" ] 701 702 sources += arm64_source 703 sources -= remove_sources 704 deps = [ ":libunwind_action" ] 705 } 706 707 source_set("unwind_source_x64") { 708 configs += [ ":unwind_config_remote" ] 709 public_configs = [ 710 ":unwind_config_public", 711 ":unwind_config_remote_public", 712 ":unwind_config_x64", 713 ] 714 sources = common_source 715 716 # no jump lib 717 x64_source -= [ 718 "$libunwind_code_dir/src/x86_64/getcontext.S", 719 "$libunwind_code_dir/src/x86_64/setcontext.S", 720 ] 721 sources += x64_source 722 sources -= remove_sources 723 deps = [ ":libunwind_action" ] 724 } 725 726 source_set("unwind_source_riscv64") { 727 configs += [ ":unwind_config_remote" ] 728 public_configs = [ 729 ":unwind_config_public", 730 ":unwind_config_remote_public", 731 ":unwind_config_riscv64", 732 ] 733 sources = common_source 734 735 # no jump lib 736 riscv64_source -= [ 737 "$libunwind_code_dir/src/riscv/getcontext.S", 738 "$libunwind_code_dir/src/riscv/setcontext.S", 739 ] 740 741 sources += riscv64_source 742 sources -= remove_sources 743 deps = [ ":libunwind_action" ] 744 } 745 746 source_set("unwind_source") { 747 configs += [ ":unwind_config_public" ] 748 sources = common_source 749 750 if (target_cpu == "arm") { 751 # no jump lib 752 arm_source -= [ 753 "$libunwind_code_dir/src/arm/getcontext.S", 754 "$libunwind_code_dir/src/arm/siglongjmp.S", 755 ] 756 757 # as libc++ is static linked with libunwind.a 758 # we remove the Gstep.c for duplicated symbol violation 759 sources += arm_source 760 public_configs = [ ":unwind_config_arm" ] 761 } else if (target_cpu == "arm64") { 762 sources += arm64_source 763 public_configs = [ ":unwind_config_arm64" ] 764 } else if (target_cpu == "riscv64") { 765 sources += riscv64_source 766 public_configs = [ ":unwind_config_riscv64" ] 767 } else if (target_cpu == "x64") { 768 sources += x64_source 769 public_configs = [ ":unwind_config_x64" ] 770 } else if (target_cpu == "x86_64") { 771 sources += x64_source 772 public_configs = [ ":unwind_config_x86_64" ] 773 } 774 deps = [ ":libunwind_action" ] 775 } 776 777 shared_library("libunwind") { 778 deps = [ 779 ":libunwind_action", 780 ":unwind_source", 781 ] 782 public_configs = [ ":unwind_config_public" ] 783 } 784 785 static_library("libunwind_local") { 786 sources = common_source 787 public_configs = [ ":unwind_config_public" ] 788 public_configs += [ ":unwind_config_local_only" ] 789 790 if (target_cpu == "arm") { 791 sources += arm_source 792 sources -= arm_source_local 793 public_configs += [ ":unwind_config_arm" ] 794 } else if (target_cpu == "arm64") { 795 sources += arm64_source 796 sources -= arm64_source_local 797 public_configs += [ ":unwind_config_arm64" ] 798 } else if (target_cpu == "riscv64") { 799 sources += riscv64_source 800 sources -= riscv64_source_local 801 public_configs += [ ":unwind_config_riscv64" ] 802 } else if (target_cpu == "x64") { 803 sources += x64_source 804 sources -= x64_source_local 805 public_configs += [ ":unwind_config_x64" ] 806 } else if (target_cpu == "x86_64") { 807 sources += x64_source 808 sources -= x64_source_local 809 public_configs += [ ":unwind_config_x86_64" ] 810 } 811 812 sources -= libunwind_dwarf_local_la_SOURCES 813 sources -= libunwind_la_SOURCES_local 814 sources -= ptrace_sources 815 cflags = [ 816 "-DHAS_ARK_FRAME", 817 "-DPARSE_BUILD_ID", 818 "-DUNW_LOCAL_ONLY", 819 "-DNO_RESERVE_CACHE", 820 ] 821 deps = [ ":libunwind_action" ] 822 } 823} else { 824 ohos_source_set("unwind_source_arm") { 825 configs = [ ":unwind_config_remote" ] 826 public_configs = [ 827 ":unwind_config_public", 828 ":unwind_config_remote_public", 829 ":unwind_config_arm", 830 ] 831 sources = common_source 832 833 # no jump lib 834 arm_source -= [ 835 "$libunwind_code_dir/src/arm/getcontext.S", 836 "$libunwind_code_dir/src/arm/siglongjmp.S", 837 ] 838 sources += arm_source 839 sources -= remove_sources 840 deps = [ ":libunwind_action" ] 841 } 842 843 ohos_source_set("unwind_source_arm64") { 844 configs = [ ":unwind_config_remote" ] 845 public_configs = [ 846 ":unwind_config_public", 847 ":unwind_config_remote_public", 848 ":unwind_config_arm64", 849 ] 850 sources = common_source 851 852 arm64_source -= [ "$libunwind_code_dir/src/aarch64/getcontext.S" ] 853 854 sources += arm64_source 855 sources -= remove_sources 856 deps = [ ":libunwind_action" ] 857 } 858 859 ohos_source_set("unwind_source_arm64_opt") { 860 configs = [ ":unwind_config_remote" ] 861 public_configs = [ 862 ":unwind_config_public", 863 ":unwind_config_remote_public", 864 ":unwind_config_arm64", 865 ":unwind_config_arm64_opt", 866 ] 867 sources = common_source 868 869 arm64_source -= [ "$libunwind_code_dir/src/aarch64/getcontext.S" ] 870 871 sources += arm64_source 872 sources -= remove_sources 873 deps = [ ":libunwind_action" ] 874 } 875 876 ohos_source_set("unwind_source_x64") { 877 configs = [ ":unwind_config_remote" ] 878 public_configs = [ 879 ":unwind_config_public", 880 ":unwind_config_remote_public", 881 ":unwind_config_x64", 882 ] 883 sources = common_source 884 885 # no jump lib 886 x64_source -= [ 887 "$libunwind_code_dir/src/x86_64/getcontext.S", 888 "$libunwind_code_dir/src/x86_64/setcontext.S", 889 ] 890 sources += x64_source 891 sources -= remove_sources 892 deps = [ ":libunwind_action" ] 893 } 894 895 ohos_source_set("unwind_source_x86_64") { 896 configs = [ ":unwind_config_remote" ] 897 public_configs = [ 898 ":unwind_config_public", 899 ":unwind_config_remote_public", 900 ":unwind_config_x86_64", 901 ] 902 sources = common_source 903 904 # no jump lib 905 x64_source -= [ 906 "$libunwind_code_dir/src/x86_64/getcontext.S", 907 "$libunwind_code_dir/src/x86_64/setcontext.S", 908 ] 909 sources += x64_source 910 sources -= remove_sources 911 deps = [ ":libunwind_action" ] 912 } 913 914 ohos_source_set("unwind_source_riscv64") { 915 configs = [ ":unwind_config_remote" ] 916 public_configs = [ 917 ":unwind_config_public", 918 ":unwind_config_remote_public", 919 ":unwind_config_riscv64", 920 ] 921 sources = common_source 922 923 # no jump lib 924 riscv64_source -= [ 925 "$libunwind_code_dir/src/riscv/getcontext.S", 926 "$libunwind_code_dir/src/riscv/setcontext.S", 927 ] 928 929 sources += riscv64_source 930 sources -= remove_sources 931 deps = [ ":libunwind_action" ] 932 } 933 934 ohos_source_set("unwind_source") { 935 configs = [ ":unwind_config_public" ] 936 sources = common_source 937 938 if (target_cpu == "riscv64") { 939 # as libc++ is static linked with libunwind.a 940 # we remove the Gstep.c for duplicated symbol violation 941 sources += riscv64_source 942 public_configs = [ ":unwind_config_riscv64" ] 943 } else if (target_cpu == "arm") { 944 sources += arm_source 945 public_configs = [ ":unwind_config_arm" ] 946 } else if (target_cpu == "arm64") { 947 sources += arm64_source 948 public_configs = [ ":unwind_config_arm64" ] 949 } else if (target_cpu == "x64") { 950 sources += x64_source 951 public_configs = [ ":unwind_config_x64" ] 952 } else if (target_cpu == "x86_64") { 953 sources += x64_source 954 public_configs = [ ":unwind_config_x86_64" ] 955 } 956 957 cflags = [ 958 "-DHAS_ARK_FRAME", 959 "-DPARSE_BUILD_ID", 960 "-DPARSE_ELF_IN_HAP", 961 ] 962 deps = [ ":libunwind_action" ] 963 subsystem_name = "thirdparty" 964 part_name = "libunwind" 965 } 966 967 ohos_shared_library("libunwind") { 968 deps = [ 969 ":libunwind_action", 970 ":unwind_source", 971 ] 972 install_images = [ 973 "system", 974 "updater", 975 ] 976 public_configs = [ ":unwind_config_public" ] 977 innerapi_tags = [ 978 "platformsdk", 979 "chipsetsdk", 980 ] 981 subsystem_name = "thirdparty" 982 part_name = "libunwind" 983 } 984 985 # for internal use only, the interfaces may have compatible issue 986 ohos_static_library("libunwind_local") { 987 sources = common_source 988 public_configs = [ ":unwind_config_public" ] 989 public_configs += [ ":unwind_config_local_only" ] 990 991 if (target_cpu == "arm") { 992 sources += arm_source 993 sources -= arm_source_local 994 public_configs += [ ":unwind_config_arm" ] 995 } else if (target_cpu == "arm64") { 996 sources += arm64_source 997 sources -= arm64_source_local 998 public_configs += [ ":unwind_config_arm64" ] 999 } else if (target_cpu == "riscv64") { 1000 sources += riscv64_source 1001 sources -= riscv64_source_local 1002 public_configs += [ ":unwind_config_riscv64" ] 1003 } else if (target_cpu == "x64") { 1004 sources += x64_source 1005 sources -= x64_source_local 1006 public_configs += [ ":unwind_config_x64" ] 1007 } else if (target_cpu == "x86_64") { 1008 sources += x64_source 1009 sources -= x64_source_local 1010 public_configs += [ ":unwind_config_x86_64" ] 1011 } 1012 1013 sources -= libunwind_dwarf_local_la_SOURCES 1014 sources -= libunwind_la_SOURCES_local 1015 sources -= ptrace_sources 1016 deps = [ ":libunwind_action" ] 1017 cflags = [ 1018 "-DHAS_ARK_FRAME", 1019 "-DPARSE_BUILD_ID", 1020 "-DUNW_LOCAL_ONLY", 1021 "-DNO_RESERVE_CACHE", 1022 "-DHAVE_PIPE2", 1023 ] 1024 1025 subsystem_name = "thirdparty" 1026 part_name = "libunwind" 1027 } 1028} 1029