1include(CompilerRTCompile) 2 3set(GWP_ASAN_UNITTEST_CFLAGS 4 ${COMPILER_RT_UNITTEST_CFLAGS} 5 ${COMPILER_RT_GTEST_CFLAGS} 6 -I${COMPILER_RT_SOURCE_DIR}/lib/ 7 -O2 8 -g 9 -fno-omit-frame-pointer) 10 11file(GLOB GWP_ASAN_HEADERS ../*.h) 12set(GWP_ASAN_UNITTESTS 13 platform_specific/printf_sanitizer_common.cpp 14 alignment.cpp 15 backtrace.cpp 16 basic.cpp 17 compression.cpp 18 iterate.cpp 19 crash_handler_api.cpp 20 driver.cpp 21 mutex_test.cpp 22 slot_reuse.cpp 23 thread_contention.cpp 24 harness.cpp 25 enable_disable.cpp 26 late_init.cpp 27 options.cpp) 28 29set(GWP_ASAN_UNIT_TEST_HEADERS 30 ${GWP_ASAN_HEADERS} 31 harness.h) 32 33add_custom_target(GwpAsanUnitTests) 34set_target_properties(GwpAsanUnitTests PROPERTIES FOLDER "Compiler-RT Tests") 35 36set(GWP_ASAN_UNITTEST_LINK_FLAGS ${COMPILER_RT_UNITTEST_LINK_FLAGS} -ldl) 37list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS --driver-mode=g++) 38if(NOT WIN32) 39 list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS -pthread) 40endif() 41 42if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST GWP_ASAN_SUPPORTED_ARCH) 43 # GWP-ASan unit tests are only run on the host machine. 44 set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH}) 45 46 set(GWP_ASAN_TEST_RUNTIME RTGwpAsanTest.${arch}) 47 48 set(GWP_ASAN_TEST_RUNTIME_OBJECTS 49 $<TARGET_OBJECTS:RTGwpAsan.${arch}> 50 $<TARGET_OBJECTS:RTGwpAsanBacktraceSanitizerCommon.${arch}> 51 $<TARGET_OBJECTS:RTGwpAsanSegvHandler.${arch}> 52 $<TARGET_OBJECTS:RTGwpAsanOptionsParser.${arch}> 53 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 54 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 55 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>) 56 57 add_library(${GWP_ASAN_TEST_RUNTIME} STATIC 58 ${GWP_ASAN_TEST_RUNTIME_OBJECTS}) 59 60 set_target_properties(${GWP_ASAN_TEST_RUNTIME} PROPERTIES 61 ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 62 FOLDER "Compiler-RT Runtime tests") 63 64 set(GwpAsanTestObjects) 65 generate_compiler_rt_tests(GwpAsanTestObjects 66 GwpAsanUnitTests "GwpAsan-${arch}-Test" ${arch} 67 SOURCES ${GWP_ASAN_UNITTESTS} ${COMPILER_RT_GTEST_SOURCE} 68 RUNTIME ${GWP_ASAN_TEST_RUNTIME} 69 DEPS gtest ${GWP_ASAN_UNIT_TEST_HEADERS} 70 CFLAGS ${GWP_ASAN_UNITTEST_CFLAGS} 71 LINK_FLAGS ${GWP_ASAN_UNITTEST_LINK_FLAGS}) 72 set_target_properties(GwpAsanUnitTests PROPERTIES 73 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) 74endif() 75