The optional components arguments were not handled before which caused the recorded package information for static builds to be incorrect, it only recorded the package name without the component. Remove REQUIRED_COMPONENTS TODO, there is no such find_package option, it's already handled by the regular COMPONENTS code path. Amends 07b6d3367debd8f15974abf0f5cdf48f0fe3a536 Pick-to: 6.1 6.2 Fixes: QTBUG-94501 Change-Id: Ib48a7befcb70e20c3f21315897d51d3064b48134 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Dominik Holland <dominik.holland@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
118 lines
4.1 KiB
CMake
118 lines
4.1 KiB
CMake
# Make sure @INSTALL_CMAKE_NAMESPACE@ is found before anything else.
|
|
set(@INSTALL_CMAKE_NAMESPACE@@target@_FOUND FALSE)
|
|
|
|
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()
|
|
find_dependency(@INSTALL_CMAKE_NAMESPACE@ @PROJECT_VERSION@
|
|
PATHS
|
|
"${CMAKE_CURRENT_LIST_DIR}/.."
|
|
${_qt_additional_packages_prefix_path}
|
|
${_qt_additional_packages_prefix_path_env}
|
|
${QT_EXAMPLES_CMAKE_PREFIX_PATH}
|
|
${__qt_use_no_default_path_for_qt_packages}
|
|
)
|
|
|
|
# note: _third_party_deps example: "ICU\\;FALSE\\;1.0\\;i18n uc data;ZLIB\\;FALSE\\;\\;"
|
|
set(_third_party_deps "@third_party_deps@")
|
|
|
|
foreach(_target_dep ${_third_party_deps})
|
|
list(GET _target_dep 0 pkg)
|
|
list(GET _target_dep 1 is_optional)
|
|
list(GET _target_dep 2 version)
|
|
list(GET _target_dep 3 components)
|
|
list(GET _target_dep 4 optional_components)
|
|
set(find_package_args "${pkg}")
|
|
if(version)
|
|
list(APPEND find_package_args "${version}")
|
|
endif()
|
|
if(components)
|
|
string(REPLACE " " ";" components "${components}")
|
|
list(APPEND find_package_args COMPONENTS ${components})
|
|
endif()
|
|
if(optional_components)
|
|
string(REPLACE " " ";" optional_components "${optional_components}")
|
|
list(APPEND find_package_args OPTIONAL_COMPONENTS ${optional_components})
|
|
endif()
|
|
|
|
if(is_optional)
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
|
|
list(APPEND find_package_args QUIET)
|
|
endif()
|
|
find_package(${find_package_args})
|
|
else()
|
|
find_dependency(${find_package_args})
|
|
endif()
|
|
endforeach()
|
|
|
|
# Find Qt tool package.
|
|
set(_tool_deps "@main_module_tool_deps@")
|
|
|
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
|
# Make sure that the tools find the host tools first
|
|
set(BACKUP_@target@_CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
|
|
set(BACKUP_@target@_CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH})
|
|
list(PREPEND CMAKE_PREFIX_PATH "${QT_HOST_PATH_CMAKE_DIR}")
|
|
list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_HOST_PATH}")
|
|
endif()
|
|
|
|
foreach(_target_dep ${_tool_deps})
|
|
list(GET _target_dep 0 pkg)
|
|
list(GET _target_dep 1 version)
|
|
|
|
unset(find_package_args)
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
|
|
list(APPEND find_package_args QUIET)
|
|
endif()
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
|
|
list(APPEND find_package_args REQUIRED)
|
|
endif()
|
|
find_package(${pkg} ${version} ${find_package_args}
|
|
PATHS
|
|
${_qt_additional_packages_prefix_path}
|
|
${_qt_additional_packages_prefix_path_env}
|
|
)
|
|
if (NOT ${pkg}_FOUND)
|
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
|
set(CMAKE_PREFIX_PATH ${BACKUP_@target@_CMAKE_PREFIX_PATH})
|
|
set(CMAKE_FIND_ROOT_PATH ${BACKUP_@target@_CMAKE_FIND_ROOT_PATH})
|
|
endif()
|
|
return()
|
|
endif()
|
|
endforeach()
|
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
|
set(CMAKE_PREFIX_PATH ${BACKUP_@target@_CMAKE_PREFIX_PATH})
|
|
set(CMAKE_FIND_ROOT_PATH ${BACKUP_@target@_CMAKE_FIND_ROOT_PATH})
|
|
endif()
|
|
|
|
# TODO: The dependencies lookup mechanism is common for Modules and Plugins.
|
|
# It should be moved to the common public helper file.
|
|
#
|
|
# note: target_deps example: "Qt6Core\;5.12.0;Qt6Gui\;5.12.0"
|
|
set(_target_deps "@target_deps@")
|
|
foreach(_target_dep ${_target_deps})
|
|
list(GET _target_dep 0 pkg)
|
|
list(GET _target_dep 1 version)
|
|
|
|
if(NOT ${pkg}_FOUND)
|
|
set(pkg_names ${pkg})
|
|
if(pkg MATCHES "(.*)Private$")
|
|
set(pkg_names "${CMAKE_MATCH_1};${pkg}")
|
|
endif()
|
|
find_dependency(${pkg} ${version}
|
|
NAMES
|
|
${pkg_names}
|
|
PATHS
|
|
"${CMAKE_CURRENT_LIST_DIR}/.."
|
|
${_qt_additional_packages_prefix_path}
|
|
${_qt_additional_packages_prefix_path_env}
|
|
${QT_EXAMPLES_CMAKE_PREFIX_PATH}
|
|
${__qt_use_no_default_path_for_qt_packages}
|
|
)
|
|
endif()
|
|
endforeach()
|
|
|
|
set(_@QT_CMAKE_EXPORT_NAMESPACE@@target@_MODULE_DEPENDENCIES "@qt_module_dependencies@")
|
|
set(@INSTALL_CMAKE_NAMESPACE@@target@_FOUND TRUE)
|