85 lines · plain
1include(CompilerRTCompile)2 3set(GWP_ASAN_UNITTEST_CFLAGS4 ${COMPILER_RT_UNITTEST_CFLAGS}5 ${COMPILER_RT_GTEST_CFLAGS}6 ${SANITIZER_TEST_CXX_CFLAGS}7 -std=c++178 -I${COMPILER_RT_SOURCE_DIR}/lib/9 -O210 -g11 -fno-omit-frame-pointer)12 13file(GLOB GWP_ASAN_HEADERS ../*.h)14set(GWP_ASAN_UNITTESTS15 platform_specific/printf_sanitizer_common.cpp16 alignment.cpp17 backtrace.cpp18 basic.cpp19 compression.cpp20 iterate.cpp21 crash_handler_api.cpp22 driver.cpp23 mutex_test.cpp24 slot_reuse.cpp25 thread_contention.cpp26 harness.cpp27 enable_disable.cpp28 late_init.cpp29 options.cpp30 recoverable.cpp31 never_allocated.cpp32 utilities.cpp33)34 35set(GWP_ASAN_UNIT_TEST_HEADERS36 ${GWP_ASAN_HEADERS}37 harness.h)38 39add_custom_target(GwpAsanUnitTests)40set_target_properties(GwpAsanUnitTests PROPERTIES FOLDER "Compiler-RT/Tests")41 42set(GWP_ASAN_UNITTEST_LINK_FLAGS43 ${COMPILER_RT_UNITTEST_LINK_FLAGS} -ldl44 ${COMPILER_RT_UNWINDER_LINK_LIBS}45 ${SANITIZER_TEST_CXX_LIBRARIES})46list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS --driver-mode=g++)47if(NOT WIN32)48 list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS -pthread)49endif()50 51if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST GWP_ASAN_SUPPORTED_ARCH)52 # GWP-ASan unit tests are only run on the host machine.53 set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH})54 55 set(GWP_ASAN_TEST_RUNTIME RTGwpAsanTest.${arch})56 57 set(GWP_ASAN_TEST_RUNTIME_OBJECTS58 $<TARGET_OBJECTS:RTGwpAsan.${arch}>59 $<TARGET_OBJECTS:RTGwpAsanBacktraceSanitizerCommon.${arch}>60 $<TARGET_OBJECTS:RTGwpAsanSegvHandler.${arch}>61 $<TARGET_OBJECTS:RTGwpAsanOptionsParser.${arch}>62 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>63 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>64 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>65 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch}>)66 67 add_library(${GWP_ASAN_TEST_RUNTIME} STATIC68 ${GWP_ASAN_TEST_RUNTIME_OBJECTS})69 70 set_target_properties(${GWP_ASAN_TEST_RUNTIME} PROPERTIES71 ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}72 FOLDER "Compiler-RT/Tests/Runtime")73 74 set(GwpAsanTestObjects)75 generate_compiler_rt_tests(GwpAsanTestObjects76 GwpAsanUnitTests "GwpAsan-${arch}-Test" ${arch}77 SOURCES ${GWP_ASAN_UNITTESTS} ${COMPILER_RT_GTEST_SOURCE}78 RUNTIME ${GWP_ASAN_TEST_RUNTIME}79 DEPS ${GWP_ASAN_UNIT_TEST_HEADERS}80 CFLAGS ${GWP_ASAN_UNITTEST_CFLAGS}81 LINK_FLAGS ${GWP_ASAN_UNITTEST_LINK_FLAGS})82 set_target_properties(GwpAsanUnitTests PROPERTIES83 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})84endif()85