sway/CMake/Test.cmake
2016-06-19 12:07:30 -04:00

61 lines
1.7 KiB
CMake

find_package(A2X REQUIRED)
function(configure_test)
set(options)
set(oneValueArgs NAME SUBPROJECT)
set(multiValueArgs WRAPPERS SOURCES INCLUDES LIBRARIES)
cmake_parse_arguments(CONFIGURE_TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
include_directories(
${CMOCKA_INCLUDE_DIR}
${CONFIGURE_TEST_INCLUDES}
)
add_definitions(${CMOCKA_DEFINITIONS})
set(
CMAKE_RUNTIME_OUTPUT_DIRECTORY
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test/${CONFIGURE_TEST_SUBPROJECT}/${CONFIGURE_TEST_NAME}
)
add_executable(${CONFIGURE_TEST_NAME}_test
${CMAKE_SOURCE_DIR}/test/util.c
${CONFIGURE_TEST_SOURCES}
)
list(APPEND CONFIGURE_TEST_WRAPPERS "malloc" "calloc" "realloc" "free")
if (enable-coverage)
add_compile_options(-g -O0 --coverage -fprofile-arcs -ftest-coverage)
endif()
list(LENGTH CONFIGURE_TEST_WRAPPERS WRAPPED_COUNT)
if(NOT ${WRAPPED_COUNT} STREQUAL "0")
set(WRAPPED "")
foreach(WRAPPER ${CONFIGURE_TEST_WRAPPERS})
string(REGEX REPLACE "\\n" "" WRAPPER "${WRAPPER}")
set(WRAPPED
"${WRAPPED} \
-Wl,--wrap=${WRAPPER}"
)
endforeach()
set_target_properties(${CONFIGURE_TEST_NAME}_test
PROPERTIES
LINK_FLAGS "${WRAPPED}"
)
endif()
target_link_libraries(${CONFIGURE_TEST_NAME}_test ${CMOCKA_LIBRARIES} ${CONFIGURE_TEST_LIBRARIES})
if (enable-coverage)
target_link_libraries(${CONFIGURE_TEST_NAME}_test gcov)
setup_target_for_coverage(
${CONFIGURE_TEST_NAME}_cov
${CONFIGURE_TEST_NAME}_test
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/coverage
)
endif()
endfunction()