Differential D23789 Diff 67653 tests/ECMGenerateExportHeaderTest/consumer/testAPI_NO_DEPRECATED.cmake
Changeset View
Changeset View
Standalone View
Standalone View
tests/ECMGenerateExportHeaderTest/consumer/testAPI_NO_DEPRECATED.cmake
- This file was added.
1 | if(GROUP_MODE STREQUAL "GROUP_USE_GROUP") | ||||
---|---|---|---|---|---|
2 | set(_deprecation_macros_base_name "LIBGROUP") | ||||
3 | else() | ||||
4 | set(_deprecation_macros_base_name "LIBRARY") | ||||
5 | endif() | ||||
6 | | ||||
7 | function(testAPI code_var_name) | ||||
8 | set(options BUILD_TIME_ONLY_DISABLABLE NO_WARNING) | ||||
9 | set(oneValueArgs DEPRECATED_AT) | ||||
10 | set(multiValueArgs) | ||||
11 | cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | ||||
12 | | ||||
13 | if((NOT ARGS_DEPRECATED_AT) OR | ||||
14 | (ARGS_BUILD_TIME_ONLY_DISABLABLE AND ARGS_DEPRECATED_AT VERSION_GREATER DEPRECATED_EXCLUDED_BEFORE_AND_AT)) | ||||
15 | set(_build_result_expected TRUE) | ||||
16 | else() | ||||
17 | set(_build_result_expected FALSE) | ||||
18 | endif() | ||||
19 | | ||||
20 | set(CMAKE_REQUIRED_LIBRARIES library) | ||||
21 | set(CMAKE_REQUIRED_DEFINITIONS "-D${_deprecation_macros_base_name}_NO_DEPRECATED") | ||||
22 | | ||||
23 | set(_code " | ||||
24 | #include <library.hpp> | ||||
25 | int main(int, char**) | ||||
26 | { | ||||
27 | ${${code_var_name}} | ||||
28 | } | ||||
29 | ") | ||||
30 | | ||||
31 | unset(_result CACHE) # clear out as check_cxx_source_compiles caches the result | ||||
32 | check_cxx_source_compiles("${_code}" _result) | ||||
33 | | ||||
34 | assert_var_bool_value(_result ${_build_result_expected}) | ||||
35 | | ||||
36 | # check warning | ||||
37 | if(_build_result_expected) | ||||
38 | if(ARGS_BUILD_TIME_ONLY_DISABLABLE AND NOT ARGS_NO_WARNING) | ||||
39 | set(_dep_warning_result_expected FALSE) | ||||
40 | else() | ||||
41 | set(_dep_warning_result_expected TRUE) | ||||
42 | endif() | ||||
43 | | ||||
44 | set(CMAKE_REQUIRED_FLAGS "-Werror=deprecated-declarations") | ||||
45 | set(CMAKE_REQUIRED_DEFINITIONS) # unset LIBRARY_DISABLE_DEPRECATED_BEFORE_AND_AT, as LIBRARY_DEPRECATED_WARNINGS_SINCE defaults to it | ||||
46 | unset(_dep_warning_result CACHE) # clear out as check_cxx_source_compiles caches the result | ||||
47 | check_cxx_source_compiles("${_code}" _dep_warning_result) | ||||
48 | assert_var_bool_value(_dep_warning_result ${_dep_warning_result_expected}) | ||||
49 | endif() | ||||
50 | endfunction() |