1 macro(pythonize_bool var) 2 if (${var}) 3 set(${var} True) 4 else() 5 set(${var} False) 6 endif() 7 endmacro() 8 9 set(LIBCXX_LIT_VARIANT "libcxx" CACHE STRING 10 "Configuration variant to use for LIT.") 11 12 # The tests shouldn't link to any ABI library when it has been linked into 13 # libc++ statically or via a linker script. 14 if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY OR LIBCXX_ENABLE_ABI_LINKER_SCRIPT) 15 set(LIBCXX_CXX_ABI_LIBNAME "none") 16 endif() 17 18 # The tests shouldn't link to libunwind if we have a linker script which 19 # already does so. 20 if (LIBCXX_ENABLE_ABI_LINKER_SCRIPT) 21 set(LIBCXXABI_USE_LLVM_UNWINDER OFF) 22 endif() 23 24 pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS) 25 pythonize_bool(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) 26 pythonize_bool(LIBCXX_ENABLE_FILESYSTEM) 27 pythonize_bool(LIBCXX_ENABLE_RTTI) 28 pythonize_bool(LIBCXX_ENABLE_SHARED) 29 pythonize_bool(LIBCXX_BUILD_32_BITS) 30 pythonize_bool(LIBCXX_GENERATE_COVERAGE) 31 pythonize_bool(LIBCXXABI_ENABLE_SHARED) 32 pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER) 33 pythonize_bool(LIBCXX_HAS_ATOMIC_LIB) 34 pythonize_bool(LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB) 35 pythonize_bool(LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY) 36 pythonize_bool(LIBCXX_DEBUG_BUILD) 37 38 # By default, for non-standalone builds, libcxx and libcxxabi share a library 39 # directory. 40 if (NOT LIBCXX_CXX_ABI_LIBRARY_PATH) 41 set(LIBCXX_CXX_ABI_LIBRARY_PATH "${LIBCXX_LIBRARY_DIR}" CACHE PATH 42 "The path to libc++abi library.") 43 endif() 44 45 set(LIBCXX_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE STRING 46 "TargetInfo to use when setting up test environment.") 47 set(LIBCXX_EXECUTOR "None" CACHE STRING 48 "Executor to use when running tests.") 49 50 set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!") 51 52 configure_file( 53 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 54 ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg 55 @ONLY) 56 57 set(LIBCXX_TEST_DEPS "") 58 59 if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) 60 set(LIBCXX_TEST_DEPS cxx_experimental) 61 endif() 62 63 if (LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY) 64 list(APPEND LIBCXX_TEST_DEPS cxx_external_threads) 65 endif() 66 67 if (LIBCXX_INCLUDE_TESTS) 68 include(AddLLVM) # for add_lit_testsuite 69 add_lit_testsuite(check-cxx 70 "Running libcxx tests" 71 ${CMAKE_CURRENT_BINARY_DIR} 72 DEPENDS cxx ${LIBCXX_TEST_DEPS}) 73 74 add_custom_target(check-libcxx DEPENDS check-cxx) 75 endif() 76 77 if (LIBCXX_GENERATE_COVERAGE) 78 include(CodeCoverage) 79 set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/coverage") 80 set(capture_dirs 81 "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx_objects.dir/" 82 "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/" 83 "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx_experimental.dir/" 84 "${CMAKE_CURRENT_BINARY_DIR}") 85 set(extract_dirs "${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src") 86 setup_lcov_test_target_coverage("cxx" "${output_dir}" "${capture_dirs}" "${extract_dirs}") 87 endif() 88