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. Pick-to: 6.2 Fixes: QTBUG-97821 Change-Id: I460bae61a531994422e1c0fba09c79e4aa65713f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
c0bc4c7638
commit
71e490f0ba
2
bin/qmake-and-qtpaths-wrapper.bat.in
Normal file
2
bin/qmake-and-qtpaths-wrapper.bat.in
Normal file
@ -0,0 +1,2 @@
|
||||
@echo off
|
||||
@host_qt_bindir@\@tool_name@.exe -qtconf "%~dp0\target_qt.conf" %*
|
2
bin/qmake-wrapper-for-target.in → bin/qmake-and-qtpaths-wrapper.in
Normal file → Executable file
2
bin/qmake-wrapper-for-target.in → bin/qmake-and-qtpaths-wrapper.in
Normal file → Executable file
@ -4,4 +4,4 @@
|
||||
script_dir_path=`dirname $0`
|
||||
script_dir_path=`(cd "$script_dir_path"; /bin/pwd)`
|
||||
|
||||
@host_qt_bindir@/qmake -qtconf "$script_dir_path/target_qt.conf" $*
|
||||
@host_qt_bindir@/@tool_name@ -qtconf "$script_dir_path/target_qt.conf" $*
|
@ -1,2 +0,0 @@
|
||||
@echo off
|
||||
@host_qt_bindir@\qmake.exe -qtconf "%~dp0\target_qt.conf" %*
|
@ -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)
|
||||
|
||||
|
@ -68,10 +68,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()
|
||||
@ -127,27 +127,29 @@ TargetSpec=${QT_QMAKE_TARGET_MKSPEC}
|
||||
HostSpec=${QT_QMAKE_HOST_MKSPEC}
|
||||
")
|
||||
file(GENERATE OUTPUT "${qt_conf_path}" CONTENT "${content}")
|
||||
|
||||
qt_path_join(qmake_wrapper_in_file "${CMAKE_CURRENT_SOURCE_DIR}/bin/qmake-wrapper-for-target")
|
||||
set(qmake_wrapper "qmake")
|
||||
if(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING)
|
||||
# Avoid collisions with the cross-compiled qmake binary.
|
||||
string(PREPEND qmake_wrapper "host-")
|
||||
endif()
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
string(APPEND qmake_wrapper_in_file ".bat")
|
||||
string(APPEND qmake_wrapper ".bat")
|
||||
endif()
|
||||
string(APPEND qmake_wrapper_in_file ".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}")
|
||||
|
||||
set(wrapper_prefix)
|
||||
set(wrapper_extension)
|
||||
if(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING)
|
||||
# Avoid collisions with the cross-compiled qmake/qtpaths binaries.
|
||||
set(wrapper_prefix "host-")
|
||||
endif()
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
set(wrapper_extension ".bat")
|
||||
endif()
|
||||
|
||||
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}")
|
||||
|
||||
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.
|
||||
|
Loading…
Reference in New Issue
Block a user