aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcxx/CMakeLists.txt6
-rw-r--r--libcxx/src/CMakeLists.txt4
-rw-r--r--libcxx/test/libcxx/vendor/clang-cl/static-lib-exports.sh.cpp5
-rw-r--r--libcxx/test/libcxx/vendor/mingw/static-lib-exports.sh.cpp5
-rw-r--r--libcxxabi/CMakeLists.txt25
-rw-r--r--libcxxabi/src/CMakeLists.txt5
-rw-r--r--libunwind/CMakeLists.txt12
7 files changed, 23 insertions, 39 deletions
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index 2b2c42cf..ec4c2e4 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -315,8 +315,12 @@ endif()
option(LIBCXX_CONFIGURE_IDE "Configure libcxx for use within an IDE"
${LIBCXX_CONFIGURE_IDE_DEFAULT})
+set(LIBCXX_HERMETIC_STATIC_LIBRARY_DEFAULT OFF)
+if (WIN32)
+ set(LIBCXX_HERMETIC_STATIC_LIBRARY_DEFAULT ON)
+endif()
option(LIBCXX_HERMETIC_STATIC_LIBRARY
- "Do not export any symbols from the static library." OFF)
+ "Do not export any symbols from the static library." ${LIBCXX_HERMETIC_STATIC_LIBRARY_DEFAULT})
#===============================================================================
# Check option configurations
diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
index 962f6f5..42f4171 100644
--- a/libcxx/src/CMakeLists.txt
+++ b/libcxx/src/CMakeLists.txt
@@ -300,7 +300,9 @@ if (LIBCXX_ENABLE_STATIC)
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)
+ # _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in __config_site
+ # too. Define it in the same way here, to avoid redefinition conflicts.
+ target_compile_definitions(cxx_static PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=)
endif()
list(APPEND LIBCXX_BUILD_TARGETS "cxx_static")
diff --git a/libcxx/test/libcxx/vendor/clang-cl/static-lib-exports.sh.cpp b/libcxx/test/libcxx/vendor/clang-cl/static-lib-exports.sh.cpp
index 35f2221..fb66c4a 100644
--- a/libcxx/test/libcxx/vendor/clang-cl/static-lib-exports.sh.cpp
+++ b/libcxx/test/libcxx/vendor/clang-cl/static-lib-exports.sh.cpp
@@ -12,8 +12,3 @@
// directives in clang-cl builds.
// RUN: llvm-readobj --coff-directives "%{lib}/libc++.lib" | not grep -i "export:" > /dev/null
-
-// It's a known issue, that when building a shared library at the same time
-// as the static library, the generated static library does contain dllexport
-// directives.
-// XFAIL: windows-dll
diff --git a/libcxx/test/libcxx/vendor/mingw/static-lib-exports.sh.cpp b/libcxx/test/libcxx/vendor/mingw/static-lib-exports.sh.cpp
index 7af240e..7dfedb7 100644
--- a/libcxx/test/libcxx/vendor/mingw/static-lib-exports.sh.cpp
+++ b/libcxx/test/libcxx/vendor/mingw/static-lib-exports.sh.cpp
@@ -12,8 +12,3 @@
// directives in MinGW builds.
// RUN: llvm-readobj --coff-directives "%{lib}/libc++.a" | not grep -i "export:" > /dev/null
-
-// It's a known issue, that when building a shared library at the same time
-// as the static library, the generated static library does contain dllexport
-// directives.
-// XFAIL: windows-dll
diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt
index aa5ab9a..791ff6c 100644
--- a/libcxxabi/CMakeLists.txt
+++ b/libcxxabi/CMakeLists.txt
@@ -136,8 +136,12 @@ endif()
set(LIBCXXABI_LIBCXX_INCLUDES "" CACHE PATH
"Specify path to libc++ includes.")
+set(LIBCXXABI_HERMETIC_STATIC_LIBRARY_DEFAULT OFF)
+if (WIN32)
+ set(LIBCXXABI_HERMETIC_STATIC_LIBRARY_DEFAULT ON)
+endif()
option(LIBCXXABI_HERMETIC_STATIC_LIBRARY
- "Do not export any symbols from the static library." OFF)
+ "Do not export any symbols from the static library." ${LIBCXXABI_HERMETIC_STATIC_LIBRARY_DEFAULT})
set(LIBCXXABI_TEST_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/test/lit.site.cfg.in" CACHE STRING
"The path to the Lit testing configuration to use when running the tests.
@@ -247,25 +251,6 @@ add_definitions(-D_LIBCXXABI_BUILDING_LIBRARY)
# it is being built as part of libcxx.
add_definitions(-D_LIBCPP_BUILDING_LIBRARY)
-# Disable DLL annotations on Windows for static builds.
-if (WIN32 AND LIBCXXABI_ENABLE_STATIC AND NOT LIBCXXABI_ENABLE_SHARED)
- # If LIBCXX_ENABLE_SHARED isn't set (by the user on the cmake command
- # line or via a cache file), use its expected default value (enabled).
- if ((LIBCXX_ENABLE_SHARED OR NOT DEFINED LIBCXX_ENABLE_SHARED) AND LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
- # Building libcxxabi statically, but intending for it to be statically
- # linked into a shared libcxx; keep dllexport enabled within libcxxabi,
- # as the symbols will need to be exported from libcxx.
- else()
- # Regular static build; disable dllexports.
- add_definitions(-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
- if (NOT LIBCXXABI_HERMETIC_STATIC_LIBRARY)
- # TODO: Enable this warning message as soon as we're sure this is the solution.
- # message(WARNING "Implicitly disabling dllexport on Win32 is not supported anymore. Please build with "
- # "LIBCXXABI_HERMETIC_STATIC_LIBRARY=ON instead. This will become an error in LLVM 16.")
- endif()
- endif()
-endif()
-
add_compile_flags_if_supported(-Werror=return-type)
# Get warning flags
diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt
index e19f33c..afaed4f 100644
--- a/libcxxabi/src/CMakeLists.txt
+++ b/libcxxabi/src/CMakeLists.txt
@@ -248,10 +248,13 @@ if(LIBCXXABI_HERMETIC_STATIC_LIBRARY)
if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS)
target_add_compile_flags_if_supported(cxxabi_static_objects PRIVATE -fvisibility-global-new-delete-hidden)
endif()
+ # _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in libcxx's
+ # __config_site too. Define it in the same way here, to avoid redefinition
+ # conflicts.
target_compile_definitions(cxxabi_static_objects
PRIVATE
_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS
- _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+ _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=)
endif()
if (LIBCXXABI_ENABLE_STATIC)
diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt
index 4d1f7be..5a06805 100644
--- a/libunwind/CMakeLists.txt
+++ b/libunwind/CMakeLists.txt
@@ -93,8 +93,13 @@ if (LIBUNWIND_ENABLE_CET AND MSVC)
message(FATAL_ERROR "libunwind CET support is not available for MSVC!")
endif()
+if (WIN32)
+ set(LIBUNWIND_DEFAULT_HIDE_SYMBOLS TRUE)
+else()
+ set(LIBUNWIND_DEFAULT_HIDE_SYMBOLS FALSE)
+endif()
option(LIBUNWIND_HIDE_SYMBOLS
- "Do not export any symbols from the static library." OFF)
+ "Do not export any symbols from the static library." ${LIBUNWIND_DEFAULT_HIDE_SYMBOLS})
#===============================================================================
# Configure System
@@ -304,11 +309,6 @@ if (MSVC)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
endif()
-# Disable DLL annotations on Windows for static builds.
-if (WIN32 AND LIBUNWIND_ENABLE_STATIC AND NOT LIBUNWIND_ENABLE_SHARED)
- add_definitions(-D_LIBUNWIND_HIDE_SYMBOLS)
-endif()
-
if (C_SUPPORTS_COMMENT_LIB_PRAGMA)
if (LIBUNWIND_HAS_DL_LIB)
add_definitions(-D_LIBUNWIND_LINK_DL_LIB)