1include(CheckCXXCompilerFlag) 2include(CompilerRTCompile) 3include(CompilerRTLink) 4 5set(MEMPROF_UNITTEST_CFLAGS 6 ${COMPILER_RT_UNITTEST_CFLAGS} 7 ${COMPILER_RT_GTEST_CFLAGS} 8 ${COMPILER_RT_GMOCK_CFLAGS} 9 ${SANITIZER_TEST_CXX_CFLAGS} 10 -I${COMPILER_RT_SOURCE_DIR}/lib/ 11 -O2 12 -g 13 -fno-rtti 14 -Wno-pedantic 15 -fno-omit-frame-pointer) 16 17# Suppress warnings for gmock variadic macros for clang and gcc respectively. 18append_list_if(SUPPORTS_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS_FLAG -Wno-gnu-zero-variadic-macro-arguments MEMPROF_UNITTEST_CFLAGS) 19append_list_if(COMPILER_RT_HAS_WVARIADIC_MACROS_FLAG -Wno-variadic-macros MEMPROF_UNITTEST_CFLAGS) 20 21file(GLOB MEMPROF_HEADERS ../*.h) 22 23set(MEMPROF_SOURCES 24 ../memprof_mibmap.cpp 25 ../memprof_rawprofile.cpp) 26 27set(MEMPROF_UNITTESTS 28 rawprofile.cpp 29 driver.cpp) 30 31include_directories(../../../include) 32 33set(MEMPROF_UNIT_TEST_HEADERS 34 ${MEMPROF_HEADERS}) 35 36set(MEMPROF_UNITTEST_LINK_FLAGS 37 ${COMPILER_RT_UNITTEST_LINK_FLAGS}) 38 39if(NOT WIN32) 40 list(APPEND MEMPROF_UNITTEST_LINK_FLAGS -pthread) 41endif() 42 43set(MEMPROF_UNITTEST_LINK_LIBRARIES 44 ${COMPILER_RT_UNWINDER_LINK_LIBS} 45 ${SANITIZER_TEST_CXX_LIBRARIES}) 46list(APPEND MEMPROF_UNITTEST_LINK_LIBRARIES "dl") 47 48if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST MEMPROF_SUPPORTED_ARCH) 49 # MemProf unit tests are only run on the host machine. 50 set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH}) 51 52 add_executable(MemProfUnitTests 53 ${MEMPROF_UNITTESTS} 54 ${COMPILER_RT_GTEST_SOURCE} 55 ${COMPILER_RT_GMOCK_SOURCE} 56 ${MEMPROF_SOURCES} 57 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 58 $<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch}> 59 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 60 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>) 61 set_target_compile_flags(MemProfUnitTests ${MEMPROF_UNITTEST_CFLAGS}) 62 set_target_link_flags(MemProfUnitTests ${MEMPROF_UNITTEST_LINK_FLAGS}) 63 target_link_libraries(MemProfUnitTests ${MEMPROF_UNITTEST_LINK_LIBRARIES}) 64 65 if (TARGET cxx-headers OR HAVE_LIBCXX) 66 add_dependencies(MemProfUnitTests cxx-headers) 67 endif() 68 69 set_target_properties(MemProfUnitTests PROPERTIES 70 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) 71endif() 72