]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/ms-gsl/tests/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / ms-gsl / tests / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.0.2)
2
3 project(GSLTests CXX)
4 include(FindPkgConfig)
5
6 # will make visual studio generated project group files
7 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
8
9 pkg_search_module(GTestMain gtest_main)
10 if (NOT GTestMain_FOUND)
11 configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
12 execute_process(
13 COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
14 RESULT_VARIABLE result
15 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
16 )
17 if(result)
18 message(FATAL_ERROR "CMake step for googletest failed: ${result}")
19 endif()
20
21 execute_process(
22 COMMAND ${CMAKE_COMMAND} --build .
23 RESULT_VARIABLE result
24 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
25 )
26 if(result)
27 message(FATAL_ERROR "CMake step for googletest failed: ${result}")
28 endif()
29
30 set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
31 set(GTestMain_LIBRARIES gtest_main)
32
33 add_subdirectory(
34 ${CMAKE_CURRENT_BINARY_DIR}/googletest-src
35 ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
36 EXCLUDE_FROM_ALL
37 )
38 endif()
39
40 if (MSVC AND (GSL_CXX_STANDARD EQUAL 17))
41 set(GSL_CPLUSPLUS_OPT -Zc:__cplusplus -permissive-)
42 endif()
43
44 # this interface adds compile options to how the tests are run
45 # please try to keep entries ordered =)
46 add_library(gsl_tests_config INTERFACE)
47 if(MSVC) # MSVC or simulating MSVC
48 target_compile_options(gsl_tests_config INTERFACE
49 ${GSL_CPLUSPLUS_OPT}
50 /EHsc
51 /W4
52 /WX
53 $<$<CXX_COMPILER_ID:MSVC>:
54 /wd4996 # Use of function or classes marked [[deprecated]]
55 /wd26409 # CppCoreCheck - GTest
56 /wd26426 # CppCoreCheck - GTest
57 /wd26440 # CppCoreCheck - GTest
58 /wd26446 # CppCoreCheck - prefer gsl::at()
59 /wd26472 # CppCoreCheck - use gsl::narrow(_cast)
60 /wd26481 # CppCoreCheck - use span instead of pointer arithmetic
61 $<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,1920>: # VS2015
62 /wd4189 # variable is initialized but not referenced
63 $<$<NOT:$<CONFIG:Debug>>: # Release, RelWithDebInfo
64 /wd4702 # Unreachable code
65 >
66 >
67 >
68 $<$<CXX_COMPILER_ID:Clang>:
69 -Weverything
70 -Wno-c++98-compat
71 -Wno-c++98-compat-pedantic
72 -Wno-covered-switch-default # GTest
73 -Wno-deprecated-declarations # Allow tests for [[deprecated]] elements
74 -Wno-global-constructors # GTest
75 -Wno-language-extension-token # GTest gtest-port.h
76 -Wno-missing-braces
77 -Wno-missing-prototypes
78 -Wno-shift-sign-overflow # GTest gtest-port.h
79 -Wno-undef # GTest
80 -Wno-used-but-marked-unused # GTest EXPECT_DEATH
81 $<$<EQUAL:${GSL_CXX_STANDARD},14>: # no support for [[maybe_unused]]
82 -Wno-unused-member-function
83 -Wno-unused-variable
84 >
85 >
86 )
87 else()
88 target_compile_options(gsl_tests_config INTERFACE
89 -fno-strict-aliasing
90 -Wall
91 -Wcast-align
92 -Wconversion
93 -Wctor-dtor-privacy
94 -Werror
95 -Wextra
96 -Wpedantic
97 -Wshadow
98 -Wsign-conversion
99 -Wno-deprecated-declarations # Allow tests for [[deprecated]] elements
100 $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
101 -Weverything
102 -Wno-c++98-compat
103 -Wno-c++98-compat-pedantic
104 -Wno-missing-braces
105 -Wno-covered-switch-default # GTest
106 -Wno-global-constructors # GTest
107 -Wno-missing-prototypes
108 -Wno-padded
109 -Wno-unknown-attributes
110 -Wno-used-but-marked-unused # GTest EXPECT_DEATH
111 -Wno-weak-vtables
112 $<$<EQUAL:${GSL_CXX_STANDARD},14>: # no support for [[maybe_unused]]
113 -Wno-unused-member-function
114 -Wno-unused-variable
115 >
116 >
117 $<$<CXX_COMPILER_ID:Clang>:
118 $<$<AND:$<VERSION_GREATER:$<CXX_COMPILER_VERSION>,4.99>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,6>>:
119 $<$<EQUAL:${GSL_CXX_STANDARD},17>:-Wno-undefined-func-template>
120 >
121 >
122 $<$<CXX_COMPILER_ID:AppleClang>:
123 $<$<AND:$<VERSION_GREATER:$<CXX_COMPILER_VERSION>,9.1>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,10>>:
124 $<$<EQUAL:${GSL_CXX_STANDARD},17>:-Wno-undefined-func-template>
125 >
126 >
127 $<$<CXX_COMPILER_ID:GNU>:
128 -Wdouble-promotion # float implicit to double
129 -Wlogical-op # suspicious uses of logical operators
130 $<$<NOT:$<VERSION_LESS:$<CXX_COMPILER_VERSION>,6>>:
131 -Wduplicated-cond # duplicated if-else conditions
132 -Wmisleading-indentation
133 -Wnull-dereference
134 $<$<EQUAL:${GSL_CXX_STANDARD},14>: # no support for [[maybe_unused]]
135 -Wno-unused-variable
136 >
137 >
138 $<$<NOT:$<VERSION_LESS:$<CXX_COMPILER_VERSION>,7>>:
139 -Wduplicated-branches # identical if-else branches
140 >
141 >
142 )
143 endif(MSVC)
144
145 # for tests to find the gtest header
146 target_include_directories(gsl_tests_config SYSTEM INTERFACE
147 googletest/googletest/include
148 )
149
150 set_property(TARGET PROPERTY FOLDER "GSL_tests")
151
152 function(add_gsl_test name)
153 add_executable(${name} ${name}.cpp)
154 target_link_libraries(${name}
155 GSL
156 gsl_tests_config
157 ${GTestMain_LIBRARIES}
158 )
159 add_test(
160 ${name}
161 ${name}
162 )
163 # group all tests under GSL_tests
164 set_property(TARGET ${name} PROPERTY FOLDER "GSL_tests")
165 endfunction()
166
167 add_gsl_test(span_tests)
168 add_gsl_test(span_ext_tests)
169 add_gsl_test(span_compatibility_tests)
170 add_gsl_test(multi_span_tests)
171 add_gsl_test(strided_span_tests)
172 add_gsl_test(string_span_tests)
173 add_gsl_test(at_tests)
174 add_gsl_test(bounds_tests)
175 add_gsl_test(notnull_tests)
176 add_gsl_test(assertion_tests)
177 add_gsl_test(utils_tests)
178 add_gsl_test(owner_tests)
179 add_gsl_test(byte_tests)
180 add_gsl_test(algorithm_tests)
181 add_gsl_test(strict_notnull_tests)
182
183
184 # No exception tests
185
186 foreach(flag_var
187 CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
188 CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
189 STRING (REGEX REPLACE "/EHsc" "" ${flag_var} "${${flag_var}}")
190 endforeach(flag_var)
191
192 # this interface adds compile options to how the tests are run
193 # please try to keep entries ordered =)
194 add_library(gsl_tests_config_noexcept INTERFACE)
195 if(MSVC) # MSVC or simulating MSVC
196 target_compile_definitions(gsl_tests_config_noexcept INTERFACE
197 _HAS_EXCEPTIONS=0 # disable exceptions in the Microsoft STL
198 )
199 target_compile_options(gsl_tests_config_noexcept INTERFACE
200 ${GSL_CPLUSPLUS_OPT}
201 /W4
202 /WX
203 $<$<CXX_COMPILER_ID:MSVC>:
204 /wd4577
205 /wd4702
206 /wd26440 # CppCoreCheck - GTest
207 /wd26446 # CppCoreCheck - prefer gsl::at()
208 >
209 $<$<CXX_COMPILER_ID:Clang>:
210 -Weverything
211 -Wno-c++98-compat
212 -Wno-c++98-compat-pedantic
213 -Wno-missing-prototypes
214 -Wno-unknown-attributes
215 >
216 )
217 else()
218 target_compile_options(gsl_tests_config_noexcept INTERFACE
219 -fno-exceptions
220 -fno-strict-aliasing
221 -Wall
222 -Wcast-align
223 -Wconversion
224 -Wctor-dtor-privacy
225 -Werror
226 -Wextra
227 -Wpedantic
228 -Wshadow
229 -Wsign-conversion
230 $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
231 -Weverything
232 -Wno-c++98-compat
233 -Wno-c++98-compat-pedantic
234 -Wno-missing-prototypes
235 -Wno-unknown-attributes
236 -Wno-weak-vtables
237 >
238 $<$<CXX_COMPILER_ID:GNU>:
239 -Wdouble-promotion # float implicit to double
240 -Wlogical-op # suspicious uses of logical operators
241 -Wuseless-cast # casting to its own type
242 $<$<NOT:$<VERSION_LESS:$<CXX_COMPILER_VERSION>,6>>:
243 -Wduplicated-cond # duplicated if-else conditions
244 -Wmisleading-indentation
245 -Wnull-dereference
246 >
247 $<$<NOT:$<VERSION_LESS:$<CXX_COMPILER_VERSION>,7>>:
248 -Wduplicated-branches # identical if-else branches
249 >
250 $<$<NOT:$<VERSION_LESS:$<CXX_COMPILER_VERSION>,8>>:
251 -Wcast-align=strict # increase alignment (i.e. char* to int*)
252 >
253 >
254 )
255 endif(MSVC)
256
257 function(add_gsl_test_noexcept name)
258 add_executable(${name} ${name}.cpp)
259 target_link_libraries(${name}
260 GSL
261 gsl_tests_config_noexcept
262 ${GTestMain_LIBRARIES}
263 )
264 add_test(
265 ${name}
266 ${name}
267 )
268 # group all tests under GSL_tests_noexcept
269 set_property(TARGET ${name} PROPERTY FOLDER "GSL_tests_noexcept")
270 endfunction()
271
272 add_gsl_test_noexcept(no_exception_ensure_tests)