summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/CMakeLists.txt4
-rw-r--r--libcxx/include/memory9
2 files changed, 10 insertions, 3 deletions
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index c0bde0989e3..8f5047c6bca 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -228,6 +228,10 @@ else()
list(APPEND LIBCXX_CXX_FEATURE_FLAGS -DNDEBUG)
endif()
endif()
+# Static library
+if (NOT LIBCXX_ENABLE_SHARED)
+ list(APPEND LIBCXX_CXX_FEATURE_FLAGS -D_LIBCPP_BUILD_STATIC)
+endif()
# This is the _ONLY_ place where add_definitions is called.
add_definitions(
diff --git a/libcxx/include/memory b/libcxx/include/memory
index f80d699fc0d..4e1f704681b 100644
--- a/libcxx/include/memory
+++ b/libcxx/include/memory
@@ -3629,10 +3629,13 @@ public:
long use_count() const _NOEXCEPT {return __shared_count::use_count();}
__shared_weak_count* lock() _NOEXCEPT;
- // purposefully not protected with #ifndef _LIBCPP_NO_RTTI because doing so
- // breaks ABI for those clients who need to compile their projects with
- // -fno-rtti and yet link against a libc++.dylib compiled without -fno-rtti.
+ // Define the function out only if we build static libc++ without RTTI.
+ // Otherwise we may break clients who need to compile their projects with
+ // -fno-rtti and yet link against a libc++.dylib compiled
+ // without -fno-rtti.
+#if !defined(_LIBCPP_NO_RTTI) || !defined(_LIBCPP_BUILD_STATIC)
virtual const void* __get_deleter(const type_info&) const _NOEXCEPT;
+#endif
private:
virtual void __on_zero_shared_weak() _NOEXCEPT = 0;
};
OpenPOWER on IntegriCloud