summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2022-07-15 18:14:20 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2022-07-25 19:52:18 +0200
commita41bef8edeffe7b77970968533793a587215d977 (patch)
tree70558a94841e387d5e0b14f0df38dd3d3edf7d78 /cmake
parentbee6f47d224e4e9f35d8994efa8d7c969a06d2c2 (diff)
CMake: Move Qt6HostInfo lookup into a function
Also replace the duplicate call in QtSetup using the new function. To do that, we have to actually the call it in QtBuild after QtPublicDependencyHelpers.cmake is available. That call is needed so that Qt6_HOST_INFO_foo variables are available in qt_generate_qmake_and_qtpaths_wrapper_for_target. Pick-to: 6.4 Task-number: QTBUG-104998 Change-Id: Ic5776c214bee6bedcea714b213b0e5a42c1bae06 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtBuild.cmake8
-rw-r--r--cmake/QtConfig.cmake.in10
-rw-r--r--cmake/QtConfigDependencies.cmake.in2
-rw-r--r--cmake/QtPublicDependencyHelpers.cmake12
-rw-r--r--cmake/QtSetup.cmake19
5 files changed, 24 insertions, 27 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index f338ec63d3..d3d41dbd07 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 b8db0c8da3..b9cf5e0964 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 d7176435e7..aabfa90328 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 9a61eafed4..5abd9cff38 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 60b0bd0209..c9d2655bd9 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)