diff options
-rw-r--r-- | cmake/QtFindPackageHelpers.cmake | 40 | ||||
-rw-r--r-- | cmake/QtPostProcessHelpers.cmake | 12 |
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() |