summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/src/CMakeLists.txt7
-rw-r--r--llvm/utils/gn/secondary/libcxx/src/BUILD.gn11
2 files changed, 14 insertions, 4 deletions
diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
index 5d9cc01d165..4f6e2b4aa62 100644
--- a/libcxx/src/CMakeLists.txt
+++ b/libcxx/src/CMakeLists.txt
@@ -349,7 +349,12 @@ if (LIBCXX_ENABLE_STATIC)
if (LIBCXX_HERMETIC_STATIC_LIBRARY)
append_flags_if_supported(CXX_STATIC_LIBRARY_FLAGS -fvisibility=hidden)
- append_flags_if_supported(CXX_STATIC_LIBRARY_FLAGS -fvisibility-global-new-delete-hidden)
+ # If the hermetic library doesn't define the operator new/delete functions
+ # then its code shouldn't declare them with hidden visibility. They might
+ # actually be provided by a shared library at link time.
+ if (LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS)
+ append_flags_if_supported(CXX_STATIC_LIBRARY_FLAGS -fvisibility-global-new-delete-hidden)
+ endif()
target_compile_options(cxx_static PRIVATE ${CXX_STATIC_LIBRARY_FLAGS})
target_compile_definitions(cxx_static PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
endif()
diff --git a/llvm/utils/gn/secondary/libcxx/src/BUILD.gn b/llvm/utils/gn/secondary/libcxx/src/BUILD.gn
index 4b819ffe4c0..9909bb1e373 100644
--- a/llvm/utils/gn/secondary/libcxx/src/BUILD.gn
+++ b/llvm/utils/gn/secondary/libcxx/src/BUILD.gn
@@ -84,6 +84,9 @@ config("cxx_config") {
"_CRT_STDIO_ISO_WIDE_SPECIFIERS",
]
}
+ if (!libcxx_enable_new_delete_definitions) {
+ defines += [ "_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS" ]
+ }
if (libcxx_enable_exceptions) {
if (current_os == "win") {
cflags_cc += [ "/EHsc" ]
@@ -97,7 +100,7 @@ config("cxx_config") {
} else {
cflags_cc += [ "-fno-exceptions" ]
}
- defines += [ "-D_LIBCPP_NO_EXCEPTIONS" ]
+ defines += [ "_LIBCPP_NO_EXCEPTIONS" ]
}
if (!libcxx_enable_rtti) {
if (current_os == "win") {
@@ -105,7 +108,7 @@ config("cxx_config") {
} else {
cflags_cc += [ "-fno-rtti" ]
}
- defines += [ "-D_LIBCPP_NO_RTTI" ]
+ defines += [ "_LIBCPP_NO_RTTI" ]
}
}
@@ -251,7 +254,9 @@ if (libcxx_enable_static) {
sources = cxx_sources
if (libcxx_hermetic_static_library) {
cflags = [ "-fvisibility=hidden" ]
- cflags_cc = [ "-fvisibility-global-new-delete-hidden" ]
+ if (libcxx_enable_new_delete_definitions) {
+ cflags_cc = [ "-fvisibility-global-new-delete-hidden" ]
+ }
defines = [ "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS" ]
}
deps = [
OpenPOWER on IntegriCloud