blob: aff54db1e77a7638c6075ff2a4c5dfcc8a59f477 [file] [log] [blame]
Stephen Hines2d1fdb22014-05-28 23:58:16 -07001set(ASAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
2
3set(ASAN_TESTSUITES)
Stephen Hines86277eb2015-03-23 12:06:32 -07004set(ASAN_DYNAMIC_TESTSUITES)
Stephen Hines2d1fdb22014-05-28 23:58:16 -07005
Stephen Hines6d186232014-11-26 17:56:19 -08006macro(get_bits_for_arch arch bits)
Stephen Hines86277eb2015-03-23 12:06:32 -07007 if (${arch} MATCHES "i386|i686|arm|mips|mipsel")
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -07008 set(${bits} 32)
Stephen Hines86277eb2015-03-23 12:06:32 -07009 elseif (${arch} MATCHES "x86_64|powerpc64|powerpc64le|aarch64|mips64|mips64el")
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070010 set(${bits} 64)
Stephen Hines6d186232014-11-26 17:56:19 -080011 else()
12 message(FATAL_ERROR "Unknown target architecture: ${arch}")
13 endif()
14endmacro()
Stephen Hines2d1fdb22014-05-28 23:58:16 -070015
Stephen Hines86277eb2015-03-23 12:06:32 -070016foreach(arch ${ASAN_SUPPORTED_ARCH})
17 if(ANDROID)
18 set(ASAN_TEST_TARGET_ARCH ${arch}-android)
19 else()
20 set(ASAN_TEST_TARGET_ARCH ${arch})
21 endif()
22 string(TOLOWER "-${arch}-${OS_NAME}" ASAN_TEST_CONFIG_SUFFIX)
23 get_bits_for_arch(${arch} ASAN_TEST_BITS)
24 if(ANDROID OR ${arch} MATCHES "arm|aarch64")
25 # This is only true if we are cross-compiling.
26 # Build all tests with host compiler and use host tools.
27 set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
Stephen Hines6d186232014-11-26 17:56:19 -080028 set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS})
Stephen Hines86277eb2015-03-23 12:06:32 -070029 else()
30 get_target_flags_for_arch(${arch} ASAN_TEST_TARGET_CFLAGS)
Pirama Arumuga Nainarcdce50b2015-07-01 12:26:56 -070031 string(REPLACE ";" " " ASAN_TEST_TARGET_CFLAGS "${ASAN_TEST_TARGET_CFLAGS}")
Stephen Hines86277eb2015-03-23 12:06:32 -070032 endif()
33 if(ANDROID)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070034 set(ASAN_TEST_DYNAMIC True)
Stephen Hines86277eb2015-03-23 12:06:32 -070035 else()
Stephen Hines6d186232014-11-26 17:56:19 -080036 set(ASAN_TEST_DYNAMIC False)
Stephen Hines86277eb2015-03-23 12:06:32 -070037 endif()
38 string(TOUPPER ${arch} ARCH_UPPER_CASE)
39 set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}Config)
40 configure_lit_site_cfg(
41 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
42 ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg
43 )
44 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
45
46 if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
47 string(TOLOWER "-${arch}-${OS_NAME}-dynamic" ASAN_TEST_CONFIG_SUFFIX)
48 set(ASAN_TEST_DYNAMIC True)
49 set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}DynamicConfig)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070050 configure_lit_site_cfg(
51 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
Stephen Hines86277eb2015-03-23 12:06:32 -070052 ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg)
53 list(APPEND ASAN_DYNAMIC_TESTSUITES
54 ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
Stephen Hines2d1fdb22014-05-28 23:58:16 -070055 endif()
Stephen Hines86277eb2015-03-23 12:06:32 -070056endforeach()
Stephen Hines2d1fdb22014-05-28 23:58:16 -070057
Stephen Hines86277eb2015-03-23 12:06:32 -070058set(ASAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
59if(NOT COMPILER_RT_STANDALONE_BUILD)
60 list(APPEND ASAN_TEST_DEPS asan)
61endif()
62set(ASAN_DYNAMIC_TEST_DEPS ${ASAN_TEST_DEPS})
Stephen Hines6d186232014-11-26 17:56:19 -080063
Stephen Hines86277eb2015-03-23 12:06:32 -070064# Add unit tests.
Stephen Hines2d1fdb22014-05-28 23:58:16 -070065if(COMPILER_RT_INCLUDE_TESTS)
Stephen Hines86277eb2015-03-23 12:06:32 -070066 set(ASAN_TEST_DYNAMIC False)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070067 configure_lit_site_cfg(
68 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
69 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
Stephen Hines86277eb2015-03-23 12:06:32 -070070 if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
71 set(ASAN_TEST_DYNAMIC True)
72 configure_lit_site_cfg(
73 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
74 ${CMAKE_CURRENT_BINARY_DIR}/Unit/dynamic/lit.site.cfg)
75 endif()
76 # FIXME: support unit test in the android test runner
77 if (NOT ANDROID)
78 list(APPEND ASAN_TEST_DEPS AsanUnitTests)
79 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Unit)
80 if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
81 list(APPEND ASAN_DYNAMIC_TEST_DEPS AsanDynamicUnitTests)
82 list(APPEND ASAN_DYNAMIC_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Unit/dynamic)
83 endif()
84 endif()
Stephen Hines2d1fdb22014-05-28 23:58:16 -070085endif()
86
Stephen Hines2d1fdb22014-05-28 23:58:16 -070087add_lit_testsuite(check-asan "Running the AddressSanitizer tests"
88 ${ASAN_TESTSUITES}
89 DEPENDS ${ASAN_TEST_DEPS})
90set_target_properties(check-asan PROPERTIES FOLDER "ASan tests")
Stephen Hines86277eb2015-03-23 12:06:32 -070091
92if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
93 # Add check-dynamic-asan target. It is a part of check-all only on Windows,
94 # where we want to always test both dynamic and static runtime.
95 if(NOT OS_NAME MATCHES "Windows")
96 set(EXCLUDE_FROM_ALL TRUE)
97 endif()
98 add_lit_testsuite(check-asan-dynamic
99 "Running the AddressSanitizer tests with dynamic runtime"
100 ${ASAN_DYNAMIC_TESTSUITES}
101 DEPENDS ${ASAN_DYNAMIC_TEST_DEPS})
102 set_target_properties(check-asan-dynamic
103 PROPERTIES FOLDER "ASan dynamic tests")
104 if(NOT OS_NAME MATCHES "Windows")
105 set(EXCLUDE_FROM_ALL FALSE)
106 endif()
107endif()