diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2021-11-05 13:31:35 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-11-08 16:49:13 +0000 |
commit | ecffba2fa94e16ff05732a8cca54e436a48f8dd3 (patch) | |
tree | 41f571a52f658a85dadb379e5f43209ad8794abc /cmake | |
parent | 8e0ba3ca017667bdeb6c1a64ca3b8223f21c1cda (diff) |
Provide a qtpaths wrapper script when cross-building Qt
The qtpaths tool is supposed to replace "qmake -query", and it must be
available for cross-builds as a wrapper script like qmake.
Re-use the existing facility for creating the qmake wrapper script for
creating the qtpaths wrapper script.
Fixes: QTBUG-97821
Change-Id: I460bae61a531994422e1c0fba09c79e4aa65713f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 71e490f0baee0d27a45a17886c48f5defbbaea42)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtBaseGlobalTargets.cmake | 2 | ||||
-rw-r--r-- | cmake/QtQmakeHelpers.cmake | 32 |
2 files changed, 18 insertions, 16 deletions
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake index b165914938..7d2f95de3e 100644 --- a/cmake/QtBaseGlobalTargets.cmake +++ b/cmake/QtBaseGlobalTargets.cmake @@ -110,7 +110,7 @@ qt_feature_module_end(GlobalConfig OUT_VAR_PREFIX "__GlobalConfig_") qt_generate_global_config_pri_file() qt_generate_global_module_pri_file() qt_generate_global_device_pri_file() -qt_generate_qmake_wrapper_for_target() +qt_generate_qmake_and_qtpaths_wrapper_for_target() add_library(Qt::GlobalConfig ALIAS GlobalConfig) diff --git a/cmake/QtQmakeHelpers.cmake b/cmake/QtQmakeHelpers.cmake index 7c5d21ce78..930d5318db 100644 --- a/cmake/QtQmakeHelpers.cmake +++ b/cmake/QtQmakeHelpers.cmake @@ -81,10 +81,10 @@ function(qt_generate_qconfig_cpp in_file out_file) endfunction() # In the cross-compiling case, creates a wrapper around the host Qt's -# qmake executable. Also creates a qmake configuration file that sets +# qmake and qtpaths executables. Also creates a qmake configuration file that sets # up the host qmake's properties for cross-compiling with this Qt # build. -function(qt_generate_qmake_wrapper_for_target) +function(qt_generate_qmake_and_qtpaths_wrapper_for_target) if(NOT CMAKE_CROSSCOMPILING) return() endif() @@ -140,27 +140,29 @@ TargetSpec=${QT_QMAKE_TARGET_MKSPEC} HostSpec=${QT_QMAKE_HOST_MKSPEC} ") file(GENERATE OUTPUT "${qt_conf_path}" CONTENT "${content}") + qt_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${qt_conf_path}" + DESTINATION "${INSTALL_BINDIR}") - qt_path_join(qmake_wrapper_in_file "${CMAKE_CURRENT_SOURCE_DIR}/bin/qmake-wrapper-for-target") - set(qmake_wrapper "qmake") + set(wrapper_prefix) + set(wrapper_extension) if(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING) - # Avoid collisions with the cross-compiled qmake binary. - string(PREPEND qmake_wrapper "host-") + # Avoid collisions with the cross-compiled qmake/qtpaths binaries. + set(wrapper_prefix "host-") endif() if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - string(APPEND qmake_wrapper_in_file ".bat") - string(APPEND qmake_wrapper ".bat") + set(wrapper_extension ".bat") endif() - string(APPEND qmake_wrapper_in_file ".in") + set(wrapper_in_file + "${CMAKE_CURRENT_SOURCE_DIR}/bin/qmake-and-qtpaths-wrapper${wrapper_extension}.in") set(host_qt_bindir "${host_prefix}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_BINDIR}") - qt_path_join(qmake_wrapper "preliminary" "${qmake_wrapper}") - configure_file("${qmake_wrapper_in_file}" "${qmake_wrapper}" @ONLY) - qt_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${qt_conf_path}" - DESTINATION "${INSTALL_BINDIR}") - qt_copy_or_install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/${qmake_wrapper}" - DESTINATION "${INSTALL_BINDIR}") + foreach(tool_name qmake qtpaths) + set(wrapper "preliminary/${wrapper_prefix}${tool_name}${wrapper_extension}") + configure_file("${wrapper_in_file}" "${wrapper}" @ONLY) + qt_copy_or_install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/${wrapper}" + DESTINATION "${INSTALL_BINDIR}") + endforeach() endfunction() # Transforms a CMake Qt module name to a qmake Qt module name. |