|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# Copyright (c) 2007 Daniel Gollub <dgollub@suse.de>
|
|
Packit Service |
31306d |
# Copyright (c) 2007-2018 Andreas Schneider <asn@cryptomilk.org>
|
|
Packit Service |
31306d |
# Copyright (c) 2018 Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# Redistribution and use is allowed according to the terms of the BSD license.
|
|
Packit Service |
31306d |
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
#.rst:
|
|
Packit Service |
31306d |
# AddCMockaTest
|
|
Packit Service |
31306d |
# -------------
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# This file provides a function to add a test
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# Functions provided
|
|
Packit Service |
31306d |
# ------------------
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# ::
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# add_cmocka_test(target_name
|
|
Packit Service |
31306d |
# SOURCES src1 src2 ... srcN
|
|
Packit Service |
31306d |
# [COMPILE_OPTIONS opt1 opt2 ... optN]
|
|
Packit Service |
31306d |
# [LINK_LIBRARIES lib1 lib2 ... libN]
|
|
Packit Service |
31306d |
# [LINK_OPTIONS lopt1 lop2 .. loptN]
|
|
Packit Service |
31306d |
# )
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# ``target_name``:
|
|
Packit Service |
31306d |
# Required, expects the name of the test which will be used to define a target
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# ``SOURCES``:
|
|
Packit Service |
31306d |
# Required, expects one or more source files names
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# ``COMPILE_OPTIONS``:
|
|
Packit Service |
31306d |
# Optional, expects one or more options to be passed to the compiler
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# ``LINK_LIBRARIES``:
|
|
Packit Service |
31306d |
# Optional, expects one or more libraries to be linked with the test
|
|
Packit Service |
31306d |
# executable.
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# ``LINK_OPTIONS``:
|
|
Packit Service |
31306d |
# Optional, expects one or more options to be passed to the linker
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# Example:
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# .. code-block:: cmake
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# add_cmocka_test(my_test
|
|
Packit Service |
31306d |
# SOURCES my_test.c other_source.c
|
|
Packit Service |
31306d |
# COMPILE_OPTIONS -g -Wall
|
|
Packit Service |
31306d |
# LINK_LIBRARIES mylib
|
|
Packit Service |
31306d |
# LINK_OPTIONS -Wl,--enable-syscall-fixup
|
|
Packit Service |
31306d |
# )
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
# Where ``my_test`` is the name of the test, ``my_test.c`` and
|
|
Packit Service |
31306d |
# ``other_source.c`` are sources for the binary, ``-g -Wall`` are compiler
|
|
Packit Service |
31306d |
# options to be used, ``mylib`` is a target of a library to be linked, and
|
|
Packit Service |
31306d |
# ``-Wl,--enable-syscall-fixup`` is an option passed to the linker.
|
|
Packit Service |
31306d |
#
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
enable_testing()
|
|
Packit Service |
31306d |
include(CTest)
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if (CMAKE_CROSSCOMPILING)
|
|
Packit Service |
31306d |
if (WIN32)
|
|
Packit Service |
31306d |
find_program(WINE_EXECUTABLE
|
|
Packit Service |
31306d |
NAMES wine)
|
|
Packit Service |
31306d |
set(TARGET_SYSTEM_EMULATOR ${WINE_EXECUTABLE})
|
|
Packit Service |
31306d |
endif()
|
|
Packit Service |
31306d |
endif()
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
function(ADD_CMOCKA_TEST _TARGET_NAME)
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
set(one_value_arguments
|
|
Packit Service |
31306d |
)
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
set(multi_value_arguments
|
|
Packit Service |
31306d |
SOURCES
|
|
Packit Service |
31306d |
COMPILE_OPTIONS
|
|
Packit Service |
31306d |
LINK_LIBRARIES
|
|
Packit Service |
31306d |
LINK_OPTIONS
|
|
Packit Service |
31306d |
)
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
cmake_parse_arguments(_add_cmocka_test
|
|
Packit Service |
31306d |
""
|
|
Packit Service |
31306d |
"${one_value_arguments}"
|
|
Packit Service |
31306d |
"${multi_value_arguments}"
|
|
Packit Service |
31306d |
${ARGN}
|
|
Packit Service |
31306d |
)
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if (NOT DEFINED _add_cmocka_test_SOURCES)
|
|
Packit Service |
31306d |
message(FATAL_ERROR "No sources provided for target ${_TARGET_NAME}")
|
|
Packit Service |
31306d |
endif()
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
add_executable(${_TARGET_NAME} ${_add_cmocka_test_SOURCES})
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if (DEFINED _add_cmocka_test_COMPILE_OPTIONS)
|
|
Packit Service |
31306d |
target_compile_options(${_TARGET_NAME}
|
|
Packit Service |
31306d |
PRIVATE ${_add_cmocka_test_COMPILE_OPTIONS}
|
|
Packit Service |
31306d |
)
|
|
Packit Service |
31306d |
endif()
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if (DEFINED _add_cmocka_test_LINK_LIBRARIES)
|
|
Packit Service |
31306d |
target_link_libraries(${_TARGET_NAME}
|
|
Packit Service |
31306d |
PRIVATE ${_add_cmocka_test_LINK_LIBRARIES}
|
|
Packit Service |
31306d |
)
|
|
Packit Service |
31306d |
endif()
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if (DEFINED _add_cmocka_test_LINK_OPTIONS)
|
|
Packit Service |
31306d |
set_target_properties(${_TARGET_NAME}
|
|
Packit Service |
31306d |
PROPERTIES LINK_FLAGS
|
|
Packit Service |
31306d |
${_add_cmocka_test_LINK_OPTIONS}
|
|
Packit Service |
31306d |
)
|
|
Packit Service |
31306d |
endif()
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
add_test(${_TARGET_NAME}
|
|
Packit Service |
31306d |
${TARGET_SYSTEM_EMULATOR} ${_TARGET_NAME}
|
|
Packit Service |
31306d |
)
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
endfunction (ADD_CMOCKA_TEST)
|