blob: 82ec8ff0d6004eef0373f943f3501378fd81f516 [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
Pirama Arumuga Nainarc58a4362016-09-19 23:00:23 -07006# TODO(wwchrome): Re-enable Win64 asan tests when ready.
7# Disable tests for asan Win64 temporarily.
8if(OS_NAME MATCHES "Windows" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
9 set(EXCLUDE_FROM_ALL TRUE)
10endif()
11
Stephen Hines6d186232014-11-26 17:56:19 -080012macro(get_bits_for_arch arch bits)
Stephen Hines86277eb2015-03-23 12:06:32 -070013 if (${arch} MATCHES "i386|i686|arm|mips|mipsel")
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070014 set(${bits} 32)
Pirama Arumuga Nainarc58a4362016-09-19 23:00:23 -070015 elseif (${arch} MATCHES "x86_64|powerpc64|powerpc64le|aarch64|mips64|mips64el|s390x")
Pirama Arumuga Nainar7c915052015-04-08 08:58:29 -070016 set(${bits} 64)
Stephen Hines6d186232014-11-26 17:56:19 -080017 else()
18 message(FATAL_ERROR "Unknown target architecture: ${arch}")
19 endif()
20endmacro()
Stephen Hines2d1fdb22014-05-28 23:58:16 -070021
Pirama Arumuga Nainar799172d2016-03-03 15:50:30 -080022set(ASAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
23if(NOT COMPILER_RT_STANDALONE_BUILD)
24 list(APPEND ASAN_TEST_DEPS asan)
25 if(WIN32 AND COMPILER_RT_HAS_LLD_SOURCES)
26 list(APPEND ASAN_TEST_DEPS
27 lld
28 )
29 endif()
30endif()
31set(ASAN_DYNAMIC_TEST_DEPS ${ASAN_TEST_DEPS})
32
33set(ASAN_TEST_ARCH ${ASAN_SUPPORTED_ARCH})
34if(APPLE)
35 darwin_filter_host_archs(ASAN_SUPPORTED_ARCH ASAN_TEST_ARCH)
36endif()
37
38foreach(arch ${ASAN_TEST_ARCH})
Stephen Hines86277eb2015-03-23 12:06:32 -070039 if(ANDROID)
40 set(ASAN_TEST_TARGET_ARCH ${arch}-android)
41 else()
42 set(ASAN_TEST_TARGET_ARCH ${arch})
43 endif()
44 string(TOLOWER "-${arch}-${OS_NAME}" ASAN_TEST_CONFIG_SUFFIX)
45 get_bits_for_arch(${arch} ASAN_TEST_BITS)
46 if(ANDROID OR ${arch} MATCHES "arm|aarch64")
47 # This is only true if we are cross-compiling.
48 # Build all tests with host compiler and use host tools.
49 set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
Stephen Hines6d186232014-11-26 17:56:19 -080050 set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS})
Stephen Hines86277eb2015-03-23 12:06:32 -070051 else()
52 get_target_flags_for_arch(${arch} ASAN_TEST_TARGET_CFLAGS)
Pirama Arumuga Nainarcdce50b2015-07-01 12:26:56 -070053 string(REPLACE ";" " " ASAN_TEST_TARGET_CFLAGS "${ASAN_TEST_TARGET_CFLAGS}")
Stephen Hines86277eb2015-03-23 12:06:32 -070054 endif()
55 if(ANDROID)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070056 set(ASAN_TEST_DYNAMIC True)
Stephen Hines86277eb2015-03-23 12:06:32 -070057 else()
Stephen Hines6d186232014-11-26 17:56:19 -080058 set(ASAN_TEST_DYNAMIC False)
Stephen Hines86277eb2015-03-23 12:06:32 -070059 endif()
60 string(TOUPPER ${arch} ARCH_UPPER_CASE)
61 set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}Config)
62 configure_lit_site_cfg(
63 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
64 ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg
65 )
66 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
67
68 if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
69 string(TOLOWER "-${arch}-${OS_NAME}-dynamic" ASAN_TEST_CONFIG_SUFFIX)
70 set(ASAN_TEST_DYNAMIC True)
71 set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}DynamicConfig)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070072 configure_lit_site_cfg(
73 ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
Stephen Hines86277eb2015-03-23 12:06:32 -070074 ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg)
75 list(APPEND ASAN_DYNAMIC_TESTSUITES
76 ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
Stephen Hines2d1fdb22014-05-28 23:58:16 -070077 endif()
Stephen Hines86277eb2015-03-23 12:06:32 -070078endforeach()
Stephen Hines2d1fdb22014-05-28 23:58:16 -070079
Stephen Hines86277eb2015-03-23 12:06:32 -070080# Add unit tests.
Stephen Hines2d1fdb22014-05-28 23:58:16 -070081if(COMPILER_RT_INCLUDE_TESTS)
Stephen Hines86277eb2015-03-23 12:06:32 -070082 set(ASAN_TEST_DYNAMIC False)
Stephen Hines2d1fdb22014-05-28 23:58:16 -070083 configure_lit_site_cfg(
84 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
85 ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
Stephen Hines86277eb2015-03-23 12:06:32 -070086 if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
87 set(ASAN_TEST_DYNAMIC True)
88 configure_lit_site_cfg(
89 ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
90 ${CMAKE_CURRENT_BINARY_DIR}/Unit/dynamic/lit.site.cfg)
91 endif()
92 # FIXME: support unit test in the android test runner
93 if (NOT ANDROID)
94 list(APPEND ASAN_TEST_DEPS AsanUnitTests)
95 list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Unit)
96 if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
97 list(APPEND ASAN_DYNAMIC_TEST_DEPS AsanDynamicUnitTests)
98 list(APPEND ASAN_DYNAMIC_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/Unit/dynamic)
99 endif()
100 endif()
Stephen Hines2d1fdb22014-05-28 23:58:16 -0700101endif()
102
Pirama Arumuga Nainarc58a4362016-09-19 23:00:23 -0700103set(LIT_ARGS)
104if(ANDROID)
105 set(LIT_ARGS -j5)
106endif()
107
Stephen Hines2d1fdb22014-05-28 23:58:16 -0700108add_lit_testsuite(check-asan "Running the AddressSanitizer tests"
109 ${ASAN_TESTSUITES}
Pirama Arumuga Nainarc58a4362016-09-19 23:00:23 -0700110 DEPENDS ${ASAN_TEST_DEPS}
111 ARGS ${LIT_ARGS})
112set_target_properties(check-asan PROPERTIES FOLDER "Compiler-RT Misc")
Stephen Hines86277eb2015-03-23 12:06:32 -0700113
114if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
115 # Add check-dynamic-asan target. It is a part of check-all only on Windows,
116 # where we want to always test both dynamic and static runtime.
Pirama Arumuga Nainarc58a4362016-09-19 23:00:23 -0700117
Stephen Hines86277eb2015-03-23 12:06:32 -0700118 if(NOT OS_NAME MATCHES "Windows")
119 set(EXCLUDE_FROM_ALL TRUE)
120 endif()
121 add_lit_testsuite(check-asan-dynamic
122 "Running the AddressSanitizer tests with dynamic runtime"
123 ${ASAN_DYNAMIC_TESTSUITES}
124 DEPENDS ${ASAN_DYNAMIC_TEST_DEPS})
125 set_target_properties(check-asan-dynamic
Pirama Arumuga Nainarc58a4362016-09-19 23:00:23 -0700126 PROPERTIES FOLDER "Compiler-RT Misc")
Stephen Hines86277eb2015-03-23 12:06:32 -0700127 if(NOT OS_NAME MATCHES "Windows")
128 set(EXCLUDE_FROM_ALL FALSE)
129 endif()
130endif()
Pirama Arumuga Nainarc58a4362016-09-19 23:00:23 -0700131
132# TODO(wwchrome): Re-enable the tests for asan Win64 when ready.
133if(OS_NAME MATCHES "Windows" AND CMAKE_SIZEOF_VOID_P EQUAL 8)
134 set(EXCLUDE_FROM_ALL FALSE)
135endif()