libc++: Disable exceptions and RTTI

Except on Mac, where exceptions are required.
And except on Android, where rtti is required.
This commit is contained in:
klzgrad
2026-09-25 09:05:55 +08:00
parent 3435ba3049
commit b8d81e7ebd
2 changed files with 31 additions and 4 deletions
-4
View File
@@ -522,15 +522,11 @@ target(libcxx_target_type, "libc++") {
# exception and rtti.
configs -= [
"//build/config/compiler:chromium_code",
"//build/config/compiler:no_exceptions",
"//build/config/compiler:no_rtti",
"//build/config/coverage:default_coverage",
]
configs += [
":config",
"//build/config/compiler:no_chromium_code",
"//build/config/compiler:exceptions",
"//build/config/compiler:rtti",
]
deps = [ "//third_party/llvm-libc:llvm-libc-shared" ]
+31
View File
@@ -105,4 +105,35 @@ target(libcxxabi_target_type, "libc++abi") {
# Disabling -Wexit-time-destructors, as libc++abi uses a static object for
# at exit management (see `static DtorsManager manager`).
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
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",
]
}
}