2010-12-10 20:47:54 +01:00
|
|
|
macro(pythonize_bool var)
|
|
|
|
if (${var})
|
|
|
|
set(${var} True)
|
|
|
|
else()
|
|
|
|
set(${var} False)
|
|
|
|
endif()
|
|
|
|
endmacro()
|
|
|
|
|
2015-02-03 19:47:37 +01:00
|
|
|
set(LIT_EXECUTABLE "" CACHE FILEPATH "Path to LLVM's llvm-lit.")
|
|
|
|
|
|
|
|
if(LIBCXX_BUILT_STANDALONE)
|
|
|
|
# Make sure we can use the console pool for recent cmake and ninja > 1.5
|
|
|
|
if(CMAKE_VERSION VERSION_LESS 3.1.20141117)
|
|
|
|
set(cmake_3_2_USES_TERMINAL)
|
2013-10-03 23:58:25 +02:00
|
|
|
else()
|
2015-02-03 19:47:37 +01:00
|
|
|
set(cmake_3_2_USES_TERMINAL USES_TERMINAL)
|
2013-10-03 23:58:25 +02:00
|
|
|
endif()
|
2015-02-03 19:47:37 +01:00
|
|
|
else()
|
|
|
|
include(FindPythonInterp)
|
|
|
|
if(PYTHONINTERP_FOUND)
|
|
|
|
set(LIT_EXECUTABLE
|
|
|
|
${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/utils/lit/lit.py)
|
|
|
|
else()
|
|
|
|
message(WARNING "Could not find Python, cannot set LIT_EXECUTABLE.")
|
|
|
|
endif()
|
|
|
|
endif()
|
2013-10-03 23:58:25 +02:00
|
|
|
|
2015-02-03 19:47:37 +01:00
|
|
|
if (LIT_EXECUTABLE)
|
2014-08-23 06:33:20 +02:00
|
|
|
set(LIT_ARGS_DEFAULT "-sv --show-unsupported --show-xfail")
|
2010-12-10 20:47:54 +01:00
|
|
|
if (MSVC OR XCODE)
|
|
|
|
set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
|
|
|
|
endif()
|
|
|
|
set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}"
|
|
|
|
CACHE STRING "Default options for lit")
|
|
|
|
set(LIT_ARGS "${LLVM_LIT_ARGS}")
|
|
|
|
separate_arguments(LIT_ARGS)
|
|
|
|
|
2015-01-15 19:56:45 +01:00
|
|
|
set(LIBCXX_LIT_VARIANT "libcxx" CACHE STRING
|
|
|
|
"Configuration variant to use for LIT.")
|
2015-01-15 19:35:04 +01:00
|
|
|
|
2014-12-12 03:36:23 +01:00
|
|
|
pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)
|
|
|
|
pythonize_bool(LIBCXX_ENABLE_RTTI)
|
2010-12-10 20:47:54 +01:00
|
|
|
pythonize_bool(LIBCXX_ENABLE_SHARED)
|
2014-12-12 04:12:18 +01:00
|
|
|
pythonize_bool(LIBCXX_BUILD_32_BITS)
|
2014-12-06 22:02:58 +01:00
|
|
|
pythonize_bool(LIBCXX_ENABLE_THREADS)
|
|
|
|
pythonize_bool(LIBCXX_ENABLE_MONOTONIC_CLOCK)
|
2015-03-03 16:59:51 +01:00
|
|
|
# The tests shouldn't link to any ABI library when it has been linked into
|
|
|
|
# libc++ statically.
|
|
|
|
if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
|
|
|
|
set(LIBCXX_CXX_ABI_LIBNAME "none")
|
|
|
|
endif()
|
2015-02-13 16:25:21 +01:00
|
|
|
set(LIBCXX_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE STRING
|
|
|
|
"TargetInfo to use when setting up test environment.")
|
Add remote testing support to the lit config.
Executors can be specified at configure time by using the -DLIBCXX_EXECUTOR=""
option. Examples include:
$ cmake <other_flags> -DLIBCXX_EXECUTOR="TimeoutExecutor(30,LocalExecutor())"
This runs individual tests with a maximum duration
$ cmake <other_flags> -DLIBCXX_EXECUTOR="SSHExecutor('hostname','username')"
This runs tests on a remote target, using scp to shuttle binaries to the
target, and ssh to invoke commands there.
$ cmake <other_flags> -DLIBCXX_EXECUTOR="PrefixExecutor('/path/to/run/script',LocalExecutor())"
This assumes the script knows how to copy run the executables passed to it,
and allows for the ultimate control. This is useful for running things
inside emulators like Valgrind & QEMU.
TODO: This doesn't claim to support ShTest tests yet, that will take a bit more
thought & finagling (I'm still not sure how to orchestrate copy-in for those cases.
I've also punted on what to do about tests that read data files. The testsuite
has several tests that need to read *.dat files placed next to them, and
currently those aren't copied over when using, say, an SSHExecutor. The
affected tests are:
libc++ :: std/input.output/file.streams/fstreams/filebuf.virtuals/pbackfail.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/filebuf.virtuals/underflow.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.assign/member_swap.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.assign/move_assign.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.assign/nonmember_swap.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.cons/move.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.cons/pointer.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.members/close.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.members/open_pointer.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.members/open_string.pass.cpp
libc++ :: std/input.output/file.streams/fstreams/ifstream.members/rdbuf.pass.cpp
libc++ :: std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp
libc++ :: std/localization/locales/locale.convenience/conversions/conversions.buffer/underflow.pass.cpp
Note: One thing to watch out for when using the SSHExecutor for cross-testing is
that you'll also want to specify a TargetInfo object (so that the host's
features aren't used for available-features checks and flags setup).
http://reviews.llvm.org/D7380
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@230592 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-26 01:42:17 +01:00
|
|
|
set(LIBCXX_EXECUTOR "None" CACHE STRING
|
|
|
|
"Executor to use when running tests.")
|
2010-12-10 20:47:54 +01:00
|
|
|
|
|
|
|
set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
|
|
|
@ONLY)
|
|
|
|
|
2012-03-19 16:40:23 +01:00
|
|
|
add_custom_target(check-libcxx
|
2015-02-03 19:47:37 +01:00
|
|
|
COMMAND ${LIT_EXECUTABLE}
|
2010-12-10 20:47:54 +01:00
|
|
|
${LIT_ARGS}
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
2013-10-03 23:58:25 +02:00
|
|
|
DEPENDS cxx
|
2015-01-23 07:59:51 +01:00
|
|
|
COMMENT "Running libcxx tests"
|
|
|
|
${cmake_3_2_USES_TERMINAL})
|
2010-12-10 20:47:54 +01:00
|
|
|
else()
|
2015-02-03 19:47:37 +01:00
|
|
|
message(WARNING
|
|
|
|
"LIT_EXECUTABLE not set, no check-libcxx target will be available!")
|
2010-12-10 20:47:54 +01:00
|
|
|
endif()
|