Revision control

++ # Copyright (C) 2025 The Qt Company Ltd.
++ # SPDX-License-Identifier: BSD-3-Clause
++
++ # If we want the override the version (note ALLOW_OVERRIDE_FILE only applies
++ # currently for QtBaseGlobalTargets) we need to write PACKAGE_VERSION in that
++ # case we need to know what is real PACKAGE_VERSION before override, therefore
++ # load package version file and parse it, note we do not want to include it
++ # here.
++
++ get_directory_property(
++ __qt_version_base_impl_package_version
++ __qt_version_@QT_PACKAGE_NAME@_base_impl_package_version_cached)
++
++ if(NOT __qt_version_base_impl_package_version)
++ file(STRINGS "${__qt_version_base_impl_file}" QT_BASE_PACKAGE_VERSION)
++ while(QT_BASE_PACKAGE_VERSION)
++ list(POP_FRONT QT_BASE_PACKAGE_VERSION __qt_version_line)
++ if(__qt_version_line MATCHES
++ "set\\(PACKAGE_VERSION \"([0-9]+\\.[0-9]+\\.[0-9]+)\"\\)")
++ set(__qt_version_base_impl_package_version "${CMAKE_MATCH_1}")
++ break()
++ endif()
++ endwhile()
++ set_property(
++ DIRECTORY
++ PROPERTY __qt_version_@QT_PACKAGE_NAME@_base_impl_package_version_cached
++ "${__qt_version_base_impl_package_version}")
++ endif()
++ # as small optimization run override only if requested version is greater the qt
++ # global config version
++ if(NOT QT_NO_CONFIG_VERSION_OVERRIDE_FILES
++ AND NOT "${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION}" STREQUAL ""
++ AND "${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION}" VERSION_GREATER
++ "${__qt_version_base_impl_package_version}")
++
++ # This runs a loop for each component in find_package(Qt6 <version>
++ # <components>) so version of each component has to be overriden with same
++ # version to make sense
++
++ foreach(__qt_version_override_for_component
++ ${${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS})
++ set(__qt_version_overrides_found FALSE)
++ set(__qt_version_override_directory
++ "${CMAKE_CURRENT_LIST_DIR}/ConfigVersionOverrides/${__qt_version_override_for_component}"
++ )
++ if(EXISTS "${__qt_version_override_directory}")
++ # Cache list of version override files.
++ get_directory_property(
++ __qt_version_override_file_list_globbed
++ __qt_version_@QT_PACKAGE_NAME@${__qt_version_override_for_component}_override_file_list_globbed
++ )
++
++ if(NOT __qt_version_override_file_list_globbed)
++ # Enforce override file names to contain digits and an
++ # identifying name, to allow sorting the priority of how they
++ # are included. Naming scheme should be
++ # Override_[0-9][0-9][0-9][0-9]_<override_identifier>.cmake
++ set(__qt_version_override_glob_expression
++ "Override_[0-9][0-9][0-9][0-9]_*.cmake")
++ file(
++ GLOB
++ __qt_version_override_file_list
++ "${__qt_version_override_directory}/${__qt_version_override_glob_expression}"
++ )
++ list(SORT __qt_version_override_file_list)
++ set_property(
++ DIRECTORY
++ PROPERTY
++ __qt_version_@QT_PACKAGE_NAME@${__qt_version_override_for_component}_override_file_list
++ "${__qt_version_override_file_list}")
++ set_property(
++ DIRECTORY
++ PROPERTY
++ __qt_version_@QT_PACKAGE_NAME@${__qt_version_override_for_component}_override_file_list_globbed
++ TRUE)
++ else()
++ get_directory_property(
++ __qt_version_override_file_list
++ __qt_version_@QT_PACKAGE_NAME@${__qt_version_override_for_component}_override_file_list
++ )
++ endif()
++
++ if(NOT __qt_version_override_file_list)
++ message(
++ FATAL_ERROR
++ "Override files for ${__qt_version_override_for_component} are missing in '${__qt_version_override_directory}'"
++ )
++ endif()
++ foreach(__qt_version_override_file IN
++ LISTS __qt_version_override_file_list)
++ set(__qt_version_before "${PACKAGE_VERSION}")
++ include("${__qt_version_override_file}" OPTIONAL
++ RESULT_VARIABLE __qt_version_override_file_included)
++
++ if(__qt_version_override_file_included)
++ set(__qt_version_overrides_found TRUE)
++ endif()
++
++ # the returned versions has to match, if not return base qt
++ # config version
++ if(__qt_version_before AND NOT "${__qt_version_before}"
++ STREQUAL "${PACKAGE_VERSION}")
++ message(
++ WARNING
++ "The find_package call includes ${__qt_version_override_file} file which tries to override ${PACKAGE_FIND_NAME} with version ${PACKAGE_VERSION} for component ${__qt_version_override_for_component}, however version was set to ${__qt_version_before}. Please split the find_package call to find components separately."
++ )
++ set(__qt_version_overrides_found FALSE)
++ break()
++ endif()
++
++ # Allow breaking early, which can be set by the including file.
++ if(__qt_version_override_break_early)
++ break()
++ endif()
++ endforeach()
++
++ unset(__qt_version_override_file)
++ unset(__qt_version_override_file_list)
++ unset(__qt_version_override_file_list_globbed)
++ unset(__qt_version_before)
++ unset(__qt_version_override_break_early)
++ unset(__qt_version_override_file_included)
++ unset(__qt_version_override_glob_expression)
++ else()
++ # The version requested is greater that qt version config, therefore
++ # requested component should provide override file in case this qt
++ # version is supported, but it doesn't. Therefore, fail the
++ # find_package call simply by returning qt config version with the
++ # warning.
++ set(__qt_version_overrides_found FALSE)
++ endif()
++ unset(__qt_version_override_directory)
++ unset(__qt_version_override_for_component)
++ if(NOT __qt_version_overrides_found)
++ # Make sure nothing is set as there can be multiple overload files
++ # to bail out
++ unset(PACKAGE_VERSION)
++ unset(PACKAGE_VERSION_COMPATIBLE)
++ unset(PACKAGE_VERSION_EXACT)
++ set(__qt_version_should_include_base_impl_file TRUE)
++ break()
++ else()
++ set(__qt_version_should_include_base_impl_file FALSE)
++ endif()
++ endforeach()
++ unset(__qt_version_overrides_found)
++ endif()