Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[libc++abi] Add a from-scratch testing config for Apple backdeployment
We added one for libc++ recently, and this patch adds one for libc++abi. Also, as a fly-by fix, include older libunwind dylibs in the testing of libc++ and libc++abi, which fixes some issues related to running back-deployment tests on newer systems. Differential Revision: https://reviews.llvm.org/D119466
- Loading branch information
Showing
4 changed files
with
78 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 63 additions & 0 deletions
63
libcxxabi/test/configs/apple-libc++abi-backdeployment.cfg.in
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# Testing configuration for back-deployment against older Apple system libc++abi. | ||
# | ||
# Under this configuration, we compile and link all the test suite against the latest libc++abi, | ||
# however we run against the libc++abi on a different platform. This emulates the workflow of | ||
# a developer building their application using recent tools but with the goal of deploying | ||
# on existing devices running an older OS (and hence an older dylib). | ||
|
||
import os, site | ||
site.addsitedir(os.path.join('@LIBCXXABI_LIBCXX_PATH@', 'utils')) | ||
import libcxx.test.params, libcxx.test.newconfig, libcxx.test.dsl | ||
|
||
lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') | ||
|
||
BACKDEPLOYMENT_PARAMETERS = [ | ||
libcxx.test.dsl.Parameter(name='cxx_runtime_root', type=str, | ||
actions=lambda root: [libcxx.test.dsl.AddSubstitution('%{cxx-runtime-root}', root)], | ||
help=""" | ||
The simulated root of the system (for libc++) when running tests. | ||
|
||
This should be a directory hierarchy under which the libc++ dylib can be found. | ||
The dylib in that hierarchy is the one that will be used at runtime when running | ||
the tests. | ||
"""), | ||
libcxx.test.dsl.Parameter(name='abi_runtime_root', type=str, | ||
actions=lambda root: [libcxx.test.dsl.AddSubstitution('%{abi-runtime-root}', root)], | ||
help=""" | ||
The simulated root of the system (for libc++abi) when running tests. | ||
|
||
This should be a directory hierarchy under which the libc++abi dylib can be found. | ||
The dylib in that hierarchy is the one that will be used at runtime when running | ||
the tests. | ||
"""), | ||
libcxx.test.dsl.Parameter(name='unwind_runtime_root', type=str, | ||
actions=lambda root: [libcxx.test.dsl.AddSubstitution('%{unwind-runtime-root}', root)], | ||
help=""" | ||
The simulated root of the system (for libunwind) when running tests. | ||
|
||
This should be a directory hierarchy under which the libunwind dylib can be found. | ||
The dylib in that hierarchy is the one that will be used at runtime when running | ||
the tests. | ||
"""), | ||
] | ||
|
||
config.substitutions.append(('%{flags}', | ||
'-isysroot {}'.format('@CMAKE_OSX_SYSROOT@') if '@CMAKE_OSX_SYSROOT@' else '' | ||
)) | ||
config.substitutions.append(('%{compile_flags}', | ||
'-nostdinc++ -isystem %{install}/include/c++/v1 -DLIBCXXABI_NO_TIMER -D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS ' + | ||
'-I %{libcxx}/test/support -I %{libcxx}/src' | ||
)) | ||
config.substitutions.append(('%{link_flags}', | ||
'-nostdlib++ -L %{install}/lib -lc++ -lc++abi' | ||
)) | ||
config.substitutions.append(('%{exec}', | ||
'%{executor} --execdir %T --env DYLD_LIBRARY_PATH="%{cxx-runtime-root}:%{abi-runtime-root}:%{unwind-runtime-root}" -- ' | ||
)) | ||
|
||
libcxx.test.newconfig.configure( | ||
libcxx.test.params.DEFAULT_PARAMETERS + BACKDEPLOYMENT_PARAMETERS, | ||
libcxx.test.features.DEFAULT_FEATURES, | ||
config, | ||
lit_config | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters