CMake: Provide way to register extra tool package dependencies
This is needed for qtwayland, where QtWaylandCompositor package should call find_package(QtWaylandScanner) in the 'Tools' section of the ModuleDependencies.cmake file, rather than the regular 'Qt' section. This takes care of handling host path prefixes, to ensure that a host package is found even when tools have also been cross-compiled via the QT_BUILD_TOOLS_WHEN_CROSSCOMPILING option. Task-number: QTBUG-83968 Change-Id: I4725a630214d053105fb6d2a0f7c5ff6128d13f9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
parent
9a2ee31059
commit
94c15bda6e
@ -165,7 +165,7 @@ macro(qt_find_package)
|
|||||||
endif()
|
endif()
|
||||||
endmacro()
|
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.
|
# at the CMake package level.
|
||||||
# E.g. The Tools package that provides the qtwaylandscanner target
|
# E.g. The Tools package that provides the qtwaylandscanner target
|
||||||
# needs to call find_package(WaylandScanner) (non-qt-package).
|
# 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}")
|
"${dep_package_version}")
|
||||||
endfunction()
|
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,
|
# This function stores the list of Qt modules a library depend on,
|
||||||
# along with their version info, for usage in ${target}Depends.cmake file
|
# along with their version info, for usage in ${target}Depends.cmake file
|
||||||
function(qt_register_target_dependencies target public_libs private_libs)
|
function(qt_register_target_dependencies target public_libs private_libs)
|
||||||
|
@ -105,6 +105,16 @@ function(qt_internal_create_module_depends_file target)
|
|||||||
# ModuleDependencies.cmake.
|
# ModuleDependencies.cmake.
|
||||||
set(main_module_tool_deps "")
|
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)
|
qt_internal_get_qt_all_known_modules(known_modules)
|
||||||
|
|
||||||
set(all_depends ${depends} ${public_depends})
|
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.
|
# Add dependency to the main ModuleTool package to ModuleDependencies file.
|
||||||
if(${target} IN_LIST QT_KNOWN_MODULES_WITH_TOOLS)
|
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}")
|
"${INSTALL_CMAKE_NAMESPACE}${target}Tools\;${PROJECT_VERSION}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user