# Copyright 2017 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/c++/c++.gni") config("libunwind_config") { cflags = [ "-fstrict-aliasing", "-fPIC", # ValueAsBitPattern in Unwind-EHABI.cpp is only used on Debug builds. "-Wno-unused-function", # libunwind expects to be compiled with unwind tables so it can # unwind its own frames. "-funwind-tables", ] if (is_fuchsia) { # Workaround for https://bugs.llvm.org/show_bug.cgi?id=45875: # compiling the C code with -fexceptions ensures that accurate # unwinding information is generated for _Unwind_RaiseException. cflags_c = [ "-fexceptions" ] } } source_set("libunwind") { visibility = [] if (is_fuchsia) { visibility += [ "//buildtools/third_party/libc++abi" ] } else if (is_android) { visibility += [ "//services/tracing/public/cpp" ] } if (!is_component_build) { defines = [ "_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS" ] } include_dirs = [ "//buildtools/third_party/libunwind/trunk/include" ] sources = [ # C++ sources "trunk/src/Unwind-EHABI.cpp", "trunk/src/libunwind.cpp", # C sources "trunk/src/Unwind-sjlj.c", "trunk/src/UnwindLevel1-gcc-ext.c", "trunk/src/UnwindLevel1.c", # ASM sources "trunk/src/UnwindRegistersRestore.S", "trunk/src/UnwindRegistersSave.S", ] configs -= [ "//build/config/compiler:chromium_code", "//build/config/compiler:no_exceptions", "//build/config/compiler:no_rtti", "//build/config/coverage:default_coverage", ] configs += [ "//build/config/compiler:no_chromium_code", "//build/config/compiler:exceptions", "//build/config/compiler:rtti", # Must be after no_chromium_code ":libunwind_config", ] }