From 72de1af9e9e51bf40c61361e4d33ded125d1cc93 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Mon, 12 Sep 2022 15:28:13 +0200 Subject: [PATCH] CMake: Add function to get tool wrapper shell script path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The _qt_internal_wrap_tool_command function has a limitation that it is not possible to use it when a command needs to be wrapper in a generator expression. Provide a lower level API called _qt_internal_get_tool_wrapper_script_path to just get the path to the wrapper script, ensuring that the script is created if needed. Deprecate _qt_internal_wrap_tool_command, in favor of replacing it with the new API. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: Ie4a4a17178bf2061ae01ee2b03b052d84560abf9 Reviewed-by: Qt CI Bot Reviewed-by: Jörg Bornemann Reviewed-by: Alexey Edelev (cherry picked from commit 59e08d21058661d9972da4840a82e2bc80d02741) Reviewed-by: Amir Masoud Abdol --- cmake/QtBuild.cmake | 2 +- cmake/QtPublicToolHelpers.cmake | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 74365a0b368..7c57629b769 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -258,7 +258,7 @@ function(qt_setup_tool_path_command) list(APPEND command COMMAND) list(APPEND command set PATH=${bindir}$%PATH%) set(QT_TOOL_PATH_SETUP_COMMAND "${command}" CACHE INTERNAL "internal command prefix for tool invocations" FORCE) - # QT_TOOL_PATH_SETUP_COMMAND is deprecated. Please use _qt_internal_wrap_tool_command + # QT_TOOL_PATH_SETUP_COMMAND is deprecated. Please use _qt_internal_get_wrap_tool_script_path # instead. endfunction() qt_setup_tool_path_command() diff --git a/cmake/QtPublicToolHelpers.cmake b/cmake/QtPublicToolHelpers.cmake index 1f3b76b4e81..d2cff15e9ad 100644 --- a/cmake/QtPublicToolHelpers.cmake +++ b/cmake/QtPublicToolHelpers.cmake @@ -66,6 +66,11 @@ endfunction() # Arguments: # APPEND Selects the 'append' mode for the out_variable argument. # SET Selects the 'set' mode for the out_variable argument. +# +# FIXME: Replace all usages of _qt_internal_wrap_tool_command +# with _qt_internal_get_wrap_tool_script_path and remove the former. +# The former always adds the COMMAND keyword, which does not allow the caller to wrap the +# commands in a generator expression. See _qt_internal_target_enable_qmllint for an example. function(_qt_internal_wrap_tool_command out_variable action) set(append FALSE) if(action STREQUAL "APPEND") @@ -86,3 +91,11 @@ function(_qt_internal_wrap_tool_command out_variable action) endif() set(${out_variable} "${${out_variable}}" PARENT_SCOPE) endfunction() + +# Gets the path to tool wrapper shell script. +function(_qt_internal_get_tool_wrapper_script_path out_variable) + # Ensure the script wrapper exists. + _qt_internal_generate_tool_command_wrapper() + + set(${out_variable} "${QT_TOOL_COMMAND_WRAPPER_PATH}" PARENT_SCOPE) +endfunction()