diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index f338ec63d31..d3d41dbd07d 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -552,6 +552,14 @@ include(QtPublicFindPackageHelpers) include(QtPublicDependencyHelpers) include(QtPublicToolHelpers) +if(CMAKE_CROSSCOMPILING) + if(NOT IS_DIRECTORY "${QT_HOST_PATH}") + message(FATAL_ERROR "You need to set QT_HOST_PATH to cross compile Qt.") + endif() +endif() + +_qt_internal_find_host_info_package() + # TODO: This block provides support for old variables. It should be removed once # we remove all references to these variables in other Qt module repos. # Prefer to use the provided commands to retrieve the relevant things instead. diff --git a/cmake/QtConfig.cmake.in b/cmake/QtConfig.cmake.in index b8db0c8da3c..b9cf5e09642 100644 --- a/cmake/QtConfig.cmake.in +++ b/cmake/QtConfig.cmake.in @@ -23,16 +23,6 @@ else() QT_VERSION_PATCH @PROJECT_VERSION_PATCH@) endif() -if(NOT "${QT_HOST_PATH}" STREQUAL "") - find_package(Qt@PROJECT_VERSION_MAJOR@HostInfo - CONFIG - REQUIRED - PATHS "${QT_HOST_PATH}" - "${QT_HOST_PATH_CMAKE_DIR}" - NO_CMAKE_FIND_ROOT_PATH - NO_DEFAULT_PATH) -endif() - get_filename_component(_qt_import_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH) get_filename_component(_qt_import_prefix "${_qt_import_prefix}" REALPATH) list(APPEND CMAKE_MODULE_PATH "${_qt_import_prefix}") diff --git a/cmake/QtConfigDependencies.cmake.in b/cmake/QtConfigDependencies.cmake.in index d7176435e7a..aabfa90328e 100644 --- a/cmake/QtConfigDependencies.cmake.in +++ b/cmake/QtConfigDependencies.cmake.in @@ -1,5 +1,7 @@ set(@INSTALL_CMAKE_NAMESPACE@_FOUND FALSE) +_qt_internal_find_host_info_package() + # note: _third_party_deps example: "ICU\\;FALSE\\;1.0\\;i18n uc data;ZLIB\\;FALSE\\;\\;" set(__qt_third_party_deps "@third_party_deps@") diff --git a/cmake/QtPublicDependencyHelpers.cmake b/cmake/QtPublicDependencyHelpers.cmake index 9a61eafed46..5abd9cff384 100644 --- a/cmake/QtPublicDependencyHelpers.cmake +++ b/cmake/QtPublicDependencyHelpers.cmake @@ -191,3 +191,15 @@ macro(_qt_internal_save_find_package_context_for_debugging infix) set(_qt_${infix}_qt_cmake_dir "${_qt_cmake_dir}") endif() endmacro() + +macro(_qt_internal_find_host_info_package) + if(NOT "${QT_HOST_PATH}" STREQUAL "") + find_package(Qt6HostInfo + CONFIG + REQUIRED + PATHS "${QT_HOST_PATH}" + "${QT_HOST_PATH_CMAKE_DIR}" + NO_CMAKE_FIND_ROOT_PATH + NO_DEFAULT_PATH) + endif() +endmacro() diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake index 60b0bd02097..c9d2655bd98 100644 --- a/cmake/QtSetup.cmake +++ b/cmake/QtSetup.cmake @@ -254,26 +254,11 @@ unset(_qt_build_examples_as_external) option(QT_BUILD_MANUAL_TESTS "Build Qt manual tests" OFF) option(QT_BUILD_MINIMAL_STATIC_TESTS "Build minimal subset of tests for static Qt builds" OFF) -## Find host tools (if non native): +## Path used to find host tools, either when cross-compiling or just when using the tools from +## a different host build. set(QT_HOST_PATH "$ENV{QT_HOST_PATH}" CACHE PATH "Installed Qt host directory path, used for cross compiling.") -if (CMAKE_CROSSCOMPILING) - if(NOT IS_DIRECTORY "${QT_HOST_PATH}") - message(FATAL_ERROR "You need to set QT_HOST_PATH to cross compile Qt.") - endif() -endif() - -if(NOT "${QT_HOST_PATH}" STREQUAL "") - find_package(${INSTALL_CMAKE_NAMESPACE}HostInfo - CONFIG - REQUIRED - PATHS "${QT_HOST_PATH}" - "${QT_HOST_PATH_CMAKE_DIR}" - NO_CMAKE_FIND_ROOT_PATH - NO_DEFAULT_PATH) -endif() - ## Android platform settings if(ANDROID) include(QtPlatformAndroid)