include(CompilerRTCompile) set(NSAN_UNITTEST_CFLAGS ${COMPILER_RT_UNITTEST_CFLAGS} ${COMPILER_RT_GTEST_CFLAGS} ${SANITIZER_TEST_CXX_CFLAGS} -I${COMPILER_RT_SOURCE_DIR}/include -I${COMPILER_RT_SOURCE_DIR}/lib -DSANITIZER_COMMON_REDEFINE_BUILTINS_IN_STD -O2 -g -fno-omit-frame-pointer) set(NSAN_UNITTEST_LINK_FLAGS ${COMPILER_RT_UNITTEST_LINK_FLAGS} ${COMPILER_RT_UNWINDER_LINK_LIBS} ${SANITIZER_TEST_CXX_LIBRARIES}) set(NSAN_UNITTEST_INSTRUMENTED_LINK_FLAGS ${NSAN_UNITTEST_LINK_FLAGS}) list(APPEND NSAN_UNITTEST_INSTRUMENTED_LINK_FLAGS -fsanitize=numerical) file(GLOB NSAN_HEADERS ../*.h) set(NSAN_UNITTESTS NSanUnitTest.cpp nsan_unit_test_main.cpp) add_custom_target(NsanUnitTests) if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST NSAN_SUPPORTED_ARCH) # NSan unit tests are only run on the host machine. set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH}) set(NsanTestObjects) generate_compiler_rt_tests(NsanTestObjects NsanUnitTests "Nsan-${arch}-Test" ${arch} SOURCES ${NSAN_UNITTESTS} ${COMPILER_RT_GTEST_SOURCE} DEPS ${NSAN_UNIT_TEST_HEADERS} CFLAGS ${NSAN_UNITTEST_CFLAGS} LINK_FLAGS ${NSAN_UNITTEST_INSTRUMENTED_LINK_FLAGS}) set_target_properties(NsanUnitTests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) endif()