[libcxxabi] Fix cmake order dependency wrt dllexporting
If LIBCXX_ENABLE_SHARED isn't explicitly set on the cmake command
line, isn't set in the cache, and the libcxxabi project is configured
before libcxx, then LIBCXX_ENABLE_SHARED isn't defined yet. Once
the libcxx cmake project has been parsed, LIBCXX_ENABLE_SHARED would
have been set to its default value of ON.
This makes sure that the symbols are properly dllexported in such
a configuration scenario.
Differential Revision: https://reviews.llvm.org/D120982
NOKEYCHECK=True
GitOrigin-RevId: ebde6fc23bc0ee9d022fcd26b52bc82dfb7c8468
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index c458705..01bc2a1 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -93,3 +93,8 @@
``{LIBCXX,LIBCXXABI,LIBUNWIND}_GCC_TOOLCHAIN`` CMake variables have been removed. Instead, please
use the ``CMAKE_CXX_COMPILER_TARGET``, ``CMAKE_SYSROOT`` and ``CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN``
variables provided by CMake.
+
+- When building for Windows, vendors who want to avoid dll-exporting symbols from the static libc++abi
+ library should set ``LIBCXXABI_HERMETIC_STATIC_LIBRARY=ON`` when configuring CMake. The current
+ behavior, which tries to guess the correct dll-export semantics based on whether we're building
+ the libc++ shared library, will be removed in LLVM 16.