blob: f206e92c2cc437fe3f63d6fd667ab748bf299a1a [file] [log] [blame]
Chris Bieneman12b134b2016-08-18 21:31:51 +00001include(AddLLVM) # for add_lit_testsuite
2
Michael J. Spencerf5799be2010-12-10 19:47:54 +00003macro(pythonize_bool var)
4 if (${var})
5 set(${var} True)
6 else()
7 set(${var} False)
8 endif()
9endmacro()
10
Eric Fiselier10ed6c32015-07-30 22:30:34 +000011set(LIBCXX_LIT_VARIANT "libcxx" CACHE STRING
12 "Configuration variant to use for LIT.")
Greg Fitzgeraldd9ecf1a2015-02-03 18:02:04 +000013
Eric Fiselier10ed6c32015-07-30 22:30:34 +000014pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)
Eric Fiselier27cb2f12016-05-03 21:30:18 +000015pythonize_bool(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
Eric Fiselierc7979582016-06-17 19:46:40 +000016pythonize_bool(LIBCXX_ENABLE_FILESYSTEM)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000017pythonize_bool(LIBCXX_ENABLE_RTTI)
18pythonize_bool(LIBCXX_ENABLE_SHARED)
19pythonize_bool(LIBCXX_BUILD_32_BITS)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000020pythonize_bool(LIBCXX_GENERATE_COVERAGE)
Ben Craig0142a9d2016-04-19 12:49:05 +000021pythonize_bool(LIBCXXABI_ENABLE_SHARED)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000022pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)
Vasileios Kalintirisd247ac42016-02-11 12:43:04 +000023pythonize_bool(LIBCXX_HAS_ATOMIC_LIB)
Eric Fiseliera23470e2016-07-18 06:01:50 +000024pythonize_bool(LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000025
26# The tests shouldn't link to any ABI library when it has been linked into
Eric Fiselier82414052015-10-14 19:54:03 +000027# libc++ statically or via a linker script.
28if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY OR LIBCXX_ENABLE_ABI_LINKER_SCRIPT)
Eric Fiselier10ed6c32015-07-30 22:30:34 +000029 set(LIBCXX_CXX_ABI_LIBNAME "none")
Greg Fitzgerald2e187292015-02-03 18:47:37 +000030endif()
Eric Fiselier82414052015-10-14 19:54:03 +000031
Ben Craig0142a9d2016-04-19 12:49:05 +000032# By default, for non-standalone builds, libcxx and libcxxabi share a library
33# directory.
34if (NOT LIBCXX_CXX_ABI_LIBRARY_PATH)
35 set(LIBCXX_CXX_ABI_LIBRARY_PATH "${LIBCXX_LIBRARY_DIR}" CACHE PATH
36 "The path to libc++abi library.")
37endif()
38
Eric Fiselier10ed6c32015-07-30 22:30:34 +000039set(LIBCXX_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE STRING
40 "TargetInfo to use when setting up test environment.")
41set(LIBCXX_EXECUTOR "None" CACHE STRING
42 "Executor to use when running tests.")
Greg Fitzgerald2e187292015-02-03 18:47:37 +000043
Eric Fiselier10ed6c32015-07-30 22:30:34 +000044set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")
Michael J. Spencerf5799be2010-12-10 19:47:54 +000045
Eric Fiselier10ed6c32015-07-30 22:30:34 +000046configure_file(
47 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
48 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
49 @ONLY)
Dan Albertb3db7662015-01-15 18:35:04 +000050
Eric Fiselierad89e382016-05-03 21:58:07 +000051if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
52 set(experimental_dep cxx_experimental)
53endif()
54
Eric Fiselier10ed6c32015-07-30 22:30:34 +000055add_lit_testsuite(check-libcxx
56 "Running libcxx tests"
57 ${CMAKE_CURRENT_BINARY_DIR}
Eric Fiselierad89e382016-05-03 21:58:07 +000058 DEPENDS cxx ${experimental_dep})
Eric Fiselier78fdf2d2015-03-31 04:15:45 +000059
Eric Fiselier10ed6c32015-07-30 22:30:34 +000060if (LIBCXX_GENERATE_COVERAGE)
61 include(CodeCoverage)
62 set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/coverage")
Eric Fiselier31dd2b12016-05-08 23:08:50 +000063 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 +000064 set(extract_dirs "${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src")
65 setup_lcov_test_target_coverage("cxx" "${output_dir}" "${capture_dirs}" "${extract_dirs}")
Michael J. Spencerf5799be2010-12-10 19:47:54 +000066endif()