[libc++] Test suite adjustments on macOS (#95835)
This patch makes a few adjustments to the way we run the tests in the Apple configuration on macOS: First, we stop using DYLD_LIBRARY_PATH. Using that environment variable leads to libc++.dylib being replaced by the just-built one for the whole process, and that assumes compatibility between the system-provided dylib and the just-built one. Unfortunately, that is not the case anymore due to typed allocation, which is only available in the system one. Instead, we want to layer the just-built libc++ on top of the system-provided one, which seems to be what happens when we set a rpath instead. Second, add a missing XFAIL for a std::print test that didn't work as expected when building with availability annotations enabled. When we enable these annotations, std::print falls back to a non-unicode and non-terminal output, which breaks the test.
This commit is contained in:
@@ -15,6 +15,3 @@ set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_ASSERTIONS OFF CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_FORGIVING_DYNAMIC_CAST ON CACHE BOOL "")
|
||||
set(LIBCXXABI_USE_LLVM_UNWINDER OFF CACHE BOOL "") # libunwind is built separately
|
||||
|
||||
set(LIBCXX_TEST_CONFIG "apple-libc++-shared.cfg.in" CACHE STRING "")
|
||||
set(LIBCXXABI_TEST_CONFIG "apple-libc++abi-shared.cfg.in" CACHE STRING "")
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
# Testing configuration for Apple's system libc++.
|
||||
#
|
||||
# This configuration differs from a normal LLVM shared library configuration in
|
||||
# that we must use DYLD_LIBRARY_PATH to run the tests against the just-built library,
|
||||
# since Apple's libc++ has an absolute install_name.
|
||||
#
|
||||
# We also don't use a per-target include directory layout, so we have only one
|
||||
# include directory for the libc++ headers.
|
||||
|
||||
lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
|
||||
|
||||
config.substitutions.append(('%{flags}',
|
||||
'-isysroot {}'.format('@CMAKE_OSX_SYSROOT@') if '@CMAKE_OSX_SYSROOT@' else ''
|
||||
))
|
||||
config.substitutions.append(('%{compile_flags}',
|
||||
'-nostdinc++ -I %{include-dir} -I %{libcxx-dir}/test/support'
|
||||
))
|
||||
config.substitutions.append(('%{link_flags}',
|
||||
'-nostdlib++ -L %{lib-dir} -lc++'
|
||||
))
|
||||
config.substitutions.append(('%{exec}',
|
||||
'%{executor} --execdir %T --env DYLD_LIBRARY_PATH=%{lib-dir} -- '
|
||||
))
|
||||
|
||||
config.stdlib = 'apple-libc++'
|
||||
|
||||
import os, site
|
||||
site.addsitedir(os.path.join('@LIBCXX_SOURCE_DIR@', 'utils'))
|
||||
import libcxx.test.params, libcxx.test.config
|
||||
libcxx.test.config.configure(
|
||||
libcxx.test.params.DEFAULT_PARAMETERS,
|
||||
libcxx.test.features.DEFAULT_FEATURES,
|
||||
config,
|
||||
lit_config
|
||||
)
|
||||
@@ -11,6 +11,11 @@
|
||||
|
||||
// XFAIL: availability-fp_to_chars-missing
|
||||
|
||||
// When std::print is unavailable, we don't rely on an implementation of
|
||||
// std::__is_terminal and we always assume a non-unicode and non-terminal
|
||||
// output.
|
||||
// XFAIL: availability-print-missing
|
||||
|
||||
// Clang modules do not work with the definiton of _LIBCPP_TESTING_PRINT_IS_TERMINAL
|
||||
// XFAIL: clang-modules-build
|
||||
// <ostream>
|
||||
|
||||
@@ -127,9 +127,9 @@ for arch in ${architectures}; do
|
||||
-DCMAKE_OSX_ARCHITECTURES="${arch}" \
|
||||
-DLIBCXXABI_LIBRARY_VERSION="${version}" \
|
||||
-DLIBCXX_LIBRARY_VERSION="${version}" \
|
||||
-DLIBCXX_TEST_PARAMS="target_triple=${target}" \
|
||||
-DLIBCXXABI_TEST_PARAMS="target_triple=${target}" \
|
||||
-DLIBUNWIND_TEST_PARAMS="target_triple=${target}"
|
||||
-DLIBCXX_TEST_PARAMS="target_triple=${target};stdlib=apple-libc++" \
|
||||
-DLIBCXXABI_TEST_PARAMS="target_triple=${target};stdlib=apple-libc++" \
|
||||
-DLIBUNWIND_TEST_PARAMS="target_triple=${target};stdlib=apple-libc++"
|
||||
|
||||
if [ "$headers_only" = true ]; then
|
||||
xcrun cmake --build "${build_dir}/${arch}" --target install-cxx-headers install-cxxabi-headers -- -v
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
# Testing configuration for Apple's system libc++abi.
|
||||
|
||||
lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
|
||||
|
||||
config.substitutions.append(('%{flags}',
|
||||
'-isysroot {}'.format('@CMAKE_OSX_SYSROOT@') if '@CMAKE_OSX_SYSROOT@' else ''
|
||||
))
|
||||
config.substitutions.append(('%{compile_flags}',
|
||||
'-nostdinc++ -I %{include} -I %{cxx-include} -I %{cxx-target-include} %{maybe-include-libunwind} -D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS ' +
|
||||
'-I %{libcxx}/test/support -I %{libcxx}/src'
|
||||
))
|
||||
config.substitutions.append(('%{link_flags}',
|
||||
'-nostdlib++ -L %{lib} -lc++ -lc++abi'
|
||||
))
|
||||
config.substitutions.append(('%{exec}',
|
||||
'%{executor} --execdir %T --env DYLD_LIBRARY_PATH=%{lib} -- '
|
||||
))
|
||||
|
||||
config.stdlib = 'apple-libc++'
|
||||
|
||||
import os, site
|
||||
site.addsitedir(os.path.join('@LIBCXXABI_LIBCXX_PATH@', 'utils'))
|
||||
import libcxx.test.params, libcxx.test.config
|
||||
libcxx.test.config.configure(
|
||||
libcxx.test.params.DEFAULT_PARAMETERS,
|
||||
libcxx.test.features.DEFAULT_FEATURES,
|
||||
config,
|
||||
lit_config
|
||||
)
|
||||
Reference in New Issue
Block a user