CMake: Use host variables instead of hardcoded directories
'QT_HOST_PATH' indicates that we use crosscompilation toolchain to build project. In this case 'Qt6Config.cmake' loads 'Qt6HostInfoConfig.cmake' from host QT_HOST_PATH, that defines correct paths to host tools. Replace hardcoded paths for host tools by paths recorded in Qt6HostInfoConfig.cmake. Correct conditions for QT_HOST_PATH, evaluate it explicitly as string, but not as boolean expression. Fixes: QTBUG-86557 Change-Id: Ib52bbd32478051d019a932dcb1f735e2d4aacfbf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 56bdef94379479f27858dccc73a95614648735bb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
701934d39f
commit
f815382114
@ -19,6 +19,16 @@ else()
|
|||||||
QT_VERSION_PATCH @PROJECT_VERSION_PATCH@)
|
QT_VERSION_PATCH @PROJECT_VERSION_PATCH@)
|
||||||
endif()
|
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()
|
||||||
|
|
||||||
# if (NOT @INSTALL_CMAKE_NAMESPACE@_FIND_COMPONENTS)
|
# if (NOT @INSTALL_CMAKE_NAMESPACE@_FIND_COMPONENTS)
|
||||||
# set(@INSTALL_CMAKE_NAMESPACE@_NOT_FOUND_MESSAGE "The Qt package requires at least one component")
|
# set(@INSTALL_CMAKE_NAMESPACE@_NOT_FOUND_MESSAGE "The Qt package requires at least one component")
|
||||||
# set(@INSTALL_CMAKE_NAMESPACE@_FOUND False)
|
# set(@INSTALL_CMAKE_NAMESPACE@_FOUND False)
|
||||||
|
@ -43,7 +43,7 @@ endforeach()
|
|||||||
# Find Qt tool package.
|
# Find Qt tool package.
|
||||||
set(_tool_deps "@main_module_tool_deps@")
|
set(_tool_deps "@main_module_tool_deps@")
|
||||||
|
|
||||||
if(QT_HOST_PATH)
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
# Make sure that the tools find the host tools first
|
# Make sure that the tools find the host tools first
|
||||||
set(BACKUP_@target@_CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
|
set(BACKUP_@target@_CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
|
||||||
set(BACKUP_@target@_CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH})
|
set(BACKUP_@target@_CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH})
|
||||||
@ -64,14 +64,14 @@ foreach(_target_dep ${_tool_deps})
|
|||||||
endif()
|
endif()
|
||||||
find_package(${pkg} ${version} ${find_package_args})
|
find_package(${pkg} ${version} ${find_package_args})
|
||||||
if (NOT ${pkg}_FOUND)
|
if (NOT ${pkg}_FOUND)
|
||||||
if(QT_HOST_PATH)
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
set(CMAKE_PREFIX_PATH ${BACKUP_@target@_CMAKE_PREFIX_PATH})
|
set(CMAKE_PREFIX_PATH ${BACKUP_@target@_CMAKE_PREFIX_PATH})
|
||||||
set(CMAKE_FIND_ROOT_PATH ${BACKUP_@target@_CMAKE_FIND_ROOT_PATH})
|
set(CMAKE_FIND_ROOT_PATH ${BACKUP_@target@_CMAKE_FIND_ROOT_PATH})
|
||||||
endif()
|
endif()
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
if(QT_HOST_PATH)
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
set(CMAKE_PREFIX_PATH ${BACKUP_@target@_CMAKE_PREFIX_PATH})
|
set(CMAKE_PREFIX_PATH ${BACKUP_@target@_CMAKE_PREFIX_PATH})
|
||||||
set(CMAKE_FIND_ROOT_PATH ${BACKUP_@target@_CMAKE_FIND_ROOT_PATH})
|
set(CMAKE_FIND_ROOT_PATH ${BACKUP_@target@_CMAKE_FIND_ROOT_PATH})
|
||||||
endif()
|
endif()
|
||||||
|
@ -127,8 +127,8 @@ define_property(TARGET
|
|||||||
|
|
||||||
# Returns test execution arguments for Android targets
|
# Returns test execution arguments for Android targets
|
||||||
function(qt_internal_android_test_arguments target out_test_runner out_test_arguments)
|
function(qt_internal_android_test_arguments target out_test_runner out_test_arguments)
|
||||||
set(${out_test_runner} "${QT_HOST_PATH}/bin/androidtestrunner" PARENT_SCOPE)
|
set(${out_test_runner} "${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}/androidtestrunner" PARENT_SCOPE)
|
||||||
set(deployment_tool "${QT_HOST_PATH}/bin/androiddeployqt")
|
set(deployment_tool "${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}/androiddeployqt")
|
||||||
|
|
||||||
get_target_property(deployment_file ${target} QT_ANDROID_DEPLOYMENT_SETTINGS_FILE)
|
get_target_property(deployment_file ${target} QT_ANDROID_DEPLOYMENT_SETTINGS_FILE)
|
||||||
if (NOT deployment_file)
|
if (NOT deployment_file)
|
||||||
|
@ -174,11 +174,12 @@ if (CMAKE_CROSSCOMPILING)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(QT_HOST_PATH)
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
find_package(Qt${PROJECT_VERSION_MAJOR}HostInfo
|
find_package(Qt${PROJECT_VERSION_MAJOR}HostInfo
|
||||||
CONFIG
|
CONFIG
|
||||||
REQUIRED
|
REQUIRED
|
||||||
PATHS "${QT_HOST_PATH}" "${QT_HOST_PATH}/lib/cmake"
|
PATHS "${QT_HOST_PATH}"
|
||||||
|
"${QT_HOST_PATH_CMAKE_DIR}"
|
||||||
NO_CMAKE_FIND_ROOT_PATH
|
NO_CMAKE_FIND_ROOT_PATH
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH)
|
||||||
endif()
|
endif()
|
||||||
|
@ -27,7 +27,7 @@ function(qt_ensure_sync_qt)
|
|||||||
qt_path_join(syncqt_install_dir ${QT_INSTALL_DIR} ${INSTALL_BINDIR})
|
qt_path_join(syncqt_install_dir ${QT_INSTALL_DIR} ${INSTALL_BINDIR})
|
||||||
qt_copy_or_install(PROGRAMS "${SYNCQT_FROM_SOURCE}"
|
qt_copy_or_install(PROGRAMS "${SYNCQT_FROM_SOURCE}"
|
||||||
DESTINATION "${syncqt_install_dir}")
|
DESTINATION "${syncqt_install_dir}")
|
||||||
elseif(QT_HOST_PATH)
|
elseif(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
get_filename_component(syncqt_absolute_path
|
get_filename_component(syncqt_absolute_path
|
||||||
"${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}/syncqt.pl"
|
"${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}/syncqt.pl"
|
||||||
ABSOLUTE)
|
ABSOLUTE)
|
||||||
|
@ -501,7 +501,7 @@ function(qt_internal_create_tracepoints name tracepoints_file)
|
|||||||
set(tracegen_arg "etw")
|
set(tracegen_arg "etw")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(QT_HOST_PATH)
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
qt_path_join(tracegen
|
qt_path_join(tracegen
|
||||||
"${QT_HOST_PATH}"
|
"${QT_HOST_PATH}"
|
||||||
"${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}"
|
"${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# as well as CMake application projects.
|
# as well as CMake application projects.
|
||||||
# Expects various global variables to be set.
|
# Expects various global variables to be set.
|
||||||
function(qt_internal_create_toolchain_file)
|
function(qt_internal_create_toolchain_file)
|
||||||
if(QT_HOST_PATH)
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
# TODO: Figure out how to make these relocatable.
|
# TODO: Figure out how to make these relocatable.
|
||||||
|
|
||||||
get_filename_component(__qt_host_path_absolute "${QT_HOST_PATH}" ABSOLUTE)
|
get_filename_component(__qt_host_path_absolute "${QT_HOST_PATH}" ABSOLUTE)
|
||||||
@ -22,10 +22,10 @@ function(qt_internal_create_toolchain_file)
|
|||||||
endif()")
|
endif()")
|
||||||
|
|
||||||
set(init_qt_host_path_checks "
|
set(init_qt_host_path_checks "
|
||||||
if(NOT QT_HOST_PATH OR NOT EXISTS \"\${QT_HOST_PATH}\")
|
if(\"\${QT_HOST_PATH}\" STREQUAL \"\" OR NOT EXISTS \"\${QT_HOST_PATH}\")
|
||||||
message(FATAL_ERROR \"To use a cross-compiled Qt, please specify a path to a host Qt installation by setting the QT_HOST_PATH cache variable.\")
|
message(FATAL_ERROR \"To use a cross-compiled Qt, please specify a path to a host Qt installation by setting the QT_HOST_PATH cache variable.\")
|
||||||
endif()
|
endif()
|
||||||
if(NOT QT_HOST_PATH_CMAKE_DIR OR NOT EXISTS \"\${QT_HOST_PATH_CMAKE_DIR}\")
|
if(\"\${QT_HOST_PATH_CMAKE_DIR}\" STREQUAL \"\" OR NOT EXISTS \"\${QT_HOST_PATH_CMAKE_DIR}\")
|
||||||
message(FATAL_ERROR \"To use a cross-compiled Qt, please specify a path to a host Qt installation CMake directory by setting the QT_HOST_PATH_CMAKE_DIR cache variable.\")
|
message(FATAL_ERROR \"To use a cross-compiled Qt, please specify a path to a host Qt installation CMake directory by setting the QT_HOST_PATH_CMAKE_DIR cache variable.\")
|
||||||
endif()")
|
endif()")
|
||||||
endif()
|
endif()
|
||||||
|
@ -180,7 +180,7 @@ function(qt6_android_generate_deployment_settings target)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Override qmlimportscanner binary path
|
# Override qmlimportscanner binary path
|
||||||
set(qml_importscanner_binary_path "${QT_HOST_PATH}/bin/qmlimportscanner")
|
set(qml_importscanner_binary_path "${QT_HOST_PATH}/${QT6_HOST_INFO_BINDIR}/qmlimportscanner")
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
string(APPEND qml_importscanner_binary_path ".exe")
|
string(APPEND qml_importscanner_binary_path ".exe")
|
||||||
endif()
|
endif()
|
||||||
@ -189,7 +189,7 @@ function(qt6_android_generate_deployment_settings target)
|
|||||||
" \"qml-importscanner-binary\" : \"${qml_importscanner_binary_path_native}\",\n")
|
" \"qml-importscanner-binary\" : \"${qml_importscanner_binary_path_native}\",\n")
|
||||||
|
|
||||||
# Override rcc binary path
|
# Override rcc binary path
|
||||||
set(rcc_binary_path "${QT_HOST_PATH}/bin/rcc")
|
set(rcc_binary_path "${QT_HOST_PATH}/${QT6_HOST_INFO_BINDIR}/rcc")
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
string(APPEND rcc_binary_path ".exe")
|
string(APPEND rcc_binary_path ".exe")
|
||||||
endif()
|
endif()
|
||||||
@ -269,7 +269,7 @@ function(qt6_android_add_apk_target target)
|
|||||||
set(should_add_to_global_apk TRUE)
|
set(should_add_to_global_apk TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(deployment_tool "${QT_HOST_PATH}/bin/androiddeployqt")
|
set(deployment_tool "${QT_HOST_PATH}/${QT6_HOST_INFO_BINDIR}/androiddeployqt")
|
||||||
set(apk_dir "$<TARGET_PROPERTY:${target},BINARY_DIR>/android-build")
|
set(apk_dir "$<TARGET_PROPERTY:${target},BINARY_DIR>/android-build")
|
||||||
add_custom_target(${target}_prepare_apk_dir
|
add_custom_target(${target}_prepare_apk_dir
|
||||||
DEPENDS ${target}
|
DEPENDS ${target}
|
||||||
|
@ -885,7 +885,7 @@ if (QT_FEATURE_vulkan)
|
|||||||
set(vulkan_fun_p_cpp "qvulkanfunctions_p.cpp")
|
set(vulkan_fun_p_cpp "qvulkanfunctions_p.cpp")
|
||||||
list(APPEND vulkan_fun_outputs "vulkan/${vulkan_fun_p_cpp}")
|
list(APPEND vulkan_fun_outputs "vulkan/${vulkan_fun_p_cpp}")
|
||||||
|
|
||||||
if(QT_HOST_PATH)
|
if(NOT "${QT_HOST_PATH}" STREQUAL "")
|
||||||
qt_path_join(qvkgen
|
qt_path_join(qvkgen
|
||||||
"${QT_HOST_PATH}"
|
"${QT_HOST_PATH}"
|
||||||
"${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}"
|
"${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user