blob: 2d1cdb290c90a46d8841adda2ae3352b938e3899 [file] [log] [blame]
Michael J. Spencerf5799be2010-12-10 19:47:54 +00001macro(pythonize_bool var)
2 if (${var})
3 set(${var} True)
4 else()
5 set(${var} False)
6 endif()
7endmacro()
8
Eric Fiselier10ed6c32015-07-30 22:30:34 +00009set(LIBCXX_LIT_VARIANT "libcxx" CACHE STRING
10 "Configuration variant to use for LIT.")
Greg Fitzgeraldd9ecf1a2015-02-03 18:02:04 +000011
Eric Fiselier10ed6c32015-07-30 22:30:34 +000012pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)
Eric Fiselier27cb2f12016-05-03 21:30:18 +000013pythonize_bool(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000014pythonize_bool(LIBCXX_ENABLE_RTTI)
15pythonize_bool(LIBCXX_ENABLE_SHARED)
16pythonize_bool(LIBCXX_BUILD_32_BITS)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000017pythonize_bool(LIBCXX_GENERATE_COVERAGE)
Ben Craig0142a9d2016-04-19 12:49:05 +000018pythonize_bool(LIBCXXABI_ENABLE_SHARED)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000019pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)
Vasileios Kalintirisd247ac42016-02-11 12:43:04 +000020pythonize_bool(LIBCXX_HAS_ATOMIC_LIB)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000021
22# The tests shouldn't link to any ABI library when it has been linked into
Eric Fiselier82414052015-10-14 19:54:03 +000023# libc++ statically or via a linker script.
24if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY OR LIBCXX_ENABLE_ABI_LINKER_SCRIPT)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000025 set(LIBCXX_CXX_ABI_LIBNAME "none")
Greg Fitzgerald2e187292015-02-03 18:47:37 +000026endif()
Eric Fiselier82414052015-10-14 19:54:03 +000027
Ben Craig0142a9d2016-04-19 12:49:05 +000028# By default, for non-standalone builds, libcxx and libcxxabi share a library
29# directory.
30if (NOT LIBCXX_CXX_ABI_LIBRARY_PATH)
31 set(LIBCXX_CXX_ABI_LIBRARY_PATH "${LIBCXX_LIBRARY_DIR}" CACHE PATH
32 "The path to libc++abi library.")
33endif()
34
Eric Fiselier10ed6c32015-07-30 22:30:34 +000035set(LIBCXX_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE STRING
36 "TargetInfo to use when setting up test environment.")
37set(LIBCXX_EXECUTOR "None" CACHE STRING
38 "Executor to use when running tests.")
Greg Fitzgerald2e187292015-02-03 18:47:37 +000039
Eric Fiselier10ed6c32015-07-30 22:30:34 +000040set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")
Michael J. Spencerf5799be2010-12-10 19:47:54 +000041
Eric Fiselier10ed6c32015-07-30 22:30:34 +000042configure_file(
43 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
44 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
45 @ONLY)
Dan Albertb3db7662015-01-15 18:35:04 +000046
Eric Fiselierad89e382016-05-03 21:58:07 +000047if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
48 set(experimental_dep cxx_experimental)
49endif()
50
Eric Fiselier10ed6c32015-07-30 22:30:34 +000051add_lit_testsuite(check-libcxx
52 "Running libcxx tests"
53 ${CMAKE_CURRENT_BINARY_DIR}
Eric Fiselierad89e382016-05-03 21:58:07 +000054 DEPENDS cxx ${experimental_dep})
Eric Fiselier78fdf2d2015-03-31 04:15:45 +000055
Eric Fiselier10ed6c32015-07-30 22:30:34 +000056if (LIBCXX_GENERATE_COVERAGE)
57 include(CodeCoverage)
58 set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/coverage")
Eric Fiselier31dd2b12016-05-08 23:08:50 +000059 set(capture_dirs "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/;${LIBCXX_LIB_CMAKEFILES_DIR}/cxx_experimental.dir/;${CMAKE_CURRENT_BINARY_DIR}")
Eric Fiselier10ed6c32015-07-30 22:30:34 +000060 set(extract_dirs "${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src")
61 setup_lcov_test_target_coverage("cxx" "${output_dir}" "${capture_dirs}" "${extract_dirs}")
Michael J. Spencerf5799be2010-12-10 19:47:54 +000062endif()