1set(ASAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 2 3set(ASAN_TESTSUITES) 4 5if(CAN_TARGET_arm_android) 6 # This is only true if we are cross-compiling. 7 # Build all tests with host compiler and use host tools. 8 set(ASAN_TEST_TARGET_CC ${CMAKE_C_COMPILER}) 9 set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS}) 10 get_filename_component(ASAN_TEST_LLVM_TOOLS_DIR ${CMAKE_C_COMPILER} PATH) 11 set(ASAN_TEST_CONFIG_SUFFIX "-arm-android") 12 set(ASAN_TEST_BITS "32") 13 set(ASAN_TEST_DYNAMIC True) 14 set(ASAN_TEST_TARGET_ARCH "arm-android") 15 configure_lit_site_cfg( 16 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 17 ${CMAKE_CURRENT_BINARY_DIR}/ARMAndroidConfig/lit.site.cfg 18 ) 19 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/ARMAndroidConfig) 20endif() 21 22if(CAN_TARGET_arm) 23 # This is only true if we are cross-compiling. 24 # Build all tests with host compiler and use host tools. 25 set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER}) 26 set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS}) 27 set(ASAN_TEST_CONFIG_SUFFIX "-arm-linux") 28 set(ASAN_TEST_BITS "32") 29 set(ASAN_TEST_DYNAMIC False) 30 configure_lit_site_cfg( 31 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 32 ${CMAKE_CURRENT_BINARY_DIR}/ARMLinuxConfig/lit.site.cfg 33 ) 34 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/ARMLinuxConfig) 35endif() 36 37if(CAN_TARGET_aarch64) 38 # This is only true if we are cross-compiling. 39 # Build all tests with host compiler and use host tools. 40 set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER}) 41 set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS}) 42 set(ASAN_TEST_CONFIG_SUFFIX "-aarch64-linux") 43 set(ASAN_TEST_BITS "64") 44 set(ASAN_TEST_DYNAMIC False) 45 configure_lit_site_cfg( 46 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 47 ${CMAKE_CURRENT_BINARY_DIR}/AArch64LinuxConfig/lit.site.cfg 48 ) 49 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/AArch64LinuxConfig) 50endif() 51 52if(CAN_TARGET_x86_64 OR CAN_TARGET_powerpc64) 53 set(ASAN_TEST_CONFIG_SUFFIX "64") 54 set(ASAN_TEST_BITS "64") 55 set(ASAN_TEST_TARGET_CFLAGS ${TARGET_64_BIT_CFLAGS}) 56 set(ASAN_TEST_DYNAMIC False) 57 configure_lit_site_cfg( 58 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 59 ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig/lit.site.cfg 60 ) 61 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig) 62 if(COMPILER_RT_BUILD_SHARED_ASAN) 63 set(ASAN_TEST_CONFIG_SUFFIX "64-Dynamic") 64 set(ASAN_TEST_DYNAMIC True) 65 configure_lit_site_cfg( 66 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 67 ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig-dynamic/lit.site.cfg) 68 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/64bitConfig-dynamic) 69 endif() 70endif() 71 72if(CAN_TARGET_i386) 73 set(ASAN_TEST_CONFIG_SUFFIX "32") 74 set(ASAN_TEST_BITS "32") 75 set(ASAN_TEST_TARGET_CFLAGS ${TARGET_32_BIT_CFLAGS}) 76 set(ASAN_TEST_DYNAMIC False) 77 set(ASAN_TEST_TARGET_ARCH "i386") 78 configure_lit_site_cfg( 79 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 80 ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig/lit.site.cfg 81 ) 82 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig) 83 if(COMPILER_RT_BUILD_SHARED_ASAN) 84 set(ASAN_TEST_CONFIG_SUFFIX "32-Dynamic") 85 set(ASAN_TEST_DYNAMIC True) 86 configure_lit_site_cfg( 87 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 88 ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic/lit.site.cfg) 89 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic) 90 endif() 91endif() 92 93if(CAN_TARGET_mips) 94 set(ASAN_TEST_CONFIG_SUFFIX "32") 95 set(ASAN_TEST_BITS "32") 96 set(ASAN_TEST_TARGET_CFLAGS ${TARGET_32_BIT_CFLAGS}) 97 set(ASAN_TEST_DYNAMIC False) 98 configure_lit_site_cfg( 99 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 100 ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig/lit.site.cfg 101 ) 102 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig) 103 if(COMPILER_RT_BUILD_SHARED_ASAN) 104 set(ASAN_TEST_CONFIG_SUFFIX "32-Dynamic") 105 set(ASAN_TEST_DYNAMIC True) 106 configure_lit_site_cfg( 107 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in 108 ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic/lit.site.cfg) 109 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/32bitConfig-dynamic) 110 endif() 111endif() 112 113if(COMPILER_RT_INCLUDE_TESTS) 114 configure_lit_site_cfg( 115 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in 116 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg) 117endif() 118 119set(ASAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS}) 120if(COMPILER_RT_STANDALONE_BUILD) 121 list(APPEND ASAN_TEST_DEPS ${LLVM_TOOLS_BINARY_DIR}/FileCheck) 122else() 123 list(APPEND ASAN_TEST_DEPS asan) 124endif() 125 126# FIXME: support unit test in the android test runner 127if(COMPILER_RT_INCLUDE_TESTS AND NOT CAN_TARGET_arm_android) 128 list(APPEND ASAN_TEST_DEPS AsanUnitTests) 129 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Unit) 130endif() 131add_lit_testsuite(check-asan "Running the AddressSanitizer tests" 132 ${ASAN_TESTSUITES} 133 DEPENDS ${ASAN_TEST_DEPS}) 134set_target_properties(check-asan PROPERTIES FOLDER "ASan tests") 135