1fb726d48Sopenharmony_ci# Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. 2fb726d48Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3fb726d48Sopenharmony_ci# you may not use this file except in compliance with the License. 4fb726d48Sopenharmony_ci# You may obtain a copy of the License at 5fb726d48Sopenharmony_ci# 6fb726d48Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7fb726d48Sopenharmony_ci# 8fb726d48Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9fb726d48Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10fb726d48Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11fb726d48Sopenharmony_ci# See the License for the specific language governing permissions and 12fb726d48Sopenharmony_ci# limitations under the License. 13fb726d48Sopenharmony_ci 14fb726d48Sopenharmony_ciimport("//build/ohos.gni") 15fb726d48Sopenharmony_cicommon_source = [ 16fb726d48Sopenharmony_ci "libunwind/src/dwarf/Gexpr.c", 17fb726d48Sopenharmony_ci "libunwind/src/dwarf/Gfde.c", 18fb726d48Sopenharmony_ci "libunwind/src/dwarf/Gfind_proc_info-lsb.c", 19fb726d48Sopenharmony_ci "libunwind/src/dwarf/Gfind_unwind_table.c", 20fb726d48Sopenharmony_ci "libunwind/src/dwarf/global.c", 21fb726d48Sopenharmony_ci "libunwind/src/dwarf/Gparser.c", 22fb726d48Sopenharmony_ci "libunwind/src/dwarf/Gpe.c", 23fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lexpr.c", 24fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lfde.c", 25fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lfind_proc_info-lsb.c", 26fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lfind_unwind_table.c", 27fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lparser.c", 28fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lpe.c", 29fb726d48Sopenharmony_ci "libunwind/src/mi/backtrace.c", 30fb726d48Sopenharmony_ci "libunwind/src/mi/dyn-cancel.c", 31fb726d48Sopenharmony_ci "libunwind/src/mi/dyn-info-list.c", 32fb726d48Sopenharmony_ci "libunwind/src/mi/dyn-register.c", 33fb726d48Sopenharmony_ci "libunwind/src/mi/flush_cache.c", 34fb726d48Sopenharmony_ci "libunwind/src/mi/Gdestroy_addr_space.c", 35fb726d48Sopenharmony_ci "libunwind/src/mi/Gdyn-extract.c", 36fb726d48Sopenharmony_ci "libunwind/src/mi/Gdyn-remote.c", 37fb726d48Sopenharmony_ci "libunwind/src/mi/Gfind_dynamic_proc_info.c", 38fb726d48Sopenharmony_ci "libunwind/src/mi/Gget_accessors.c", 39fb726d48Sopenharmony_ci "libunwind/src/mi/Gget_fpreg.c", 40fb726d48Sopenharmony_ci "libunwind/src/mi/Gget_proc_info_by_ip.c", 41fb726d48Sopenharmony_ci "libunwind/src/mi/Gget_proc_name.c", 42fb726d48Sopenharmony_ci "libunwind/src/mi/Gget_reg.c", 43fb726d48Sopenharmony_ci "libunwind/src/mi/Gput_dynamic_unwind_info.c", 44fb726d48Sopenharmony_ci "libunwind/src/mi/Gset_cache_size.c", 45fb726d48Sopenharmony_ci "libunwind/src/mi/Gset_caching_policy.c", 46fb726d48Sopenharmony_ci "libunwind/src/mi/Gset_fpreg.c", 47fb726d48Sopenharmony_ci "libunwind/src/mi/Gset_reg.c", 48fb726d48Sopenharmony_ci "libunwind/src/mi/init.c", 49fb726d48Sopenharmony_ci "libunwind/src/mi/Ldestroy_addr_space.c", 50fb726d48Sopenharmony_ci "libunwind/src/mi/Ldyn-extract.c", 51fb726d48Sopenharmony_ci "libunwind/src/mi/Lfind_dynamic_proc_info.c", 52fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_fpreg.c", 53fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_proc_info_by_ip.c", 54fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_proc_name.c", 55fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_reg.c", 56fb726d48Sopenharmony_ci "libunwind/src/mi/Lput_dynamic_unwind_info.c", 57fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_cache_size.c", 58fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_caching_policy.c", 59fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_fpreg.c", 60fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_reg.c", 61fb726d48Sopenharmony_ci "libunwind/src/mi/mempool.c", 62fb726d48Sopenharmony_ci "libunwind/src/mi/strerror.c", 63fb726d48Sopenharmony_ci "libunwind/src/os-linux.c", 64fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_access_fpreg.c", 65fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_access_mem.c", 66fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_access_reg.c", 67fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_accessors.c", 68fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_create.c", 69fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_destroy.c", 70fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_find_proc_info.c", 71fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_get_proc_name.c", 72fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_put_unwind_info.c", 73fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_reg_offset.c", 74fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_resume.c", 75fb726d48Sopenharmony_ci] 76fb726d48Sopenharmony_ci 77fb726d48Sopenharmony_ci# as libc++ is static linked with libunwind.a 78fb726d48Sopenharmony_ci# we remove the Gstep.c for duplicated symbol violation 79fb726d48Sopenharmony_ciif (target_cpu == "arm") { 80fb726d48Sopenharmony_ci arm_source = [ 81fb726d48Sopenharmony_ci "libunwind/src/arm/Gapply_reg_state.c", 82fb726d48Sopenharmony_ci "libunwind/src/arm/Gcreate_addr_space.c", 83fb726d48Sopenharmony_ci "libunwind/src/arm/Gex_tables.c", 84fb726d48Sopenharmony_ci "libunwind/src/arm/Gget_proc_info.c", 85fb726d48Sopenharmony_ci "libunwind/src/arm/Gget_save_loc.c", 86fb726d48Sopenharmony_ci "libunwind/src/arm/Gglobal.c", 87fb726d48Sopenharmony_ci "libunwind/src/arm/Ginit.c", 88fb726d48Sopenharmony_ci "libunwind/src/arm/Ginit_local.c", 89fb726d48Sopenharmony_ci "libunwind/src/arm/Ginit_remote.c", 90fb726d48Sopenharmony_ci "libunwind/src/arm/Gos-linux.c", 91fb726d48Sopenharmony_ci "libunwind/src/arm/Greg_states_iterate.c", 92fb726d48Sopenharmony_ci "libunwind/src/arm/Gregs.c", 93fb726d48Sopenharmony_ci "libunwind/src/arm/Gresume.c", 94fb726d48Sopenharmony_ci "libunwind/src/arm/Gstash_frame.c", 95fb726d48Sopenharmony_ci "libunwind/src/arm/Gstep.c", 96fb726d48Sopenharmony_ci "libunwind/src/arm/Gtrace.c", 97fb726d48Sopenharmony_ci "libunwind/src/arm/Lcreate_addr_space.c", 98fb726d48Sopenharmony_ci "libunwind/src/arm/Lex_tables.c", 99fb726d48Sopenharmony_ci "libunwind/src/arm/Lget_proc_info.c", 100fb726d48Sopenharmony_ci "libunwind/src/arm/Lget_save_loc.c", 101fb726d48Sopenharmony_ci "libunwind/src/arm/Lglobal.c", 102fb726d48Sopenharmony_ci "libunwind/src/arm/Linit.c", 103fb726d48Sopenharmony_ci "libunwind/src/arm/Linit_local.c", 104fb726d48Sopenharmony_ci "libunwind/src/arm/Linit_remote.c", 105fb726d48Sopenharmony_ci "libunwind/src/arm/Los-linux.c", 106fb726d48Sopenharmony_ci "libunwind/src/arm/Lregs.c", 107fb726d48Sopenharmony_ci "libunwind/src/arm/Lresume.c", 108fb726d48Sopenharmony_ci "libunwind/src/arm/Lstash_frame.c", 109fb726d48Sopenharmony_ci "libunwind/src/arm/Lstep.c", 110fb726d48Sopenharmony_ci "libunwind/src/arm/Ltrace.c", 111fb726d48Sopenharmony_ci "libunwind/src/arm/getcontext.S", 112fb726d48Sopenharmony_ci "libunwind/src/arm/is_fpreg.c", 113fb726d48Sopenharmony_ci "libunwind/src/arm/regname.c", 114fb726d48Sopenharmony_ci "libunwind/src/arm/siglongjmp.S", 115fb726d48Sopenharmony_ci "libunwind/src/elf32.c", 116fb726d48Sopenharmony_ci ] 117fb726d48Sopenharmony_ci} 118fb726d48Sopenharmony_ciif (target_cpu == "arm64") { 119fb726d48Sopenharmony_ci arm64_source = [ 120fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gcreate_addr_space.c", 121fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gget_proc_info.c", 122fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gget_save_loc.c", 123fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gglobal.c", 124fb726d48Sopenharmony_ci "libunwind/src/aarch64/Ginit.c", 125fb726d48Sopenharmony_ci "libunwind/src/aarch64/Ginit_local.c", 126fb726d48Sopenharmony_ci "libunwind/src/aarch64/Ginit_remote.c", 127fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gis_signal_frame.c", 128fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gregs.c", 129fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gresume.c", 130fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gstash_frame.c", 131fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gstep.c", 132fb726d48Sopenharmony_ci "libunwind/src/aarch64/Gtrace.c", 133fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lcreate_addr_space.c", 134fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lget_proc_info.c", 135fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lget_save_loc.c", 136fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lglobal.c", 137fb726d48Sopenharmony_ci "libunwind/src/aarch64/Linit.c", 138fb726d48Sopenharmony_ci "libunwind/src/aarch64/Linit_local.c", 139fb726d48Sopenharmony_ci "libunwind/src/aarch64/Linit_remote.c", 140fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lis_signal_frame.c", 141fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lregs.c", 142fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lresume.c", 143fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lstash_frame.c", 144fb726d48Sopenharmony_ci "libunwind/src/aarch64/Lstep.c", 145fb726d48Sopenharmony_ci "libunwind/src/aarch64/Ltrace.c", 146fb726d48Sopenharmony_ci "libunwind/src/aarch64/getcontext.S", 147fb726d48Sopenharmony_ci "libunwind/src/aarch64/is_fpreg.c", 148fb726d48Sopenharmony_ci "libunwind/src/aarch64/regname.c", 149fb726d48Sopenharmony_ci "libunwind/src/elf64.c", 150fb726d48Sopenharmony_ci ] 151fb726d48Sopenharmony_ci} 152fb726d48Sopenharmony_ci 153fb726d48Sopenharmony_ciif (target_cpu == "x64") { 154fb726d48Sopenharmony_ci x64_source = [ 155fb726d48Sopenharmony_ci "libunwind/src/elf64.c", 156fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gcreate_addr_space.c", 157fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gget_proc_info.c", 158fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gget_save_loc.c", 159fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gglobal.c", 160fb726d48Sopenharmony_ci "libunwind/src/x86_64/Ginit.c", 161fb726d48Sopenharmony_ci "libunwind/src/x86_64/Ginit_local.c", 162fb726d48Sopenharmony_ci "libunwind/src/x86_64/Ginit_remote.c", 163fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gos-linux.c", 164fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gregs.c", 165fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gresume.c", 166fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gstash_frame.c", 167fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gstep.c", 168fb726d48Sopenharmony_ci "libunwind/src/x86_64/Gtrace.c", 169fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lcreate_addr_space.c", 170fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lget_proc_info.c", 171fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lget_save_loc.c", 172fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lglobal.c", 173fb726d48Sopenharmony_ci "libunwind/src/x86_64/Linit.c", 174fb726d48Sopenharmony_ci "libunwind/src/x86_64/Linit_local.c", 175fb726d48Sopenharmony_ci "libunwind/src/x86_64/Linit_remote.c", 176fb726d48Sopenharmony_ci "libunwind/src/x86_64/Los-linux.c", 177fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lregs.c", 178fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lresume.c", 179fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lstash_frame.c", 180fb726d48Sopenharmony_ci "libunwind/src/x86_64/Lstep.c", 181fb726d48Sopenharmony_ci "libunwind/src/x86_64/Ltrace.c", 182fb726d48Sopenharmony_ci "libunwind/src/x86_64/getcontext.S", 183fb726d48Sopenharmony_ci "libunwind/src/x86_64/is_fpreg.c", 184fb726d48Sopenharmony_ci "libunwind/src/x86_64/regname.c", 185fb726d48Sopenharmony_ci "libunwind/src/x86_64/setcontext.S", 186fb726d48Sopenharmony_ci ] 187fb726d48Sopenharmony_ci} 188fb726d48Sopenharmony_ciremove_sources = [] 189fb726d48Sopenharmony_ci 190fb726d48Sopenharmony_ciptrace_sources = [ 191fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_access_fpreg.c", 192fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_access_mem.c", 193fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_access_reg.c", 194fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_accessors.c", 195fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_create.c", 196fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_destroy.c", 197fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_find_proc_info.c", 198fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_get_dyn_info_list_addr.c", 199fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_get_proc_name.c", 200fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_put_unwind_info.c", 201fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_reg_offset.c", 202fb726d48Sopenharmony_ci "libunwind/src/ptrace/_UPT_resume.c", 203fb726d48Sopenharmony_ci] 204fb726d48Sopenharmony_ci 205fb726d48Sopenharmony_cilibunwind_la_SOURCES_local_nounwind = [ 206fb726d48Sopenharmony_ci "libunwind/src/mi/backtrace.c", 207fb726d48Sopenharmony_ci "libunwind/src/mi/dyn-cancel.c", 208fb726d48Sopenharmony_ci "libunwind/src/mi/dyn-info-list.c", 209fb726d48Sopenharmony_ci "libunwind/src/mi/dyn-register.c", 210fb726d48Sopenharmony_ci "libunwind/src/mi/Ldyn-extract.c", 211fb726d48Sopenharmony_ci "libunwind/src/mi/Lfind_dynamic_proc_info.c", 212fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_proc_info_by_ip.c", 213fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_proc_name.c", 214fb726d48Sopenharmony_ci "libunwind/src/mi/Lput_dynamic_unwind_info.c", 215fb726d48Sopenharmony_ci "libunwind/src/mi/Ldestroy_addr_space.c", 216fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_reg.c", 217fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_reg.c", 218fb726d48Sopenharmony_ci "libunwind/src/mi/Lget_fpreg.c", 219fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_fpreg.c", 220fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_caching_policy.c", 221fb726d48Sopenharmony_ci "libunwind/src/mi/Lset_cache_size.c", 222fb726d48Sopenharmony_ci] 223fb726d48Sopenharmony_ci 224fb726d48Sopenharmony_cilibunwind_dwarf_local_la_SOURCES = [ 225fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lexpr.c", 226fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lfde.c", 227fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lparser.c", 228fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lpe.c", 229fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lfind_proc_info-lsb.c", 230fb726d48Sopenharmony_ci "libunwind/src/dwarf/Lfind_unwind_table.c", 231fb726d48Sopenharmony_ci] 232fb726d48Sopenharmony_ci 233fb726d48Sopenharmony_ci# remove local file 234fb726d48Sopenharmony_ciremove_sources += libunwind_la_SOURCES_local_nounwind 235fb726d48Sopenharmony_ciremove_sources += libunwind_dwarf_local_la_SOURCES 236fb726d48Sopenharmony_ciremove_sources += ptrace_sources 237fb726d48Sopenharmony_ci 238fb726d48Sopenharmony_ciif (is_mingw) { 239fb726d48Sopenharmony_ci common_source += [ "libunwind/src/mingw/pal-single-threaded.c" ] 240fb726d48Sopenharmony_ci} 241fb726d48Sopenharmony_ci 242fb726d48Sopenharmony_ciconfig("unwind_config_public") { 243fb726d48Sopenharmony_ci include_dirs = [ 244fb726d48Sopenharmony_ci "libunwind/src", 245fb726d48Sopenharmony_ci "libunwind/include", 246fb726d48Sopenharmony_ci ] 247fb726d48Sopenharmony_ci 248fb726d48Sopenharmony_ci cflags = [ 249fb726d48Sopenharmony_ci "-D_GNU_SOURCE", 250fb726d48Sopenharmony_ci "-DHAVE_CONFIG_H", 251fb726d48Sopenharmony_ci "-DCC_IS_CLANG", 252fb726d48Sopenharmony_ci "-fcommon", 253fb726d48Sopenharmony_ci "-Werror", 254fb726d48Sopenharmony_ci "-Wno-absolute-value", 255fb726d48Sopenharmony_ci "-Wno-header-guard", 256fb726d48Sopenharmony_ci "-Wno-unused-parameter", 257fb726d48Sopenharmony_ci "-Wno-unused-variable", 258fb726d48Sopenharmony_ci "-Wno-unused-result", 259fb726d48Sopenharmony_ci "-Wno-tautological-constant-out-of-range-compare", 260fb726d48Sopenharmony_ci "-Wno-bitfield-constant-conversion", 261fb726d48Sopenharmony_ci ] 262fb726d48Sopenharmony_ci if (use_wasm) { 263fb726d48Sopenharmony_ci cflags += [ "-Wno-incompatible-pointer-types" ] 264fb726d48Sopenharmony_ci } 265fb726d48Sopenharmony_ci if (is_mingw) { 266fb726d48Sopenharmony_ci cflags += [ 267fb726d48Sopenharmony_ci "-Wno-attributes", 268fb726d48Sopenharmony_ci "-Wno-pointer-to-int-cast", 269fb726d48Sopenharmony_ci "-Wno-implicit-function-declaration", 270fb726d48Sopenharmony_ci ] 271fb726d48Sopenharmony_ci } 272fb726d48Sopenharmony_ci 273fb726d48Sopenharmony_ci if (defined(ohos_lite)) { 274fb726d48Sopenharmony_ci cflags += [ "-fPIC" ] 275fb726d48Sopenharmony_ci } 276fb726d48Sopenharmony_ci 277fb726d48Sopenharmony_ci if (target_cpu == "arm") { 278fb726d48Sopenharmony_ci include_dirs += [ "libunwind/include/tdep-arm" ] 279fb726d48Sopenharmony_ci cflags += [ 280fb726d48Sopenharmony_ci "-Wno-inline-asm", 281fb726d48Sopenharmony_ci "-Wno-shift-count-overflow", 282fb726d48Sopenharmony_ci "-Wno-tautological-constant-out-of-range-compare", 283fb726d48Sopenharmony_ci "-Wno-unused-function", 284fb726d48Sopenharmony_ci ] 285fb726d48Sopenharmony_ci } else if (target_cpu == "arm64") { 286fb726d48Sopenharmony_ci include_dirs += [ "libunwind/include/tdep-aarch64" ] 287fb726d48Sopenharmony_ci cflags += [ "-Wno-incompatible-pointer-types" ] 288fb726d48Sopenharmony_ci } else if (target_cpu == "x64") { 289fb726d48Sopenharmony_ci include_dirs += [ "libunwind/include/tdep-x86_64" ] 290fb726d48Sopenharmony_ci } 291fb726d48Sopenharmony_ci} 292fb726d48Sopenharmony_ciconfig("unwind_config_remote") { 293fb726d48Sopenharmony_ci cflags = 294fb726d48Sopenharmony_ci [ "-Wno-format" ] # some debug feature will warning in host x64 build 295fb726d48Sopenharmony_ci} 296fb726d48Sopenharmony_ciconfig("unwind_config_remote_public") { 297fb726d48Sopenharmony_ci cflags = [] 298fb726d48Sopenharmony_ci include_dirs = [] 299fb726d48Sopenharmony_ci defines = [] 300fb726d48Sopenharmony_ci 301fb726d48Sopenharmony_ci # this is a host tools build 302fb726d48Sopenharmony_ci # what means host use remote mode to unwind 303fb726d48Sopenharmony_ci # with dwarf from stack or coredump or something not real target 304fb726d48Sopenharmony_ci # There is an exception, we can support local unwind for linux. 305fb726d48Sopenharmony_ci cflags += [ "-DUNW_REMOTE_ONLY" ] 306fb726d48Sopenharmony_ci 307fb726d48Sopenharmony_ci cflags += [ "-DBUILD_REMOTE" ] 308fb726d48Sopenharmony_ci 309fb726d48Sopenharmony_ci cflags += [ "-Wno-sometimes-uninitialized" ] # some value not initialized in 310fb726d48Sopenharmony_ci # host x64 build 311fb726d48Sopenharmony_ci cflags += [ "-Wno-int-to-void-pointer-cast" ] 312fb726d48Sopenharmony_ci 313fb726d48Sopenharmony_ci if (is_mingw) { 314fb726d48Sopenharmony_ci include_dirs += [ "include/mingw" ] 315fb726d48Sopenharmony_ci cflags += [ "-DMINGW" ] 316fb726d48Sopenharmony_ci } else if (is_linux) { 317fb726d48Sopenharmony_ci cflags += [ "-g" ] # we need debug info when it crash. 318fb726d48Sopenharmony_ci } 319fb726d48Sopenharmony_ci 320fb726d48Sopenharmony_ci defines += [ "build_remote=1" ] 321fb726d48Sopenharmony_ci defines += [ "target_cpu=${target_cpu}" ] 322fb726d48Sopenharmony_ci} 323fb726d48Sopenharmony_ci 324fb726d48Sopenharmony_ciconfig("unwind_config_arm") { 325fb726d48Sopenharmony_ci defines = [ "UNW_TARGET_ARM" ] 326fb726d48Sopenharmony_ci} 327fb726d48Sopenharmony_ci 328fb726d48Sopenharmony_ciconfig("unwind_config_arm64") { 329fb726d48Sopenharmony_ci defines = [ "UNW_TARGET_ARM64" ] 330fb726d48Sopenharmony_ci} 331fb726d48Sopenharmony_ci 332fb726d48Sopenharmony_ciconfig("unwind_config_x64") { 333fb726d48Sopenharmony_ci defines = [ "UNW_TARGET_X86_64" ] 334fb726d48Sopenharmony_ci defines += [ "UNW_TARGET_X86_64_LINUX" ] 335fb726d48Sopenharmony_ci} 336fb726d48Sopenharmony_ciif (target_cpu == "arm") { 337fb726d48Sopenharmony_ci ohos_source_set("unwind_source_arm") { 338fb726d48Sopenharmony_ci subsystem_name = "developtools" 339fb726d48Sopenharmony_ci part_name = "smartperf_host" 340fb726d48Sopenharmony_ci configs += [ ":unwind_config_remote" ] 341fb726d48Sopenharmony_ci public_configs = [ 342fb726d48Sopenharmony_ci ":unwind_config_public", 343fb726d48Sopenharmony_ci ":unwind_config_remote_public", 344fb726d48Sopenharmony_ci ":unwind_config_arm", 345fb726d48Sopenharmony_ci ] 346fb726d48Sopenharmony_ci sources = common_source 347fb726d48Sopenharmony_ci 348fb726d48Sopenharmony_ci # there is a main function in this file 349fb726d48Sopenharmony_ci # for a lib we dont need this 350fb726d48Sopenharmony_ci arm_source -= [ "src/arm/gen-offsets.c" ] 351fb726d48Sopenharmony_ci 352fb726d48Sopenharmony_ci # no jump lib 353fb726d48Sopenharmony_ci arm_source -= [ 354fb726d48Sopenharmony_ci "libunwind/src/arm/getcontext.S", 355fb726d48Sopenharmony_ci "libunwind/src/arm/siglongjmp.S", 356fb726d48Sopenharmony_ci ] 357fb726d48Sopenharmony_ci sources += arm_source 358fb726d48Sopenharmony_ci sources -= remove_sources 359fb726d48Sopenharmony_ci } 360fb726d48Sopenharmony_ci} 361fb726d48Sopenharmony_ciif (target_cpu == "arm64") { 362fb726d48Sopenharmony_ci ohos_source_set("unwind_source_arm64") { 363fb726d48Sopenharmony_ci subsystem_name = "developtools" 364fb726d48Sopenharmony_ci part_name = "smartperf_host" 365fb726d48Sopenharmony_ci configs += [ ":unwind_config_remote" ] 366fb726d48Sopenharmony_ci public_configs = [ 367fb726d48Sopenharmony_ci ":unwind_config_public", 368fb726d48Sopenharmony_ci ":unwind_config_remote_public", 369fb726d48Sopenharmony_ci ":unwind_config_arm64", 370fb726d48Sopenharmony_ci ] 371fb726d48Sopenharmony_ci sources = common_source 372fb726d48Sopenharmony_ci arm64_source -= [ "libunwind/src/aarch64/getcontext.S" ] 373fb726d48Sopenharmony_ci 374fb726d48Sopenharmony_ci sources += arm64_source 375fb726d48Sopenharmony_ci sources -= remove_sources 376fb726d48Sopenharmony_ci } 377fb726d48Sopenharmony_ci} 378fb726d48Sopenharmony_ciif (target_cpu == "x86") { 379fb726d48Sopenharmony_ci ohos_source_set("unwind_source_x64") { 380fb726d48Sopenharmony_ci subsystem_name = "developtools" 381fb726d48Sopenharmony_ci part_name = "smartperf_host" 382fb726d48Sopenharmony_ci configs += [ ":unwind_config_remote" ] 383fb726d48Sopenharmony_ci public_configs = [ 384fb726d48Sopenharmony_ci ":unwind_config_public", 385fb726d48Sopenharmony_ci ":unwind_config_remote_public", 386fb726d48Sopenharmony_ci ":unwind_config_x64", 387fb726d48Sopenharmony_ci ] 388fb726d48Sopenharmony_ci sources = common_source 389fb726d48Sopenharmony_ci 390fb726d48Sopenharmony_ci # no jump lib 391fb726d48Sopenharmony_ci x64_source -= [ 392fb726d48Sopenharmony_ci "libunwind/src/x86_64/getcontext.S", 393fb726d48Sopenharmony_ci "libunwind/src/x86_64/setcontext.S", 394fb726d48Sopenharmony_ci ] 395fb726d48Sopenharmony_ci sources += x64_source 396fb726d48Sopenharmony_ci sources -= remove_sources 397fb726d48Sopenharmony_ci } 398fb726d48Sopenharmony_ci} 399fb726d48Sopenharmony_ciohos_source_set("unwind_source") { 400fb726d48Sopenharmony_ci subsystem_name = "developtools" 401fb726d48Sopenharmony_ci part_name = "smartperf_host" 402fb726d48Sopenharmony_ci configs += [ ":unwind_config_public" ] 403fb726d48Sopenharmony_ci sources = common_source 404fb726d48Sopenharmony_ci if (target_cpu == "arm") { 405fb726d48Sopenharmony_ci # as libc++ is static linked with libunwind.a 406fb726d48Sopenharmony_ci # we remove the Gstep.c for duplicated symbol violation 407fb726d48Sopenharmony_ci sources += arm_source 408fb726d48Sopenharmony_ci public_configs = [ ":unwind_config_arm" ] 409fb726d48Sopenharmony_ci } else if (target_cpu == "arm64") { 410fb726d48Sopenharmony_ci sources += arm64_source 411fb726d48Sopenharmony_ci public_configs = [ ":unwind_config_arm64" ] 412fb726d48Sopenharmony_ci } else if (target_cpu == "x64") { 413fb726d48Sopenharmony_ci sources += x64_source 414fb726d48Sopenharmony_ci public_configs = [ ":unwind_config_x64" ] 415fb726d48Sopenharmony_ci } 416fb726d48Sopenharmony_ci} 417fb726d48Sopenharmony_ci 418fb726d48Sopenharmony_cisource_set("libunwind") { 419fb726d48Sopenharmony_ci deps = [ ":unwind_source" ] 420fb726d48Sopenharmony_ci public_configs = [ ":unwind_config_public" ] 421fb726d48Sopenharmony_ci} 422