1*7c3d14c8STreehugger Robotset(TSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS}) 2*7c3d14c8STreehugger Robotif(${COMPILER_RT_DEFAULT_TARGET_ARCH} MATCHES "x86_64") 3*7c3d14c8STreehugger Robot list(APPEND TSAN_TEST_DEPS GotsanRuntimeCheck) 4*7c3d14c8STreehugger Robotendif() 5*7c3d14c8STreehugger Robotif(NOT COMPILER_RT_STANDALONE_BUILD) 6*7c3d14c8STreehugger Robot list(APPEND TSAN_TEST_DEPS tsan) 7*7c3d14c8STreehugger Robotendif() 8*7c3d14c8STreehugger Robotif(COMPILER_RT_HAS_LIBCXX_SOURCES AND 9*7c3d14c8STreehugger Robot COMPILER_RT_TEST_COMPILER_ID STREQUAL "Clang" 10*7c3d14c8STreehugger Robot AND NOT APPLE) 11*7c3d14c8STreehugger Robot list(APPEND TSAN_TEST_DEPS libcxx_tsan) 12*7c3d14c8STreehugger Robot set(TSAN_HAS_LIBCXX True) 13*7c3d14c8STreehugger Robotelse() 14*7c3d14c8STreehugger Robot set(TSAN_HAS_LIBCXX False) 15*7c3d14c8STreehugger Robotendif() 16*7c3d14c8STreehugger Robot 17*7c3d14c8STreehugger Robotset(TSAN_TESTSUITES) 18*7c3d14c8STreehugger Robot 19*7c3d14c8STreehugger Robotset(TSAN_TEST_ARCH ${TSAN_SUPPORTED_ARCH}) 20*7c3d14c8STreehugger Robotif(APPLE) 21*7c3d14c8STreehugger Robot darwin_filter_host_archs(TSAN_SUPPORTED_ARCH TSAN_TEST_ARCH) 22*7c3d14c8STreehugger Robotendif() 23*7c3d14c8STreehugger Robot 24*7c3d14c8STreehugger Robotforeach(arch ${TSAN_TEST_ARCH}) 25*7c3d14c8STreehugger Robot set(TSAN_TEST_TARGET_ARCH ${arch}) 26*7c3d14c8STreehugger Robot string(TOLOWER "-${arch}" TSAN_TEST_CONFIG_SUFFIX) 27*7c3d14c8STreehugger Robot if(ANDROID OR ${arch} MATCHES "arm|aarch64") 28*7c3d14c8STreehugger Robot # This is only true if we are cross-compiling. 29*7c3d14c8STreehugger Robot # Build all tests with host compiler and use host tools. 30*7c3d14c8STreehugger Robot set(TSAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER}) 31*7c3d14c8STreehugger Robot set(TSAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS}) 32*7c3d14c8STreehugger Robot else() 33*7c3d14c8STreehugger Robot get_target_flags_for_arch(${arch} TSAN_TEST_TARGET_CFLAGS) 34*7c3d14c8STreehugger Robot string(REPLACE ";" " " TSAN_TEST_TARGET_CFLAGS "${TSAN_TEST_TARGET_CFLAGS}") 35*7c3d14c8STreehugger Robot endif() 36*7c3d14c8STreehugger Robot 37*7c3d14c8STreehugger Robot string(TOUPPER ${arch} ARCH_UPPER_CASE) 38*7c3d14c8STreehugger Robot set(CONFIG_NAME ${ARCH_UPPER_CASE}Config) 39*7c3d14c8STreehugger Robot 40*7c3d14c8STreehugger Robot configure_lit_site_cfg( 41*7c3d14c8STreehugger Robot ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 42*7c3d14c8STreehugger Robot ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg) 43*7c3d14c8STreehugger Robot list(APPEND TSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}) 44*7c3d14c8STreehugger Robotendforeach() 45*7c3d14c8STreehugger Robot 46*7c3d14c8STreehugger Robotif(COMPILER_RT_INCLUDE_TESTS) 47*7c3d14c8STreehugger Robot configure_lit_site_cfg( 48*7c3d14c8STreehugger Robot ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in 49*7c3d14c8STreehugger Robot ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg) 50*7c3d14c8STreehugger Robot list(APPEND TSAN_TEST_DEPS TsanUnitTests) 51*7c3d14c8STreehugger Robot list(APPEND TSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Unit) 52*7c3d14c8STreehugger Robotendif() 53*7c3d14c8STreehugger Robot 54*7c3d14c8STreehugger Robotadd_lit_testsuite(check-tsan "Running ThreadSanitizer tests" 55*7c3d14c8STreehugger Robot ${TSAN_TESTSUITES} 56*7c3d14c8STreehugger Robot DEPENDS ${TSAN_TEST_DEPS}) 57*7c3d14c8STreehugger Robotset_target_properties(check-tsan PROPERTIES FOLDER "Compiler-RT Tests") 58