diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -332,6 +332,14 @@ OUTPUT_NAME "c++experimental" ) cxx_add_common_build_flags(cxx_experimental) + + if (LIBCXX_HERMETIC_STATIC_LIBRARY) + target_compile_options(cxx_experimental PRIVATE ${CXX_STATIC_LIBRARY_FLAGS}) + # _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_experimental PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=) + endif() + endif() diff --git a/libcxx/test/libcxx/vendor/clang-cl/experimental-lib-exports.sh.cpp b/libcxx/test/libcxx/vendor/clang-cl/experimental-lib-exports.sh.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/libcxx/vendor/clang-cl/experimental-lib-exports.sh.cpp @@ -0,0 +1,14 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// REQUIRES: msvc && c++experimental + +// This file checks that the built experimental static library doesn't contain dllexport +// directives in clang-cl builds. + +// RUN: llvm-readobj --coff-directives "%{lib}/libc++experimental.lib" | not grep -i "export:" > /dev/null diff --git a/libcxx/test/libcxx/vendor/mingw/experimental-lib-exports.sh.cpp b/libcxx/test/libcxx/vendor/mingw/experimental-lib-exports.sh.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/libcxx/vendor/mingw/experimental-lib-exports.sh.cpp @@ -0,0 +1,14 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// REQUIRES: target={{.+}}-windows-gnu && c++experimental + +// This file checks that the built experimental static library doesn't contain dllexport +// directives in MinGW builds. + +// RUN: llvm-readobj --coff-directives "%{lib}/libc++experimental.a" | not grep -i "export:" > /dev/null