@@ -41,33 +41,47 @@ if(NOT WIN32)
41
41
list (APPEND MEMPROF_UNITTEST_LINK_FLAGS -pthread)
42
42
endif ()
43
43
44
+ set (MEMPROF_UNITTEST_DEPS)
45
+ if (TARGET cxx-headers OR HAVE_LIBCXX)
46
+ list (APPEND MEMPROF_UNITTEST_DEPS cxx-headers)
47
+ endif ()
48
+
44
49
set (MEMPROF_UNITTEST_LINK_LIBRARIES
45
50
${COMPILER_RT_UNWINDER_LINK_LIBS}
46
51
${SANITIZER_TEST_CXX_LIBRARIES} )
47
- list (APPEND MEMPROF_UNITTEST_LINK_LIBRARIES "dl" )
48
-
49
- if (COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST MEMPROF_SUPPORTED_ARCH)
50
- # MemProf unit tests are only run on the host machine.
51
- set (arch ${COMPILER_RT_DEFAULT_TARGET_ARCH} )
52
+ append_list_if(COMPILER_RT_HAS_LIBDL -ldl MEMPROF_UNITTEST_LINK_LIBRARIES)
52
53
53
- add_executable (MemProfUnitTests
54
- ${MEMPROF_UNITTESTS}
55
- ${COMPILER_RT_GTEST_SOURCE}
56
- ${COMPILER_RT_GMOCK_SOURCE}
57
- ${MEMPROF_SOURCES}
54
+ # Adds memprof tests for each architecture.
55
+ macro (add_memprof_tests_for_arch arch)
56
+ set (MEMPROF_TEST_RUNTIME_OBJECTS
58
57
$<TARGET_OBJECTS:RTSanitizerCommon.${arch} >
59
58
$<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch} >
60
59
$<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch} >
61
60
$<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch} >
62
- $<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch} >)
63
- set_target_compile_flags(MemProfUnitTests ${MEMPROF_UNITTEST_CFLAGS} )
64
- set_target_link_flags(MemProfUnitTests ${MEMPROF_UNITTEST_LINK_FLAGS} )
65
- target_link_libraries (MemProfUnitTests ${MEMPROF_UNITTEST_LINK_LIBRARIES} )
66
-
67
- if (TARGET cxx-headers OR HAVE_LIBCXX)
68
- add_dependencies (MemProfUnitTests cxx-headers)
69
- endif ()
61
+ $<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch} >
62
+ )
63
+ set (MEMPROF_TEST_RUNTIME RTMemProfTest.${arch} )
64
+ add_library (${MEMPROF_TEST_RUNTIME} STATIC ${MEMPROF_TEST_RUNTIME_OBJECTS} )
65
+ set_target_properties (${MEMPROF_TEST_RUNTIME} PROPERTIES
66
+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
67
+ FOLDER "Compiler-RT Runtime tests" )
68
+ set (MEMPROF_TEST_OBJECTS)
69
+ generate_compiler_rt_tests(MEMPROF_TEST_OBJECTS
70
+ MemProfUnitTests "MemProf-${arch} -UnitTest" ${arch}
71
+ RUNTIME ${MEMPROF_TEST_RUNTIME}
72
+ DEPS ${MEMPROF_UNITTEST_DEPS}
73
+ SOURCES ${MEMPROF_UNITTESTS} ${MEMPROF_SOURCES} ${COMPILER_RT_GTEST_SOURCE}
74
+ COMPILE_DEPS ${MEMPROF_UNIT_TEST_HEADERS}
75
+ CFLAGS ${MEMPROF_UNITTEST_CFLAGS}
76
+ LINK_FLAGS ${MEMPROF_UNITTEST_LINK_FLAGS} ${MEMPROF_UNITTEST_LINK_LIBRARIES} )
77
+ endmacro ()
70
78
71
- set_target_properties (MemProfUnitTests PROPERTIES
72
- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
79
+ # Interception unit tests testsuite.
80
+ add_custom_target (MemProfUnitTests)
81
+ set_target_properties (MemProfUnitTests PROPERTIES FOLDER "Compiler-RT Tests" )
82
+ if (COMPILER_RT_CAN_EXECUTE_TESTS AND COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST MEMPROF_SUPPORTED_ARCH)
83
+ # MemProf unit tests are only run on the host machine.
84
+ foreach (arch ${COMPILER_RT_DEFAULT_TARGET_ARCH} )
85
+ add_memprof_tests_for_arch(${arch} )
86
+ endforeach ()
73
87
endif ()
0 commit comments