diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-10-29 11:34:32 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-10-30 08:22:30 +0100 |
commit | 2a29426e3915ecc7fa5b4cbb06c7565c40ca2ec6 (patch) | |
tree | 95ca992725cbea7f42592992b486e53b119c3c02 /cmake/QtWriteArgsFile.cmake | |
parent | de3bd644259b134d68414dcb8479f66f2f39fe70 (diff) |
CMake: Fix argument passing for configure.bat / qt-configure-module.bat
Passing arguments with equal signs was broken for configure.bat and
qt-configure-module.bat. An argument FOO=BAR was split at = and written
as
FOO
BAR
to config.opt, breaking every attempt of assigning CMake variables.
We must not iterate over %* in batch files to avoid splitting arguments
at equal signs. Instead, pass %* unmodified to a CMake script that
writes config.opt.
Fixes: QTBUG-88019
Change-Id: I7c743a206961d1ed168f2313f864905f6b345b49
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtWriteArgsFile.cmake')
-rw-r--r-- | cmake/QtWriteArgsFile.cmake | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/cmake/QtWriteArgsFile.cmake b/cmake/QtWriteArgsFile.cmake new file mode 100644 index 0000000000..b4fa833f79 --- /dev/null +++ b/cmake/QtWriteArgsFile.cmake @@ -0,0 +1,31 @@ +# This script writes its arguments to the file determined by OUT_FILE. +# Each argument appears on a separate line. +# This is used for writing the config.opt file. +# +# This script takes the following arguments: +# OUT_FILE: The output file. +# SKIP_ARGS: Number of arguments to skip from the front of the arguments list. + +# Look for the -P argument to determine the start of the actual script arguments +math(EXPR stop "${CMAKE_ARGC} - 1") +set(start 0) +foreach(i RANGE 1 ${stop}) + if(CMAKE_ARGV${i} STREQUAL "-P") + math(EXPR start "${i} + 2") + break() + endif() +endforeach() + +# Skip arguments if requested +if(DEFINED SKIP_ARGS) + math(EXPR start "${start} + ${SKIP_ARGS}") +endif() + +# Write config.opt +set(content "") +if(start LESS_EQUAL stop) + foreach(i RANGE ${start} ${stop}) + string(APPEND content "${CMAKE_ARGV${i}}\n") + endforeach() +endif() +file(WRITE "${OUT_FILE}" "${content}") |