-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathCMakeLists.txt
151 lines (119 loc) · 4.4 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# SPDX-FileCopyrightText: 2023 Istituto Italiano di Tecnologia (IIT)
# SPDX-License-Identifier: BSD-3-Clause
if(NOT YARP_COMPILE_TESTS)
return()
endif()
#########################################################################
# Options
include(CMakeDependentOption)
if(YARP_ENABLE_BROKEN_TESTS)
add_definitions(-DENABLE_BROKEN_TESTS)
endif()
if(YARP_VALGRIND_TESTS)
add_definitions(-DWITH_VALGRIND)
endif()
if(YARP_DISABLE_FAILING_TESTS)
add_definitions(-DDISABLE_FAILING_TESTS)
endif()
#########################################################################
# Control where test libraries and executables are placed during the build
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/tests")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/tests")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/tests")
#########################################################################
# Prepare 'build_generator' and 'build_options' variables
# for tests in subdirectories
set(build_generator --build-generator "${CMAKE_GENERATOR}")
if(CMAKE_GENERATOR_PLATFORM)
list(APPEND build_generator --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}")
endif()
if(CMAKE_GENERATOR_TOOLSET)
list(APPEND build_generator --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}")
endif()
if(CMAKE_CONFIGURATION_TYPES)
list(APPEND build_generator --build-config $<CONFIGURATION>)
endif()
set(build_options -Wno-dev)
if(CMAKE_BUILD_TYPE)
list(APPEND build_options -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
endif()
if(YARP_TEST_LAUNCHER)
set(_test_launcher "-DYARP_TEST_LAUNCHER=${YARP_TEST_LAUNCHER}")
string(REPLACE ";" "\;" _test_launcher "${_test_launcher}")
list(APPEND build_options "${_test_launcher}")
endif()
list(APPEND build_options -DYARP_TEST_TIMEOUT=${YARP_TEST_TIMEOUT})
# Add the CMAKE_BINARY_DIR as a macro so the testing infrastructure
# can find the device compiled as dynamic plugins
file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}" CMAKE_NATIVE_BINARY_DIR)
file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/conf" TEST_DATA_DIR)
if(CMAKE_HOST_WIN32)
string(REPLACE "\\" "\\\\" CMAKE_NATIVE_BINARY_DIR "${CMAKE_NATIVE_BINARY_DIR}")
string(REPLACE "\\" "\\\\" TEST_DATA_DIR "${TEST_DATA_DIR}")
endif()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/YarpBuildLocation.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/YarpBuildLocation.h"
@ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
#########################################################################
# Wrapper for the catch_discover_tests that also enables colors, and sets
# the TIMEOUT and SKIP_RETURN_CODE test properties.
include(Catch)
function(yarp_catch_discover_tests _target)
# Workaround to force catch_discover_tests to run tests under valgrind
set_property(TARGET ${_target} PROPERTY CROSSCOMPILING_EMULATOR "${YARP_TEST_LAUNCHER}")
catch_discover_tests(
${_target}
EXTRA_ARGS "-s" "--use-colour" "yes"
PROPERTIES
TIMEOUT ${YARP_TEST_TIMEOUT}
SKIP_RETURN_CODE 254
)
endfunction()
#########################################################################
# Main harness target
add_library(YARP_harness STATIC)
add_library(YARP::YARP_harness ALIAS YARP_harness)
target_sources(YARP_harness
PRIVATE
harness.cpp
harness.h
)
target_link_libraries(YARP_harness
PRIVATE
YARP::YARP_conf
YARP::YARP_os
YARP::YARP_init
YARP::YARP_serversql
PUBLIC
YARP::YARP_catch2
)
target_include_directories(YARP_harness
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
set_property(TARGET YARP_harness PROPERTY FOLDER "Test")
#########################################################################
# Main harness target without network
add_library(YARP_harness_no_network STATIC)
add_library(YARP::YARP_harness_no_network ALIAS YARP_harness_no_network)
target_compile_definitions(YARP_harness_no_network PUBLIC WITHOUT_NETWORK)
target_sources(YARP_harness_no_network
PRIVATE
harness.cpp
harness.h
)
target_link_libraries(YARP_harness_no_network
PRIVATE
YARP::YARP_conf
PUBLIC
YARP::YARP_catch2
)
target_include_directories(YARP_harness_no_network
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
set_property(TARGET YARP_harness_no_network PROPERTY FOLDER "Test")
#########################################################################
# Add subdirectories containing the actual tests
add_subdirectory(misc)