CMake: Rework inter-repository dependency resolution

In certain cases the dependency resolution between Qt repositories
resulted in a wrong order, for example qtsvg being handled before
qtbase.  See the linked task for an example.

Replace the existing algorithm with a post-order traversal of the
dependency graph to produce a topological ordering.

Rename qt_internal_add_module_dependencies to
qt_internal_resolve_module_dependencies and remove unnecessary
positional arguments.  Use keyword arguments for a nicer API.

Raise the cmake_policy in QtSynchronizeRepo.cmake to avoid policy
warnings we now would get due to the use of IN_LIST.

Fixes: QTBUG-98268
Change-Id: I1425fd9c802fa71ae42549ceb14bcfc4c0a62078
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 8a94d1e294)
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Joerg Bornemann
2022-01-21 21:55:08 +01:00
committed by Alexandru Croitor
parent d7133e4de0
commit 0ec83c2903
3 changed files with 127 additions and 72 deletions

View File

@@ -1,3 +1,7 @@
# This script is to be called (ideally from a git-sync-to alias script):
# cmake -DSYNC_TO_MODULE="$1" -DSYNC_TO_BRANCH="$2" -P cmake/QtSynchronizeRepo.cmake
cmake_policy(VERSION 3.16)
include(cmake/QtTopLevelHelpers.cmake)
qt_internal_sync_to(${SYNC_TO_MODULE} ${SYNC_TO_BRANCH})