diff --git a/src/buildtools/third_party/libc++/BUILD.gn b/src/buildtools/third_party/libc++/BUILD.gn index c93cf2883d..3a50a89a44 100644 --- a/src/buildtools/third_party/libc++/BUILD.gn +++ b/src/buildtools/third_party/libc++/BUILD.gn @@ -165,8 +165,6 @@ target(_libcxx_target_type, "libc++") { } configs -= [ "//build/config/compiler:chromium_code", - "//build/config/compiler:no_exceptions", - "//build/config/compiler:no_rtti", "//build/config/coverage:default_coverage", ] if ((is_android || is_apple) && libcxx_is_shared) { @@ -180,8 +178,6 @@ target(_libcxx_target_type, "libc++") { configs += [ ":config", "//build/config/compiler:no_chromium_code", - "//build/config/compiler:exceptions", - "//build/config/compiler:rtti", ] if (libcxx_is_shared && !is_win) { diff --git a/src/buildtools/third_party/libc++abi/BUILD.gn b/src/buildtools/third_party/libc++abi/BUILD.gn index b5c15a0ead..8bcf728fd3 100644 --- a/src/buildtools/third_party/libc++abi/BUILD.gn +++ b/src/buildtools/third_party/libc++abi/BUILD.gn @@ -98,4 +98,34 @@ source_set("libc++abi") { # libc++abi depends on libc++ internals. include_dirs = [ "//third_party/libc++/src/src" ] + if (!is_apple) { + sources -= [ + "//third_party/libc++abi/src/src/cxa_exception.cpp", + "//third_party/libc++abi/src/src/cxa_personality.cpp", + "//third_party/libc++abi/src/src/private_typeinfo.cpp", + ] + sources += [ + "//third_party/libc++abi/src/src/cxa_noexception.cpp", + ] + defines += [ "_LIBCXXABI_NO_EXCEPTIONS" ] + configs -= [ + "//build/config/compiler:exceptions", + "//build/config/compiler:rtti", + ] + configs += [ + "//build/config/compiler:no_exceptions", + "//build/config/compiler:no_rtti", + ] + } + if (is_android) { + sources += [ + "//third_party/libc++abi/src/src/private_typeinfo.cpp", + ] + configs -= [ + "//build/config/compiler:no_rtti", + ] + configs += [ + "//build/config/compiler:rtti", + ] + } }