Warning, /frameworks/extra-cmake-modules/tests/ECMGenerateExportHeaderTest/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 set(installation_path "${CMAKE_CURRENT_BINARY_DIR}/installation/") 0002 0003 macro(add_generate_export_header_library_test _exclude_deprecated_before_and_at) 0004 if("${ARGV1}" STREQUAL "WITH_GROUP") 0005 set(_set_group_option "-DSET_GROUP=TRUE") 0006 set(_library_buildname "library-${_exclude_deprecated_before_and_at}-group") 0007 else() 0008 set(_library_buildname "library-${_exclude_deprecated_before_and_at}") 0009 endif() 0010 add_test(NAME ecm_generate_export_header-build-${_library_buildname} 0011 COMMAND ${CMAKE_CTEST_COMMAND} 0012 --build-and-test 0013 "${CMAKE_CURRENT_SOURCE_DIR}/library" 0014 "${CMAKE_CURRENT_BINARY_DIR}/${_library_buildname}" 0015 --build-two-config 0016 --build-generator "${CMAKE_GENERATOR}" 0017 --build-makeprogram ${CMAKE_MAKE_PROGRAM} 0018 --build-project library 0019 --build-target install 0020 --build-options 0021 "-DEXCLUDE_DEPRECATED_BEFORE_AND_AT=${_exclude_deprecated_before_and_at}" 0022 "-DCMAKE_INSTALL_PREFIX:PATH=${installation_path}/${_library_buildname}" 0023 ${_set_group_option} 0024 --test-command dummy 0025 ) 0026 endmacro() 0027 0028 macro(add_generate_export_header_consumer_test _test_variant _exclude_deprecated_before_and_at _group_test_mode _consumer_build) 0029 set(_extra_build_options ${ARGN}) 0030 if(_group_test_mode STREQUAL "GROUPLESS") 0031 set(_library "library-${_exclude_deprecated_before_and_at}") 0032 else() 0033 set(_library "library-${_exclude_deprecated_before_and_at}-group") 0034 endif() 0035 add_test(NAME ecm_generate_export_header-${_consumer_build} 0036 COMMAND ${CMAKE_CTEST_COMMAND} 0037 --build-and-test 0038 "${CMAKE_CURRENT_SOURCE_DIR}/consumer" 0039 "${CMAKE_CURRENT_BINARY_DIR}/${_consumer_build}" 0040 --build-two-config 0041 --build-generator "${CMAKE_GENERATOR}" 0042 --build-makeprogram ${CMAKE_MAKE_PROGRAM} 0043 --build-project consumer 0044 --build-options 0045 "-DTEST_VARIANT:STRING=${_test_variant}" 0046 "-DDEPRECATED_EXCLUDED_BEFORE_AND_AT:STRING=${_exclude_deprecated_before_and_at}" 0047 "-DLIBRARY:STRING=${_library}" 0048 "-DGROUP_MODE:STRING=${_group_test_mode}" 0049 ${_extra_build_options} 0050 --test-command dummy 0051 ) 0052 set_tests_properties(ecm_generate_export_header-${_consumer_build} 0053 PROPERTIES DEPENDS "ecm_generate_export_header-build-${_library}") 0054 endmacro() 0055 0056 macro(add_generate_export_header_consumer_disable_deprecated_before_and_at_test 0057 _disable_deprecated_before_and_at 0058 _exclude_deprecated_before_and_at 0059 _group_test_mode 0060 ) 0061 set(_consumer_build "consumer-${_disable_deprecated_before_and_at}-${_exclude_deprecated_before_and_at}-${_group_test_mode}") 0062 set(_extra_build_options 0063 "-DLIBRARY_DISABLE_DEPRECATED_BEFORE_AND_AT:STRING=${_disable_deprecated_before_and_at}" 0064 ) 0065 add_generate_export_header_consumer_test(DISABLE_DEPRECATED_BEFORE_AND_AT 0066 ${_exclude_deprecated_before_and_at} 0067 ${_group_test_mode} 0068 ${_consumer_build} 0069 ${_extra_build_options} 0070 ) 0071 endmacro() 0072 0073 macro(add_generate_export_header_consumer_no_deprecated_test _exclude_deprecated_before_and_at _group_test_mode) 0074 set(_consumer_build "consumer-NO-DEPRECATED-${_exclude_deprecated_before_and_at}-${_group_test_mode}") 0075 add_generate_export_header_consumer_test(NO_DEPRECATED 0076 ${_exclude_deprecated_before_and_at} 0077 ${_group_test_mode} 0078 ${_consumer_build} 0079 ) 0080 endmacro() 0081 0082 # prepare list of versions 0083 set(library_versions 0 2.0.0 CURRENT) 0084 list(LENGTH library_versions library_versions_count) 0085 math(EXPR _last_index ${library_versions_count}-1) 0086 0087 # test generating the library with different EXCLUDE_DEPRECATED_BEFORE_AND_AT values 0088 # also install the generated libraries together incl. exported cmake targets, for use in tests below 0089 # TODO: wariant with DEPRECATED_BASE_VERSION 0090 foreach(_group_arg "" "WITH_GROUP") 0091 foreach(_index RANGE ${_last_index}) 0092 list(GET library_versions ${_index} _exclude_deprecated_before_and_at) 0093 add_generate_export_header_library_test(${_exclude_deprecated_before_and_at} ${_group_arg}) 0094 endforeach() 0095 endforeach() 0096 0097 0098 set(group_test_modes "GROUPLESS" "GROUP_USE_DIRECT" "GROUP_USE_GROUP") 0099 0100 # test using the library, built with different EXCLUDE_DEPRECATED_BEFORE_AND_AT values, 0101 # while using different DISABLE_DEPRECATED_BEFORE_AND_AT values 0102 # TODO: test DEPRECATED_WARNINGS_SINCE 0103 foreach(_group_test_mode ${group_test_modes}) 0104 foreach(_exclude_index RANGE ${_last_index}) 0105 list(GET library_versions ${_exclude_index} _exclude_deprecated_before_and_at) 0106 # using disabled API limit below the excluded API limit is not supported and 0107 # caught by the code generated from the ecm_generate_export_header, 0108 # so testing those combination will not work, so start from the excluded API limit 0109 foreach(_disable_index RANGE ${_exclude_index} ${_last_index}) 0110 list(GET library_versions ${_disable_index} _disable_deprecated_before_and_at) 0111 add_generate_export_header_consumer_disable_deprecated_before_and_at_test(${_disable_deprecated_before_and_at} ${_exclude_deprecated_before_and_at} ${_group_test_mode}) 0112 endforeach() 0113 endforeach() 0114 endforeach() 0115 0116 # test with NO_DEPRECATED 0117 foreach(_group_test_mode ${group_test_modes}) 0118 foreach(_exclude_index RANGE ${_last_index}) 0119 list(GET library_versions ${_exclude_index} _exclude_deprecated_before_and_at) 0120 add_generate_export_header_consumer_no_deprecated_test(${_exclude_deprecated_before_and_at} ${_group_test_mode}) 0121 endforeach() 0122 endforeach()