diff options
Diffstat (limited to 'tests/ECMGenerateExportHeaderTest/CMakeLists.txt')
-rw-r--r-- | tests/ECMGenerateExportHeaderTest/CMakeLists.txt | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/ECMGenerateExportHeaderTest/CMakeLists.txt b/tests/ECMGenerateExportHeaderTest/CMakeLists.txt new file mode 100644 index 00000000..5b25a7df --- /dev/null +++ b/tests/ECMGenerateExportHeaderTest/CMakeLists.txt @@ -0,0 +1,120 @@ +set(installation_path "${CMAKE_CURRENT_BINARY_DIR}/installation/") + +macro(add_generate_export_header_library_test _exclude_deprecated_before_and_at) + if("${ARGV1}" STREQUAL "WITH_GROUP") + set(_set_group_option "-DSET_GROUP=TRUE") + set(_library_buildname "library-${_exclude_deprecated_before_and_at}-group") + else() + set(_library_buildname "library-${_exclude_deprecated_before_and_at}") + endif() + add_test(NAME ecm_generate_export_header-build-${_library_buildname} + COMMAND ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/library" + "${CMAKE_CURRENT_BINARY_DIR}/${_library_buildname}" + --build-two-config + --build-generator "${CMAKE_GENERATOR}" + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-project library + --build-target install + --build-options + "-DEXCLUDE_DEPRECATED_BEFORE_AND_AT=${_exclude_deprecated_before_and_at}" + "-DCMAKE_INSTALL_PREFIX:PATH=${installation_path}/${_library_buildname}" + ${_set_group_option} + --test-command dummy + ) +endmacro() + +macro(add_generate_export_header_consumer_test _test_variant _exclude_deprecated_before_and_at _group_test_mode _consumer_build) + set(_extra_build_options ${ARGN}) + if(_group_test_mode STREQUAL "GROUPLESS") + set(_library "library-${_exclude_deprecated_before_and_at}") + else() + set(_library "library-${_exclude_deprecated_before_and_at}-group") + endif() + add_test(NAME ecm_generate_export_header-${_consumer_build} + COMMAND ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/consumer" + "${CMAKE_CURRENT_BINARY_DIR}/${_consumer_build}" + --build-two-config + --build-generator "${CMAKE_GENERATOR}" + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-project consumer + --build-options + "-DTEST_VARIANT:STRING=${_test_variant}" + "-DDEPRECATED_EXCLUDED_BEFORE_AND_AT:STRING=${_exclude_deprecated_before_and_at}" + "-DLIBRARY:STRING=${_library}" + "-DGROUP_MODE:STRING=${_group_test_mode}" + ${_extra_build_options} + --test-command dummy + ) +endmacro() + +macro(add_generate_export_header_consumer_disable_deprecated_before_and_at_test + _disable_deprecated_before_and_at + _exclude_deprecated_before_and_at + _group_test_mode + ) + set(_consumer_build "consumer-${_disable_deprecated_before_and_at}-${_exclude_deprecated_before_and_at}-${_group_test_mode}") + set(_extra_build_options + "-DLIBRARY_DISABLE_DEPRECATED_BEFORE_AND_AT:STRING=${_disable_deprecated_before_and_at}" + ) + add_generate_export_header_consumer_test(DISABLE_DEPRECATED_BEFORE_AND_AT + ${_exclude_deprecated_before_and_at} + ${_group_test_mode} + ${_consumer_build} + ${_extra_build_options} + ) +endmacro() + +macro(add_generate_export_header_consumer_no_deprecated_test _exclude_deprecated_before_and_at _group_test_mode) + set(_consumer_build "consumer-NO-DEPRECATED-${_exclude_deprecated_before_and_at}-${_group_test_mode}") + add_generate_export_header_consumer_test(NO_DEPRECATED + ${_exclude_deprecated_before_and_at} + ${_group_test_mode} + ${_consumer_build} + ) +endmacro() + +# prepare list of versions +set(library_versions 0 2.0.0 CURRENT) +list(LENGTH library_versions library_versions_count) +math(EXPR _last_index ${library_versions_count}-1) + +# test generating the library with different EXCLUDE_DEPRECATED_BEFORE_AND_AT values +# als install the generated libraries together incl. exported cmake targets, for use in tests below +# TODO: wariant with DEPRECATED_BASE_VERSION +foreach(_group_arg "" "WITH_GROUP") + foreach(_index RANGE ${_last_index}) + list(GET library_versions ${_index} _exclude_deprecated_before_and_at) + add_generate_export_header_library_test(${_exclude_deprecated_before_and_at} ${_group_arg}) + endforeach() +endforeach() + + +set(group_test_modes "GROUPLESS" "GROUP_USE_DIRECT" "GROUP_USE_GROUP") + +# test using the library, built with different EXCLUDE_DEPRECATED_BEFORE_AND_AT values, +# while using different DISABLE_DEPRECATED_BEFORE_AND_AT values +# TODO: test DEPRECATED_WARNINGS_SINCE +foreach(_group_test_mode ${group_test_modes}) + foreach(_exclude_index RANGE ${_last_index}) + list(GET library_versions ${_exclude_index} _exclude_deprecated_before_and_at) + # using disabled API limit below the excluded API limit is not supported and + # catched by the code generated from the ecm_generate_export_header, + # so testing those combination will not work, so start from the excluded API limit + foreach(_disable_index RANGE ${_exclude_index} ${_last_index}) + list(GET library_versions ${_disable_index} _disable_deprecated_before_and_at) + add_generate_export_header_consumer_disable_deprecated_before_and_at_test(${_disable_deprecated_before_and_at} ${_exclude_deprecated_before_and_at} ${_group_test_mode}) + endforeach() + endforeach() +endforeach() + +# test with NO_DEPRECATED +foreach(_group_test_mode ${group_test_modes}) + foreach(_exclude_index RANGE ${_last_index}) + list(GET library_versions ${_exclude_index} _exclude_deprecated_before_and_at) + add_generate_export_header_consumer_no_deprecated_test(${_exclude_deprecated_before_and_at} ${_group_test_mode}) + endforeach() +endforeach() |