xref: /llvm-project/compiler-rt/lib/nsan/tests/CMakeLists.txt (revision a853fe25df1cda0117055c0d836e7b107d98c791)
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