brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 0954d5c Raw
85 lines · plain
1include(CheckCXXCompilerFlag)2include(CompilerRTCompile)3include(CompilerRTLink)4 5set(CTX_PROFILE_UNITTEST_CFLAGS6  ${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  -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS12  -O213  -g14  -fno-rtti15  -Wno-pedantic16  -fno-omit-frame-pointer)17 18# Suppress warnings for gmock variadic macros for clang and gcc respectively.19append_list_if(SUPPORTS_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS_FLAG -Wno-gnu-zero-variadic-macro-arguments CTX_PROFILE_UNITTEST_CFLAGS)20append_list_if(COMPILER_RT_HAS_WVARIADIC_MACROS_FLAG -Wno-variadic-macros CTX_PROFILE_UNITTEST_CFLAGS)21 22file(GLOB CTX_PROFILE_HEADERS ../*.h)23 24set(CTX_PROFILE_SOURCES25  ../CtxInstrProfiling.cpp26  ../RootAutoDetector.cpp)27 28set(CTX_PROFILE_UNITTESTS29  CtxInstrProfilingTest.cpp30  RootAutoDetectorTest.cpp31  driver.cpp)32 33include_directories(../../../include)34 35set(CTX_PROFILE_UNITTEST_HEADERS36  ${CTX_PROFILE_HEADERS})37 38set(CTX_PROFILE_UNITTEST_LINK_FLAGS39  ${COMPILER_RT_UNITTEST_LINK_FLAGS})40 41list(APPEND CTX_PROFILE_UNITTEST_LINK_FLAGS -pthread)42 43set(CTX_PROFILE_UNITTEST_DEPS)44if (TARGET cxx-headers OR HAVE_LIBCXX)45  list(APPEND CTX_PROFILE_UNITTEST_DEPS cxx-headers)46endif()47 48set(CTX_PROFILE_UNITTEST_LINK_LIBRARIES49  ${COMPILER_RT_UNWINDER_LINK_LIBS}50  ${SANITIZER_TEST_CXX_LIBRARIES})51append_list_if(COMPILER_RT_HAS_LIBDL -ldl CTX_PROFILE_UNITTEST_LINK_LIBRARIES)52 53macro (add_ctx_profile_tests_for_arch arch)54  set(CTX_PROFILE_TEST_RUNTIME_OBJECTS55    $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>56    $<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch}>57    $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>58    $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>59    $<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch}>60  )61  set(CTX_PROFILE_TEST_RUNTIME RTCtxProfileTest.${arch})62  add_library(${CTX_PROFILE_TEST_RUNTIME} STATIC ${CTX_PROFILE_TEST_RUNTIME_OBJECTS})63  set_target_properties(${CTX_PROFILE_TEST_RUNTIME} PROPERTIES64    ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}65    FOLDER "Compiler-RT Runtime tests")66  set(CTX_PROFILE_TEST_OBJECTS)67  generate_compiler_rt_tests(CTX_PROFILE_TEST_OBJECTS68    CtxProfileUnitTests "CtxProfile-${arch}-UnitTest" ${arch}69    RUNTIME ${CTX_PROFILE_TEST_RUNTIME}70    DEPS ${CTX_PROFILE_UNITTEST_DEPS}71    SOURCES ${CTX_PROFILE_UNITTESTS} ${CTX_PROFILE_SOURCES} ${COMPILER_RT_GTEST_SOURCE}72    COMPILE_DEPS ${CTX_PROFILE_UNITTEST_HEADERS}73    CFLAGS ${CTX_PROFILE_UNITTEST_CFLAGS}74    LINK_FLAGS ${CTX_PROFILE_UNITTEST_LINK_FLAGS} ${CTX_PROFILE_UNITTEST_LINK_LIBRARIES})75endmacro()76 77add_custom_target(CtxProfileUnitTests)78set_target_properties(CtxProfileUnitTests PROPERTIES FOLDER "Compiler-RT Tests")79if(COMPILER_RT_CAN_EXECUTE_TESTS AND COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST CTX_PROFILE_SUPPORTED_ARCH)80  # CtxProfile unit tests are only run on the host machine.81  foreach(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH})82    add_ctx_profile_tests_for_arch(${arch})83  endforeach()84endif()85