summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtFindPackageHelpers.cmake40
-rw-r--r--cmake/QtPostProcessHelpers.cmake12
2 files changed, 50 insertions, 2 deletions
diff --git a/cmake/QtFindPackageHelpers.cmake b/cmake/QtFindPackageHelpers.cmake
index 204222f58b..0ca585d1d4 100644
--- a/cmake/QtFindPackageHelpers.cmake
+++ b/cmake/QtFindPackageHelpers.cmake
@@ -165,7 +165,7 @@ macro(qt_find_package)
endif()
endmacro()
-# This function records a dependency between ${target_name} and ${dep_package_name}.
+# This function records a dependency between ${main_target_name} and ${dep_package_name}.
# at the CMake package level.
# E.g. The Tools package that provides the qtwaylandscanner target
# needs to call find_package(WaylandScanner) (non-qt-package).
@@ -202,6 +202,44 @@ function(qt_record_extra_qt_package_dependency main_target_name dep_target_name
"${dep_package_version}")
endfunction()
+# This function records a 'QtFooTools' package dependency for the ${main_target_name} target
+# onto the ${dep_package_name} tools package.
+# E.g. The QtWaylandCompositor package needs to call find_package(QtWaylandScannerTools).
+# main_target_name = WaylandCompositor
+# dep_package_name = Qt6WaylandScannerTools
+function(qt_record_extra_main_tools_package_dependency
+ main_target_name dep_package_name dep_package_version)
+ if(NOT TARGET "${main_target_name}")
+ qt_get_tool_target_name(main_target_name "${main_target_name}")
+ endif()
+ if (TARGET "${main_target_name}")
+ get_target_property(extra_packages "${main_target_name}"
+ QT_EXTRA_TOOLS_PACKAGE_DEPENDENCIES)
+ if(NOT extra_packages)
+ set(extra_packages "")
+ endif()
+
+ list(APPEND extra_packages "${dep_package_name}\;${dep_package_version}")
+ set_target_properties("${main_target_name}" PROPERTIES QT_EXTRA_TOOLS_PACKAGE_DEPENDENCIES
+ "${extra_packages}")
+ endif()
+endfunction()
+
+# This function records a 'QtFooTools' package dependency for the ${main_target_name} target
+# onto the ${dep_non_versioned_package_name} Tools package.
+# main_target_name = WaylandCompositor
+# dep_non_versioned_package_name = WaylandScannerTools
+# This is just a convenience function to avoid hardcoding the qtified version in the dep package
+# name.
+function(qt_record_extra_qt_main_tools_package_dependency main_target_name
+ dep_non_versioned_package_name
+ dep_package_version)
+ # WaylandScannerTools -> Qt6WaylandScannerTools.
+ qt_internal_module_info(qtfied_package_name "${dep_non_versioned_package_name}")
+ qt_record_extra_main_tools_package_dependency(
+ "${main_target_name}" "${qtfied_package_name_versioned}" "${dep_package_version}")
+endfunction()
+
# This function stores the list of Qt modules a library depend on,
# along with their version info, for usage in ${target}Depends.cmake file
function(qt_register_target_dependencies target public_libs private_libs)
diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake
index 42ad39ee5e..0da6d9e4c3 100644
--- a/cmake/QtPostProcessHelpers.cmake
+++ b/cmake/QtPostProcessHelpers.cmake
@@ -105,6 +105,16 @@ function(qt_internal_create_module_depends_file target)
# ModuleDependencies.cmake.
set(main_module_tool_deps "")
+ # Extra QtFooModuleTools packages to be added as dependencies to
+ # QtModuleDependencies.cmake. Needed for QtWaylandCompositor / QtWaylandClient.
+ if(NOT arg_HEADER_MODULE)
+ get_target_property(extra_tools_package_dependencies "${target}"
+ QT_EXTRA_TOOLS_PACKAGE_DEPENDENCIES)
+ if(extra_tools_package_dependencies)
+ list(APPEND main_module_tool_deps "${extra_tools_package_dependencies}")
+ endif()
+ endif()
+
qt_internal_get_qt_all_known_modules(known_modules)
set(all_depends ${depends} ${public_depends})
@@ -144,7 +154,7 @@ function(qt_internal_create_module_depends_file target)
# Add dependency to the main ModuleTool package to ModuleDependencies file.
if(${target} IN_LIST QT_KNOWN_MODULES_WITH_TOOLS)
- set(main_module_tool_deps
+ list(APPEND main_module_tool_deps
"${INSTALL_CMAKE_NAMESPACE}${target}Tools\;${PROJECT_VERSION}")
endif()