| include(CompilerRTCompile) |
| |
| set(GWP_ASAN_UNITTEST_CFLAGS |
| ${COMPILER_RT_UNITTEST_CFLAGS} |
| ${COMPILER_RT_GTEST_CFLAGS} |
| ${SANITIZER_TEST_CXX_CFLAGS} |
| -std=c++17 |
| -I${COMPILER_RT_SOURCE_DIR}/lib/ |
| -O2 |
| -g |
| -fno-omit-frame-pointer) |
| |
| file(GLOB GWP_ASAN_HEADERS ../*.h) |
| set(GWP_ASAN_UNITTESTS |
| platform_specific/printf_sanitizer_common.cpp |
| alignment.cpp |
| backtrace.cpp |
| basic.cpp |
| compression.cpp |
| iterate.cpp |
| crash_handler_api.cpp |
| driver.cpp |
| mutex_test.cpp |
| slot_reuse.cpp |
| thread_contention.cpp |
| harness.cpp |
| enable_disable.cpp |
| late_init.cpp |
| options.cpp |
| recoverable.cpp |
| never_allocated.cpp) |
| |
| set(GWP_ASAN_UNIT_TEST_HEADERS |
| ${GWP_ASAN_HEADERS} |
| harness.h) |
| |
| add_custom_target(GwpAsanUnitTests) |
| set_target_properties(GwpAsanUnitTests PROPERTIES FOLDER "Compiler-RT Tests") |
| |
| set(GWP_ASAN_UNITTEST_LINK_FLAGS |
| ${COMPILER_RT_UNITTEST_LINK_FLAGS} -ldl |
| ${COMPILER_RT_UNWINDER_LINK_LIBS} |
| ${SANITIZER_TEST_CXX_LIBRARIES}) |
| list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS --driver-mode=g++) |
| if(NOT WIN32) |
| list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS -pthread) |
| endif() |
| |
| if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST GWP_ASAN_SUPPORTED_ARCH) |
| # GWP-ASan unit tests are only run on the host machine. |
| set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH}) |
| |
| set(GWP_ASAN_TEST_RUNTIME RTGwpAsanTest.${arch}) |
| |
| set(GWP_ASAN_TEST_RUNTIME_OBJECTS |
| $<TARGET_OBJECTS:RTGwpAsan.${arch}> |
| $<TARGET_OBJECTS:RTGwpAsanBacktraceSanitizerCommon.${arch}> |
| $<TARGET_OBJECTS:RTGwpAsanSegvHandler.${arch}> |
| $<TARGET_OBJECTS:RTGwpAsanOptionsParser.${arch}> |
| $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> |
| $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> |
| $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>) |
| |
| add_library(${GWP_ASAN_TEST_RUNTIME} STATIC |
| ${GWP_ASAN_TEST_RUNTIME_OBJECTS}) |
| |
| set_target_properties(${GWP_ASAN_TEST_RUNTIME} PROPERTIES |
| ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| FOLDER "Compiler-RT Runtime tests") |
| |
| set(GwpAsanTestObjects) |
| generate_compiler_rt_tests(GwpAsanTestObjects |
| GwpAsanUnitTests "GwpAsan-${arch}-Test" ${arch} |
| SOURCES ${GWP_ASAN_UNITTESTS} ${COMPILER_RT_GTEST_SOURCE} |
| RUNTIME ${GWP_ASAN_TEST_RUNTIME} |
| DEPS llvm_gtest ${GWP_ASAN_UNIT_TEST_HEADERS} |
| CFLAGS ${GWP_ASAN_UNITTEST_CFLAGS} |
| LINK_FLAGS ${GWP_ASAN_UNITTEST_LINK_FLAGS}) |
| set_target_properties(GwpAsanUnitTests PROPERTIES |
| RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
| endif() |