diff --git a/CMake/Test.cmake b/CMake/Test.cmake new file mode 100644 index 00000000..58097529 --- /dev/null +++ b/CMake/Test.cmake @@ -0,0 +1,45 @@ +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}) + message("${CONFIGURE_TEST_SOURCES}") + message("${CONFIGURE_TEST_WRAPPERS}") + + 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 ${CONFIGURE_TEST_SOURCES}) + + 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}" + ) + message("${WRAPPER}, ${WRAPPED}") + 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}) +endfunction() diff --git a/CMakeLists.txt b/CMakeLists.txt index 5280b1d5..e3c50491 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,6 +72,7 @@ endif() include(FeatureSummary) include(Manpage) +include(Test) include(GNUInstallDirs) if (enable-gdk-pixbuf)