Each qt_find_package can specify a PROVIDED_TARGETS option, to inform which targets will be created by that package. The call then saves the package name, version, etc on each of the provided targets. Currently the provided targets info is not persisted anywhere after configuration ends. We will need this for SBOM creation, so that we can collect information about such dependencies when configuring leaf repos, where find_dependency calls are implicit, and don't contain the PROVIDED_TARGETS option, and we need to go from package name to target name (and any recorded info it the target has). This is especially relevant for static library builds, where private dependencies become public dependencies. Collect the provided targets information at post process time and persist it for each 'package name + components requested' combination into the Dependencies.cmake file. This information will be used in a later change for SBOM generation. Change-Id: I1693f81b1ad3beaf9b02e44b09a5e977923f0d85 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
48 lines
1.9 KiB
CMake
48 lines
1.9 KiB
CMake
# Copyright (C) 2024 The Qt Company Ltd.
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# Make sure @INSTALL_CMAKE_NAMESPACE@ is found before anything else.
|
|
set(@INSTALL_CMAKE_NAMESPACE@@target@_FOUND FALSE)
|
|
|
|
if("${_qt_cmake_dir}" STREQUAL "")
|
|
set(_qt_cmake_dir "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}")
|
|
endif()
|
|
set(__qt_use_no_default_path_for_qt_packages "NO_DEFAULT_PATH")
|
|
if(QT_DISABLE_NO_DEFAULT_PATH_IN_QT_PACKAGES)
|
|
set(__qt_use_no_default_path_for_qt_packages "")
|
|
endif()
|
|
|
|
# Don't propagate REQUIRED so we don't immediately FATAL_ERROR, rather let the find_dependency calls
|
|
# set _NOT_FOUND_MESSAGE which will be displayed by the includer of the Dependencies file.
|
|
set(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED FALSE)
|
|
|
|
if(NOT @INSTALL_CMAKE_NAMESPACE@_FOUND)
|
|
find_dependency(@INSTALL_CMAKE_NAMESPACE@ @main_qt_package_version@
|
|
PATHS
|
|
${QT_BUILD_CMAKE_PREFIX_PATH}
|
|
"${CMAKE_CURRENT_LIST_DIR}/.."
|
|
"${_qt_cmake_dir}"
|
|
${_qt_additional_packages_prefix_paths}
|
|
${__qt_use_no_default_path_for_qt_packages}
|
|
)
|
|
endif()
|
|
|
|
|
|
# note: _third_party_deps example: "ICU\\;FALSE\\;1.0\\;i18n uc data;ZLIB\\;FALSE\\;\\;"
|
|
set(__qt_@target@_third_party_deps "@third_party_deps@")
|
|
@third_party_deps_extra_info@
|
|
_qt_internal_find_third_party_dependencies("@target@" __qt_@target@_third_party_deps)
|
|
|
|
# Find Qt tool package.
|
|
set(__qt_@target@_tool_deps "@main_module_tool_deps@")
|
|
_qt_internal_find_tool_dependencies("@target@" __qt_@target@_tool_deps)
|
|
|
|
# note: target_deps example: "Qt6Core\;5.12.0;Qt6Gui\;5.12.0"
|
|
set(__qt_@target@_target_deps "@target_deps@")
|
|
set(__qt_@target@_find_dependency_paths "${CMAKE_CURRENT_LIST_DIR}/.." "${_qt_cmake_dir}")
|
|
_qt_internal_find_qt_dependencies("@target@" __qt_@target@_target_deps
|
|
__qt_@target@_find_dependency_paths)
|
|
|
|
set(_@QT_CMAKE_EXPORT_NAMESPACE@@target@_MODULE_DEPENDENCIES "@qt_module_dependencies@")
|
|
set(@INSTALL_CMAKE_NAMESPACE@@target@_FOUND TRUE)
|