From 355a6f41fac9c492d17d875f35d4b06e5595e07a Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 24 Feb 2022 11:44:11 +0100 Subject: [PATCH] CMake: Read QT_HOST_PATH from the environment too For cross-compiled conan packages we need conan to export QT_HOST_PATH as an environment variable. The Qt build now picks up this environment variable if no QT_HOST_PATH cache variable was specified. Change-Id: I0c3e15e82842061d5db81949ffcc1c240f6ed6a4 Reviewed-by: Iikka Eklund Reviewed-by: Alexey Edelev (cherry picked from commit 599c648b77628fe195e78d6e7ac145f258f8880b) Reviewed-by: Qt Cherry-pick Bot --- cmake/QtSetup.cmake | 3 ++- cmake/qt.toolchain.cmake.in | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake index 868e9aeb668..6ab53c2a524 100644 --- a/cmake/QtSetup.cmake +++ b/cmake/QtSetup.cmake @@ -241,7 +241,8 @@ 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): -set(QT_HOST_PATH "" CACHE PATH "Installed Qt host directory path, used for cross compiling.") +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}") diff --git a/cmake/qt.toolchain.cmake.in b/cmake/qt.toolchain.cmake.in index 4e219a604b7..c565e923ffa 100644 --- a/cmake/qt.toolchain.cmake.in +++ b/cmake/qt.toolchain.cmake.in @@ -161,10 +161,16 @@ set(__qt_toolchain_initial_qt_host_path set(__qt_toolchain_initial_qt_host_path_cmake_dir "@qt_host_path_cmake_dir_absolute@") -# Prefer initially configured path if none was explicitly set. -if(NOT DEFINED QT_HOST_PATH AND __qt_toolchain_initial_qt_host_path - AND EXISTS "${__qt_toolchain_initial_qt_host_path}") - set(QT_HOST_PATH "${__qt_toolchain_initial_qt_host_path}" CACHE PATH "") +# QT_HOST_PATH precedence: +# - cache variable / command line option +# - environment variable +# - initial QT_HOST_PATH when qtbase was configured (and the directory exists) +if(NOT DEFINED QT_HOST_PATH) + if(DEFINED ENV{QT_HOST_PATH}) + set(QT_HOST_PATH "$ENV{QT_HOST_PATH}" CACHE PATH "") + else(__qt_toolchain_initial_qt_host_path AND EXISTS "${__qt_toolchain_initial_qt_host_path}") + set(QT_HOST_PATH "${__qt_toolchain_initial_qt_host_path}" CACHE PATH "") + endif() endif() if(NOT QT_HOST_PATH STREQUAL "")