diff --git a/bin/qt-configure-module.bat.in b/bin/qt-configure-module.bat.in index a4858d412c..9d9243f5b8 100644 --- a/bin/qt-configure-module.bat.in +++ b/bin/qt-configure-module.bat.in @@ -17,18 +17,9 @@ if not exist "%module_root%\CMakeLists.txt" ( exit /b 1 ) -echo. > "config.opt" -set first_iteration=indeed -for %%a in (%*) do ( - if defined first_iteration ( - :: Drop the first argument, which is the module root. - set first_iteration= - ) else ( - echo %%a >> "config.opt" - ) -) - set cmake_scripts_dir=%script_dir_path%\@__relative_path_to_cmake_scripts_dir@ +call "%script_dir_path%"\qt-cmake.bat -DSKIP_ARGS=1 -DOUT_FILE=config.opt ^ + -P "%cmake_scripts_dir%\QtWriteArgsFile.cmake" %* call "%script_dir_path%"\qt-cmake-private.bat -DOPTFILE=config.opt -DMODULE_ROOT="%module_root%" ^ -DCMAKE_COMMAND="%script_dir_path%\qt-cmake-private.bat" ^ -P "%cmake_scripts_dir%\QtProcessConfigureArgs.cmake" diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake index ae1fc89a5b..2fd8b260a9 100644 --- a/cmake/QtBaseGlobalTargets.cmake +++ b/cmake/QtBaseGlobalTargets.cmake @@ -216,6 +216,7 @@ qt_copy_or_install(FILES cmake/QtToolchainHelpers.cmake cmake/QtToolHelpers.cmake cmake/QtWrapperScriptHelpers.cmake + cmake/QtWriteArgsFile.cmake DESTINATION "${__GlobalConfig_install_dir}" ) 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}") diff --git a/configure.bat b/configure.bat index d90ebd150d..90d2eaa4f5 100644 --- a/configure.bat +++ b/configure.bat @@ -317,8 +317,7 @@ goto :eof rem Write config.opt if we're not currently -redo'ing if "%rargs%" == "" ( - if exist "%TOPQTDIR%\config.opt" del "%TOPQTDIR%\config.opt" - for %%a in (%ARGS%) do echo %%a >> "%TOPQTDIR%\config.opt" + cmake -DOUT_FILE=config.opt -P "%QTSRC%\cmake\QtWriteArgsFile.cmake" %* ) rem Launch CMake-based configure