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()