File cmake.obscpio of Package Cpputest

0707010000BFBC000041ED000003E8000000640000000268A04FE700000000000000080000003000000000000000000000000E00000000cmake/Scripts0707010000BFBE000041ED000003E8000000640000000268A04FE700000000000000080000003000000000000000000000001100000000cmake/Toolchains0707010000BFB8000041ED000003E8000000640000000268A04FE700000000000000080000003000000000000000000000000E00000000cmake/Modules0707010000BFC4000081A4000003E8000000640000000168A04FE7000008CA000000080000003000000000000000000000001400000000cmake/install.cmakeset(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
set(INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")

# Pkg-config file.
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "\${prefix}")
set(libdir "\${exec_prefix}/${LIB_INSTALL_DIR}")
set(includedir "\${prefix}/${INCLUDE_INSTALL_DIR}")
set(PACKAGE_VERSION "${PROJECT_VERSION}")

configure_file(cpputest.pc.in cpputest.pc @ONLY)
install(
    FILES "${CMAKE_CURRENT_BINARY_DIR}/cpputest.pc"
    DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
)

install(
    FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/CppUTestGeneratedConfig.h"
    DESTINATION "${INCLUDE_INSTALL_DIR}/generated"
)

include(CMakePackageConfigHelpers)

set(CPPUTEST_CONFIG_DEST "${LIB_INSTALL_DIR}/CppUTest/cmake")

configure_package_config_file(CppUTestConfig.cmake.install.in
    ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfig.cmake
    INSTALL_DESTINATION "${CPPUTEST_CONFIG_DEST}"
    PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR)
write_basic_package_version_file(
    ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfigVersion.cmake
    COMPATIBILITY SameMajorVersion
)
install(
    FILES
        ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfig.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfigVersion.cmake
    DESTINATION "${CPPUTEST_CONFIG_DEST}"
)
install(
    EXPORT CppUTestTargets
    NAMESPACE CppUTest::
    DESTINATION "${CPPUTEST_CONFIG_DEST}"
)
install(
    FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Scripts/CppUTestBuildTimeDiscoverTests.cmake
    DESTINATION "${CPPUTEST_CONFIG_DEST}/Scripts"
)
install(
    FILES
        ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/CppUTestBuildTimeDiscoverTests.cmake
        ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/CppUTest.cmake
        ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/_CppUTestDiscovery.cmake
    DESTINATION "${CPPUTEST_CONFIG_DEST}/Modules"
)
configure_package_config_file(CppUTestConfig.cmake.build.in
    ${CMAKE_CURRENT_BINARY_DIR}/CppUTestConfig.cmake
    INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
    PATH_VARS INCLUDE_DIR CMAKE_CURRENT_BINARY_DIR
)
write_basic_package_version_file(
    ${CMAKE_CURRENT_BINARY_DIR}/CppUTestConfigVersion.cmake
    COMPATIBILITY SameMajorVersion
)
0707010000BFC5000081A4000003E8000000640000000168A04FE700000749000000080000003000000000000000000000001500000000cmake/warnings.cmakeunset(WARNING_COMMON_FLAGS)
unset(WARNING_C_FLAGS)
unset(WARNING_CXX_FLAGS)

if(
    (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
    (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
    (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
)
    set(WARNING_COMMON_FLAGS
        -Wall
        -Wextra
        -pedantic
        -Wshadow
        -Wswitch-default
        -Wswitch-enum
        -Wconversion
        -Wsign-conversion
        -Wmissing-include-dirs
        -Wno-padded
        -Wno-disabled-macro-expansion
        -Wreserved-id-macro
        -Wreserved-identifier
        -Wno-long-long
        -Wno-unsafe-buffer-usage
    )

    set(WARNING_C_FLAGS
        -Wstrict-prototypes
    )

    set(WARNING_CXX_FLAGS
        -Woverloaded-virtual
        -Wno-global-constructors
        -Wno-exit-time-destructors
        -Wno-weak-vtables
        -Wno-old-style-cast
    )

    if(DEFINED CMAKE_CXX_STANDARD AND NOT CMAKE_CXX_STANDARD EQUAL 98)
        list(APPEND WARNING_CXX_FLAGS
            -Wno-c++98-compat
            -Wno-c++98-compat-pedantic
            -Wno-c++14-compat
            -Wno-inconsistent-missing-destructor-override
            -Wsuggest-override
        )
    endif()

    set(CMAKE_REQUIRED_FLAGS "-Wno-error")
endif()

include(CheckCCompilerFlag)
foreach(flag IN LISTS WARNING_COMMON_FLAGS WARNING_C_FLAGS)
    check_c_compiler_flag("${flag}" WARNING_C_FLAG_${flag})
    if(WARNING_C_FLAG_${flag})
        add_compile_options("$<$<COMPILE_LANGUAGE:C>:${flag}>")
    endif()
endforeach()

include(CheckCXXCompilerFlag)
foreach(flag IN LISTS WARNING_COMMON_FLAGS WARNING_CXX_FLAGS)
    string(REPLACE "++" "xx" WARNING_CXX_FLAG_VAR "WARNING_CXX_FLAG_${flag}")
    check_cxx_compiler_flag("${flag}" ${WARNING_CXX_FLAG_VAR})
    if(${WARNING_CXX_FLAG_VAR})
        add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:${flag}>")
    endif()
endforeach()
0707010000BFBD000081A4000003E8000000640000000168A04FE700000E38000000080000003000000000000000000000003300000000cmake/Scripts/CppUTestBuildTimeDiscoverTests.cmake# Create CTest entries for EXECUTABLE in CTestTestfile.cmake
# Overwrite CTestTestfile.cmake with update version.

# Usage:
#
# This script is to be called from ../Modules/CppUTestBuildTimeDiscoverTests.cmake
#
# Notes on invocation and used variables:
# ${CMAKE_COMMAND} -DTESTS_DETAILED:BOOL=<ON|OFF> -DEXECUTABLE=<FULLPATH-TO-EXECUTABLE> -P <PATH-TO-THIS-SCRIPT>
#
# TESTS_DETAILED c.f. top-level CMakeLists.txt
# FULLPATH-TO-EXECUTABLE - use  $<TARGET_FILE:${EXECUTABLE}> or explicit
# The overwritten CTestTestfile.cmake is located in ${CMAKE_CURRENT_BINARY_DIR}
#
# Steps to generate ADD_TEST() commands build time
# - Read CTestTestfile.cmake
# - Create update entries
# - Remove duplicate entries
# - Write new CTestTestfile.cmake

######################################################################
# helpers
######################################################################
function (buildtime_add_test)
  # Create ADD_TEST() command string
  # - Extract and remove testname from ARGV
  # - Add inner quotes to test arguments
  # - Add "ADD_TEST()", and first and last quote
  # Append result to CTESTTESTS
  list(GET ARGV 0 testname)
  list(REMOVE_AT ARGV 0)
  string (REPLACE ";" "\" \"" TEST_ARGS "${ARGV}")
  set(test_to_add "ADD_TEST(${testname} \"${TEST_ARGS}\")")
  list(APPEND CTESTTESTS ${test_to_add})
  SET(CTESTTESTS ${CTESTTESTS} PARENT_SCOPE)
endfunction()

function (JOIN VALUES GLUE OUTPUT)
  string (REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}")
  set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
endfunction()

function (buildtime_discover_tests EXECUTABLE DISCOVER_ARG OUTPUT)
  execute_process(COMMAND ${EMULATOR} ${EXECUTABLE} ${DISCOVER_ARG}
    OUTPUT_VARIABLE _TMP_OUTPUT
    ERROR_VARIABLE DISCOVER_ERR
    RESULT_VARIABLE DISCOVER_ERR)
  if(NOT ${DISCOVER_ERR} EQUAL 0)
    message(SEND_ERROR "Executable \"${EXECUTABLE} ${DISCOVER_ARG}\" failed with output:\n"
      "${DISCOVER_ERR}\n"
      "Please check that the excutable was added.")
  endif(NOT ${DISCOVER_ERR} EQUAL 0)
  separate_arguments(_TMP_OUTPUT)
  set(${OUTPUT} "${_TMP_OUTPUT}" PARENT_SCOPE)
endfunction()


######################################################################
# Implementation
######################################################################

set(CTESTFNAME "${CMAKE_CURRENT_BINARY_DIR}/CTestTestfile.cmake")
file(STRINGS ${CTESTFNAME} CTESTTESTS)
get_filename_component(EXECUTABLE_SHORT_NAME ${EXECUTABLE} NAME_WE)

if (TESTS_DETAILED)
  set(DISCOVER_ARG "-ln")
  buildtime_discover_tests("${EXECUTABLE}" "${DISCOVER_ARG}" TestList_GroupsAndNames)
  set(lastgroup "")
  foreach(testfullname ${TestList_GroupsAndNames})
    string(REGEX MATCH "^([^/.]+)" groupname ${testfullname})
    string(REGEX MATCH "([^/.]+)$" testname ${testfullname})
    if (NOT ("${groupname}" STREQUAL "${lastgroup}"))
      message("TestGroup: ${groupname}:")
      set(lastgroup "${groupname}")
    endif (NOT ("${groupname}" STREQUAL "${lastgroup}"))
    message("... ${testname}")
    buildtime_add_test(${EXECUTABLE_SHORT_NAME}.${testfullname} ${EMULATOR} ${EXECUTABLE} -sg ${groupname} -sn ${testname})
  endforeach()
else (TESTS_DETAILED)
  set(DISCOVER_ARG "-lg")
  buildtime_discover_tests("${EXECUTABLE}" "${DISCOVER_ARG}" TestList_Groups)
  foreach(group ${TestList_Groups})
    message("TestGroup: ${group}")
    buildtime_add_test(${EXECUTABLE_SHORT_NAME}.${group} ${EMULATOR} "${EXECUTABLE}" -sg ${group})
  endforeach()
endif (TESTS_DETAILED)


# create separate CTest test for each CppUTestTests test

list(REMOVE_DUPLICATES CTESTTESTS)
JOIN("${CTESTTESTS}" "\n" CTESTTESTS)
file(WRITE ${CTESTFNAME} "${CTESTTESTS}\n")
0707010000BFC0000081A4000003E8000000640000000168A04FE70000013F000000080000003000000000000000000000003300000000cmake/Toolchains/clang+mingw-win32.toolchain.cmake# Toolchain to use Clang compiler with MinGW binutils (e.g. linker) in Windows to generate 32-bits executables

set(CMAKE_C_COMPILER clang)
set(CMAKE_C_FLAGS "-target i686-w64-mingw32 -m32" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_FLAGS "-target i686-w64-mingw32 -m32" CACHE STRING "" FORCE)0707010000BFC3000081A4000003E8000000640000000168A04FE7000003AC000000080000003000000000000000000000002B00000000cmake/Toolchains/ewarm-win.toolchain.cmake### BEGIN CMAKE_TOOLCHAIN_FILE
# "Generic" is used when compiling for bare-metal
set(CMAKE_SYSTEM_NAME Generic)

# Set the EW installation root directory
#(Avoid spaces in the path or you need to escape them)
set(EW_ROOT_DIR "E:/Program Files\ (x86)/IAR\ Systems/Embedded\ Workbench\ Arm 8.50.6/arm")

# Compiler flags needed to compile for this CPU
set(CPU_FLAGS "--cpu Cortex-M4F")

# Set up the CMake variables for compiler and assembler
# (The reason for both C and CXX variables is that CMake
# treats C and C++ tools individually)
set(CMAKE_C_COMPILER "${EW_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} --dlib_config normal")
set(CMAKE_CXX_COMPILER "${EW_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} --dlib_config normal")
set(CMAKE_ASM_COMPILER "${EW_ROOT_DIR}/bin/iasmarm.exe" "${CPU_FLAGS}")

# Build with cmake -S. -Bbuild -G "NMake Makefiles" -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ewarm-win.toolchain.cmake

### END CMAKE_TOOLCHAIN_FILE
0707010000BFC2000081A4000003E8000000640000000168A04FE700000373000000080000003000000000000000000000002D00000000cmake/Toolchains/ewarm-linux.toolchain.cmake### BEGIN CMAKE_TOOLCHAIN_FILE
# "Generic" is used when compiling for bare-metal
set(CMAKE_SYSTEM_NAME Generic)

# Set the EW installation root directory
#(Avoid spaces in the path or you need to escape them)
set(EW_ROOT_DIR "/opt/iarsystems/bxarm/arm/")

# Compiler flags needed to compile for this CPU
set(CPU_FLAGS "--cpu Cortex-M4F")

# Set up the CMake variables for compiler and assembler
# (The reason for both C and CXX variables is that CMake
# treats C and C++ tools individually)
set(CMAKE_C_COMPILER "${EW_ROOT_DIR}/bin/iccarm" "${CPU_FLAGS} --dlib_config normal")
set(CMAKE_CXX_COMPILER "${EW_ROOT_DIR}/bin/iccarm" "${CPU_FLAGS} --dlib_config normal")
set(CMAKE_ASM_COMPILER "${EW_ROOT_DIR}/bin/iasmarm" "${CPU_FLAGS}")

# Build with cmake -S. -Bbuild -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ewarm-linux.toolchain.cmake

### END CMAKE_TOOLCHAIN_FILE
0707010000BFBF000081A4000003E8000000640000000168A04FE7000000FC000000080000003000000000000000000000003300000000cmake/Toolchains/arm-none-eabi-gcc.toolchain.cmakeset(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR cortex-m4)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)

set(CMAKE_C_FLAGS_INIT "-mcpu=cortex-m4")
set(CMAKE_CXX_FLAGS_INIT "-mcpu=cortex-m4")
set(CMAKE_EXE_LINKER_FLAGS_INIT "-specs=rdimon.specs")
0707010000BFC1000081A4000003E8000000640000000168A04FE700000139000000080000003000000000000000000000003300000000cmake/Toolchains/clang+mingw-win64.toolchain.cmake# Toolchain to use Clang compiler with MinGW binutils (e.g. linker) in Windows to generate 64-bits executables

set(CMAKE_C_COMPILER clang)
set(CMAKE_C_FLAGS "-target x86_64-w64-mingw32" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_FLAGS "-target x86_64-w64-mingw32" CACHE STRING "" FORCE)0707010000BFB9000081A4000003E8000000640000000168A04FE700000DAA000000080000003000000000000000000000001D00000000cmake/Modules/CppUTest.cmakeset(_CPPUTEST_DISCOVERY_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/_CppUTestDiscovery.cmake
    CACHE INTERNAL "CppUTest discovery scripts"
)

option(CPPUTEST_TESTS_DETAILED "Run discovered tests individually")
option(CPPUTEST_JUNIT_REPORT "Output JUnit test reports")

function(cpputest_discover_tests target)
    set(options JUNIT)
    set(oneValueArgs DETAILED)
    set(multiValueArgs EXTRA_ARGS)
    cmake_parse_arguments(
        ""
        "${options}"
        "${oneValueArgs}"
        "${multiValueArgs}"
        ${ARGN}
    )

    # Validate arguments.
    if(NOT TARGET ${target})
        message(FATAL_ERROR
            "Cannot discover tests for target \"${target}\" "
            "which is not built by this project."
        )
    endif()

    get_property(target_type
        TARGET ${target}
        PROPERTY TYPE
    )
    if(NOT target_type STREQUAL "EXECUTABLE")
        message(FATAL_ERROR
        "Cannot discover tests for target \"${target}\" "
        "which is not an executable."
        )
    endif()
    
    get_property(emulator
        TARGET ${target}
        PROPERTY CROSSCOMPILING_EMULATOR
    )
    if(CMAKE_CROSSCOMPILING)
        if(NOT emulator)
            message(WARNING "Cannot discover cross compiled tests without an emulator")
            return()
        endif()
    endif()

    if(NOT DEFINED _EXTRA_ARGS)
        set(_EXTRA_ARGS -v)
    endif()

    if(NOT DEFINED _DETAILED)
        set(_DETAILED ${CPPUTEST_TESTS_DETAILED})
    endif()

    if(_JUNIT OR CPPUTEST_JUNIT_REPORT)
        list(APPEND _EXTRA_ARGS -ojunit)
    endif()

    set(CTEST_INCLUDE_FILE "${CMAKE_CURRENT_BINARY_DIR}/${target}_include.cmake")
    if(CMAKE_CONFIGURATION_TYPES)
        set(CTEST_GENERATED_FILE "${CMAKE_CURRENT_BINARY_DIR}/${target}.$<CONFIG>.cmake")
        file(WRITE "${CTEST_INCLUDE_FILE}"
            "if(EXISTS \"${CMAKE_CURRENT_BINARY_DIR}/${target}.\${CTEST_CONFIGURATION_TYPE}.cmake\")\n"
            "  include(\"${CMAKE_CURRENT_BINARY_DIR}/${target}.\${CTEST_CONFIGURATION_TYPE}.cmake\")\n"
            "endif()\n"
        )
    else()
        set(CTEST_GENERATED_FILE "${CMAKE_CURRENT_BINARY_DIR}/${target}.cmake")
        file(WRITE "${CTEST_INCLUDE_FILE}"
            "if(EXISTS \"${CTEST_GENERATED_FILE}\")\n"
            "  include(\"${CTEST_GENERATED_FILE}\")\n"
            "endif()\n"
        )
    endif()

    add_custom_command(
        TARGET ${target} POST_BUILD
        BYPRODUCTS "${CTEST_GENERATED_FILE}"
        COMMAND
            "${CMAKE_COMMAND}"
            -D "TESTS_DETAILED:BOOL=${_DETAILED}"
            -D "EXECUTABLE=$<TARGET_FILE:${target}>"
            -D "EMULATOR=${emulator}"
            -D "ARGS=${_EXTRA_ARGS}"
            -D "CTEST_FILE=${CTEST_GENERATED_FILE}"
            -P "${_CPPUTEST_DISCOVERY_SCRIPT}"
        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
        VERBATIM
    )

    if(${CMAKE_VERSION} VERSION_LESS "3.10")
        # We can only set one.
        get_property(already_set
            DIRECTORY
            PROPERTY TEST_INCLUDE_FILE
            SET
        )
        if(${already_set})
            message(FATAL_ERROR
                "Cannot discovery multiple tests from the same file"
            )
        endif()
        set_property(
            DIRECTORY
            PROPERTY TEST_INCLUDE_FILE "${CTEST_INCLUDE_FILE}"
        )
    else()
        set_property(
            DIRECTORY APPEND
            PROPERTY TEST_INCLUDE_FILES "${CTEST_INCLUDE_FILE}"
        )
    endif()

endfunction()
0707010000BFBB000081A4000003E8000000640000000168A04FE700000C28000000080000003000000000000000000000002700000000cmake/Modules/_CppUTestDiscovery.cmakeset(script)

function(add_command NAME)
    set(_args "")
    # use ARGV* instead of ARGN, because ARGN splits arrays into multiple arguments
    math(EXPR _last_arg ${ARGC}-1)
    foreach(_n RANGE 1 ${_last_arg})
        set(_arg "${ARGV${_n}}")
        if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
            set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument
        else()
            set(_args "${_args} ${_arg}")
        endif()
    endforeach()
    set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE)
endfunction()

if(NOT EXISTS "${EXECUTABLE}")
    message(FATAL_ERROR
        "Executable \"${EXECUTABLE}\" does not exist"
    )
endif()

macro(add_test_to_script TEST_NAME TEST_LOCATION SELECT_ARG)
    add_command(
        add_test
        "${TEST_NAME}"
        ${EMULATOR}
        "${EXECUTABLE}"
        ${ARGS}
        ${SELECT_ARG}
        ${TEST_NAME}
    )
    add_command(
        set_tests_properties
        "${TEST_NAME}"
        PROPERTIES
        DEF_SOURCE_LINE
        "${TEST_LOCATION}"
    )
endmacro()

execute_process(
    COMMAND ${EMULATOR} "${EXECUTABLE}" -ll
    OUTPUT_VARIABLE discovered_tests
    RESULT_VARIABLE result
    ERROR_VARIABLE error
)
if(NOT ${result} EQUAL 0)
    message(FATAL_ERROR
        "Error executing ${EXECUTABLE}:\n"
        "${error}"
    )
endif()

string(CONCAT LL_LINE_REGEX
    "^([^.]*)" # test group
    "\\."
    "([^.]*)"  # test name
    "\\."
    "(.*)"     # file name (only this field is allowed to contain dots)
    "\\."
    "([^.]*)"  # line number
    "\n"
)
string(REGEX MATCHALL "[^\n]+\n" discovered_test_lines "${discovered_tests}")
if(TESTS_DETAILED)
    foreach(line IN LISTS discovered_test_lines)
        string(REGEX MATCH "${LL_LINE_REGEX}" __unused "${line}")
        set(test_name "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}")
        file(TO_CMAKE_PATH "${CMAKE_MATCH_3}" test_file)
        set(test_location "${test_file}:${CMAKE_MATCH_4}")
        add_test_to_script("${test_name}" "${test_location}" -st)
    endforeach()
else()
    foreach(line IN LISTS discovered_test_lines)
        string(REGEX MATCH "${LL_LINE_REGEX}" __unused "${line}")
        set(test_name "${CMAKE_MATCH_1}")
        file(TO_CMAKE_PATH "${CMAKE_MATCH_3}" test_file)
        set(test_line "${CMAKE_MATCH_4}")
        if (NOT _${test_name}_file)
            # if the group spans two files, arbitrarily choose the first one encountered
            set(_${test_name}_file "${test_file}")
            set(_${test_name}_line "${test_line}")
        elseif(test_file STREQUAL _${test_name}_file AND test_line LESS _${test_name}_line)
            # line number will eventually be the first line of the first test in the group's file
            set(_${test_name}_line ${test_line})
        endif()
        list(APPEND groups_seen ${test_name})
    endforeach()
    list(REMOVE_DUPLICATES groups_seen)
    foreach(test_name IN LISTS groups_seen)
        set(test_location "${_${test_name}_file}:${_${test_name}_line}")
        add_test_to_script("${test_name}" "${test_location}" -sg)
    endforeach()
endif()

file(WRITE "${CTEST_FILE}" "${script}")
0707010000BFBA000081A4000003E8000000640000000168A04FE700000581000000080000003000000000000000000000003300000000cmake/Modules/CppUTestBuildTimeDiscoverTests.cmakeoption(CPPUTEST_TESTS_DETAILED "Run discovered tests individually")

set(_DISCOVER_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/../Scripts/CppUTestBuildTimeDiscoverTests.cmake")

# Create target to discover tests
function (cpputest_buildtime_discover_tests tgt)
  message(DEPRECATION
    "Use cpputest_discover_tests from the CppUTest module instead"
  )

  set(options)
  set(oneValueArgs DETAILED)
  set(multiValueArgs)
  cmake_parse_arguments(
    ""
    "${options}"
    "${oneValueArgs}"
    "${multiValueArgs}"
    ${ARGN}
  )
  if(NOT DEFINED _DETAILED)
    set(_DETAILED ${CPPUTEST_TESTS_DETAILED})
  endif()

  if(NOT TARGET ${tgt})
    message(FATAL_ERROR
      "Cannot discover tests for target \"${tgt}\" "
      "which is not built by this project."
    )
  endif()

  get_property(target_type
    TARGET ${tgt}
    PROPERTY TYPE
  )
  if(NOT target_type STREQUAL "EXECUTABLE")
    message(FATAL_ERROR
      "Cannot discover tests for target \"${tgt}\" "
      "which is not an executable."
    )
  endif()

  add_custom_command(
    TARGET ${tgt} POST_BUILD
    COMMAND
      ${CMAKE_COMMAND}
      -D "TESTS_DETAILED:BOOL=${_DETAILED}"
      -D "EXECUTABLE=$<TARGET_FILE:${tgt}>"
      -D "EMULATOR=$<TARGET_PROPERTY:${tgt},CROSSCOMPILING_EMULATOR>"
      -P "${_DISCOVER_SCRIPT}"
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "Discovering Tests in ${tgt}"
    VERBATIM
  )
endfunction ()
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!
openSUSE Build Service is sponsored by