1include(CompilerRTCompile) 2 3set(NSAN_UNITTEST_CFLAGS 4 ${COMPILER_RT_UNITTEST_CFLAGS} 5 ${COMPILER_RT_GTEST_CFLAGS} 6 ${SANITIZER_TEST_CXX_CFLAGS} 7 -I${COMPILER_RT_SOURCE_DIR}/include 8 -I${COMPILER_RT_SOURCE_DIR}/lib 9 -DSANITIZER_COMMON_REDEFINE_BUILTINS_IN_STD 10 -O2 11 -g 12 -fno-omit-frame-pointer) 13 14set(NSAN_UNITTEST_LINK_FLAGS 15 ${COMPILER_RT_UNITTEST_LINK_FLAGS} 16 ${COMPILER_RT_UNWINDER_LINK_LIBS} 17 ${SANITIZER_TEST_CXX_LIBRARIES}) 18set(NSAN_UNITTEST_INSTRUMENTED_LINK_FLAGS ${NSAN_UNITTEST_LINK_FLAGS}) 19list(APPEND NSAN_UNITTEST_INSTRUMENTED_LINK_FLAGS -fsanitize=numerical) 20 21file(GLOB NSAN_HEADERS ../*.h) 22set(NSAN_UNITTESTS 23 NSanUnitTest.cpp 24 nsan_unit_test_main.cpp) 25 26add_custom_target(NsanUnitTests) 27 28if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST NSAN_SUPPORTED_ARCH) 29 # NSan unit tests are only run on the host machine. 30 set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH}) 31 32 set(NsanTestObjects) 33 generate_compiler_rt_tests(NsanTestObjects 34 NsanUnitTests "Nsan-${arch}-Test" ${arch} 35 SOURCES ${NSAN_UNITTESTS} ${COMPILER_RT_GTEST_SOURCE} 36 DEPS ${NSAN_UNIT_TEST_HEADERS} 37 CFLAGS ${NSAN_UNITTEST_CFLAGS} 38 LINK_FLAGS ${NSAN_UNITTEST_INSTRUMENTED_LINK_FLAGS}) 39 set_target_properties(NsanUnitTests PROPERTIES 40 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) 41endif() 42 43