| # Copyright 2015 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") |
| |
| # TODO(thomasanderson): Remove this conditional once Android builds always set |
| # use_custom_libcxx=true. |
| if (use_custom_libcxx) { |
| source_set("libc++abi") { |
| visibility = [ "//buildtools/third_party/libc++" ] |
| deps = [] |
| |
| # Fuchsia builds don't link against any libraries that provide stack |
| # unwinding symbols, unlike Linux does with glibc. Build and link against |
| # libunwind manually to get this functionality. |
| if (is_fuchsia) { |
| deps += [ "//buildtools/third_party/libunwind" ] |
| } |
| |
| sources = [ |
| "trunk/src/abort_message.cpp", |
| "trunk/src/cxa_aux_runtime.cpp", |
| "trunk/src/cxa_default_handlers.cpp", |
| "trunk/src/cxa_exception.cpp", |
| "trunk/src/cxa_exception_storage.cpp", |
| "trunk/src/cxa_guard.cpp", |
| "trunk/src/cxa_handlers.cpp", |
| |
| # This file is supposed to be used in fno-exception builds of |
| # libc++abi. We build lib++/libc++abi with exceptions enabled. |
| #"trunk/src/cxa_noexception.cpp", |
| "trunk/src/cxa_personality.cpp", |
| "trunk/src/cxa_unexpected.cpp", |
| "trunk/src/cxa_vector.cpp", |
| "trunk/src/cxa_virtual.cpp", |
| "trunk/src/fallback_malloc.cpp", |
| "trunk/src/private_typeinfo.cpp", |
| "trunk/src/stdlib_exception.cpp", |
| "trunk/src/stdlib_stdexcept.cpp", |
| "trunk/src/stdlib_typeinfo.cpp", |
| ] |
| |
| # See the comment in cxa_demangle_stub.cc for why we don't use LLVM's |
| # demangler on android. |
| if (is_android) { |
| deps += [ ":cxa_demangle_stub" ] |
| } else { |
| sources += [ "trunk/src/cxa_demangle.cpp" ] |
| } |
| |
| # This file should really be included on linux as well, but that |
| # would introduce an unwanted glibc 2.18 dependency. |
| if (is_fuchsia || (is_posix && !is_mac && !is_linux)) { |
| sources += [ "trunk/src/cxa_thread_atexit.cpp" ] |
| } |
| |
| defines = [ |
| "LIBCXXABI_SILENT_TERMINATE", |
| "_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS", |
| ] |
| |
| 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", |
| "//buildtools/third_party/libc++:config", |
| ] |
| } |
| } |
| |
| source_set("cxa_demangle_stub") { |
| # TODO(thomasanderson): This file is currently pulled in from //base on |
| # Android, but will no longer be needed once Android builds always set |
| # use_custom_libcxx=true. When this happens, this target can be removed, |
| # cxa_demangle_stub.cc can be added to the libc++abi target above, and |
| # __cxa_demangle can simply be annoted with _LIBCXXABI_FUNC_VIS. |
| if (use_custom_libcxx && !libcpp_is_static) { |
| defines = [ "EXPORT_CXA_DEMANGLE" ] |
| } |
| sources = [ "cxa_demangle_stub.cc" ] |
| } |