[libcxx-commits] [PATCH] D90021: [libcxx] [libcxxabi] Set flags for visibility when statically linking libcxxabi into libcxx for windows
Martin Storsjö via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Nov 3 02:22:21 PST 2020
mstorsjo updated this revision to Diff 302521.
mstorsjo added a comment.
Updated after landing D90476 <https://reviews.llvm.org/D90476>, removed nuances that don't have any practical effect (distinguishing between defining `_LIBCXXABI_BUILDING_LIBRARY` and `_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS` within libcxx), ending up with a fairly simple form.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90021/new/
https://reviews.llvm.org/D90021
Files:
libcxx/CMakeLists.txt
libcxxabi/CMakeLists.txt
Index: libcxxabi/CMakeLists.txt
===================================================================
--- libcxxabi/CMakeLists.txt
+++ libcxxabi/CMakeLists.txt
@@ -288,7 +288,14 @@
# Disable DLL annotations on Windows for static builds.
if (WIN32 AND LIBCXXABI_ENABLE_STATIC AND NOT LIBCXXABI_ENABLE_SHARED)
- add_definitions(-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
+ if (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)
+ endif()
endif()
add_compile_flags_if_supported(-Werror=return-type)
Index: libcxx/CMakeLists.txt
===================================================================
--- libcxx/CMakeLists.txt
+++ libcxx/CMakeLists.txt
@@ -871,6 +871,12 @@
config_define(ON _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
endif()
+if (WIN32 AND LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
+ # If linking libcxxabi statically into libcxx, skip the dllimport attributes
+ # on symbols we refer to from libcxxabi.
+ add_definitions(-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS)
+endif()
+
# Setup all common build flags =================================================
function(cxx_add_common_build_flags target)
cxx_add_basic_build_flags(${target})
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90021.302521.patch
Type: text/x-patch
Size: 1509 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20201103/13c05394/attachment.bin>
More information about the libcxx-commits
mailing list