Changeset View
Changeset View
Standalone View
Standalone View
tests/ECMGenerateExportHeaderTest/CMakeLists.txt
- This file was added.
1 | set(installation_path "${CMAKE_CURRENT_BINARY_DIR}/installation/") | ||||
---|---|---|---|---|---|
2 | | ||||
3 | macro(add_generate_export_header_library_test _exclude_deprecated_before_and_at) | ||||
4 | if("${ARGV1}" STREQUAL "WITH_GROUP") | ||||
5 | set(_set_group_option "-DSET_GROUP=TRUE") | ||||
6 | set(_library_buildname "library-${_exclude_deprecated_before_and_at}-group") | ||||
7 | else() | ||||
8 | set(_library_buildname "library-${_exclude_deprecated_before_and_at}") | ||||
9 | endif() | ||||
10 | add_test(NAME ecm_generate_export_header-build-${_library_buildname} | ||||
11 | COMMAND ${CMAKE_CTEST_COMMAND} | ||||
12 | --build-and-test | ||||
13 | "${CMAKE_CURRENT_SOURCE_DIR}/library" | ||||
14 | "${CMAKE_CURRENT_BINARY_DIR}/${_library_buildname}" | ||||
15 | --build-two-config | ||||
16 | --build-generator "${CMAKE_GENERATOR}" | ||||
17 | --build-makeprogram ${CMAKE_MAKE_PROGRAM} | ||||
18 | --build-project library | ||||
19 | --build-target install | ||||
20 | --build-options | ||||
21 | "-DEXCLUDE_DEPRECATED_BEFORE_AND_AT=${_exclude_deprecated_before_and_at}" | ||||
22 | "-DCMAKE_INSTALL_PREFIX:PATH=${installation_path}/${_library_buildname}" | ||||
23 | ${_set_group_option} | ||||
24 | --test-command dummy | ||||
25 | ) | ||||
26 | endmacro() | ||||
27 | | ||||
28 | macro(add_generate_export_header_consumer_test _test_variant _exclude_deprecated_before_and_at _group_test_mode _consumer_build) | ||||
29 | set(_extra_build_options ${ARGN}) | ||||
30 | if(_group_test_mode STREQUAL "GROUPLESS") | ||||
31 | set(_library "library-${_exclude_deprecated_before_and_at}") | ||||
32 | else() | ||||
33 | set(_library "library-${_exclude_deprecated_before_and_at}-group") | ||||
34 | endif() | ||||
35 | add_test(NAME ecm_generate_export_header-${_consumer_build} | ||||
36 | COMMAND ${CMAKE_CTEST_COMMAND} | ||||
37 | --build-and-test | ||||
38 | "${CMAKE_CURRENT_SOURCE_DIR}/consumer" | ||||
39 | "${CMAKE_CURRENT_BINARY_DIR}/${_consumer_build}" | ||||
40 | --build-two-config | ||||
41 | --build-generator "${CMAKE_GENERATOR}" | ||||
42 | --build-makeprogram ${CMAKE_MAKE_PROGRAM} | ||||
43 | --build-project consumer | ||||
44 | --build-options | ||||
45 | "-DTEST_VARIANT:STRING=${_test_variant}" | ||||
46 | "-DDEPRECATED_EXCLUDED_BEFORE_AND_AT:STRING=${_exclude_deprecated_before_and_at}" | ||||
47 | "-DLIBRARY:STRING=${_library}" | ||||
48 | "-DGROUP_MODE:STRING=${_group_test_mode}" | ||||
49 | ${_extra_build_options} | ||||
50 | --test-command dummy | ||||
51 | ) | ||||
52 | endmacro() | ||||
53 | | ||||
54 | macro(add_generate_export_header_consumer_disable_deprecated_before_and_at_test | ||||
55 | _disable_deprecated_before_and_at | ||||
56 | _exclude_deprecated_before_and_at | ||||
57 | _group_test_mode | ||||
58 | ) | ||||
59 | set(_consumer_build "consumer-${_disable_deprecated_before_and_at}-${_exclude_deprecated_before_and_at}-${_group_test_mode}") | ||||
60 | set(_extra_build_options | ||||
61 | "-DLIBRARY_DISABLE_DEPRECATED_BEFORE_AND_AT:STRING=${_disable_deprecated_before_and_at}" | ||||
62 | ) | ||||
63 | add_generate_export_header_consumer_test(DISABLE_DEPRECATED_BEFORE_AND_AT | ||||
64 | ${_exclude_deprecated_before_and_at} | ||||
65 | ${_group_test_mode} | ||||
66 | ${_consumer_build} | ||||
67 | ${_extra_build_options} | ||||
68 | ) | ||||
69 | endmacro() | ||||
70 | | ||||
71 | macro(add_generate_export_header_consumer_no_deprecated_test _exclude_deprecated_before_and_at _group_test_mode) | ||||
72 | set(_consumer_build "consumer-NO-DEPRECATED-${_exclude_deprecated_before_and_at}-${_group_test_mode}") | ||||
73 | add_generate_export_header_consumer_test(NO_DEPRECATED | ||||
74 | ${_exclude_deprecated_before_and_at} | ||||
75 | ${_group_test_mode} | ||||
76 | ${_consumer_build} | ||||
77 | ) | ||||
78 | endmacro() | ||||
79 | | ||||
80 | # prepare list of versions | ||||
81 | set(library_versions 0 2.0.0 CURRENT) | ||||
82 | list(LENGTH library_versions library_versions_count) | ||||
83 | math(EXPR _last_index ${library_versions_count}-1) | ||||
84 | | ||||
85 | # test generating the library with different EXCLUDE_DEPRECATED_BEFORE_AND_AT values | ||||
86 | # als install the generated libraries together incl. exported cmake targets, for use in tests below | ||||
87 | # TODO: wariant with DEPRECATED_BASE_VERSION | ||||
88 | foreach(_group_arg "" "WITH_GROUP") | ||||
89 | foreach(_index RANGE ${_last_index}) | ||||
90 | list(GET library_versions ${_index} _exclude_deprecated_before_and_at) | ||||
91 | add_generate_export_header_library_test(${_exclude_deprecated_before_and_at} ${_group_arg}) | ||||
92 | endforeach() | ||||
93 | endforeach() | ||||
94 | | ||||
95 | | ||||
96 | set(group_test_modes "GROUPLESS" "GROUP_USE_DIRECT" "GROUP_USE_GROUP") | ||||
97 | | ||||
98 | # test using the library, built with different EXCLUDE_DEPRECATED_BEFORE_AND_AT values, | ||||
99 | # while using different DISABLE_DEPRECATED_BEFORE_AND_AT values | ||||
100 | # TODO: test DEPRECATED_WARNINGS_SINCE | ||||
101 | foreach(_group_test_mode ${group_test_modes}) | ||||
102 | foreach(_exclude_index RANGE ${_last_index}) | ||||
103 | list(GET library_versions ${_exclude_index} _exclude_deprecated_before_and_at) | ||||
104 | # using disabled API limit below the excluded API limit is not supported and | ||||
105 | # catched by the code generated from the ecm_generate_export_header, | ||||
106 | # so testing those combination will not work, so start from the excluded API limit | ||||
107 | foreach(_disable_index RANGE ${_exclude_index} ${_last_index}) | ||||
108 | list(GET library_versions ${_disable_index} _disable_deprecated_before_and_at) | ||||
109 | add_generate_export_header_consumer_disable_deprecated_before_and_at_test(${_disable_deprecated_before_and_at} ${_exclude_deprecated_before_and_at} ${_group_test_mode}) | ||||
110 | endforeach() | ||||
111 | endforeach() | ||||
112 | endforeach() | ||||
113 | | ||||
114 | # test with NO_DEPRECATED | ||||
115 | foreach(_group_test_mode ${group_test_modes}) | ||||
116 | foreach(_exclude_index RANGE ${_last_index}) | ||||
117 | list(GET library_versions ${_exclude_index} _exclude_deprecated_before_and_at) | ||||
118 | add_generate_export_header_consumer_no_deprecated_test(${_exclude_deprecated_before_and_at} ${_group_test_mode}) | ||||
119 | endforeach() | ||||
120 | endforeach() |