summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/qt-configure-module.bat.in5
-rw-r--r--cmake/QtWriteArgsFile.cmake33
-rw-r--r--configure.bat3
3 files changed, 19 insertions, 22 deletions
diff --git a/bin/qt-configure-module.bat.in b/bin/qt-configure-module.bat.in
index 9d9243f5b8..c963111017 100644
--- a/bin/qt-configure-module.bat.in
+++ b/bin/qt-configure-module.bat.in
@@ -18,8 +18,9 @@ if not exist "%module_root%\CMakeLists.txt" (
)
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" %*
+echo %*>config.opt.in
+call "%script_dir_path%"\qt-cmake.bat -DSKIP_ARGS=1 -DIN_FILE=config.opt.in -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/QtWriteArgsFile.cmake b/cmake/QtWriteArgsFile.cmake
index ddb390a146..d21d050ed4 100644
--- a/cmake/QtWriteArgsFile.cmake
+++ b/cmake/QtWriteArgsFile.cmake
@@ -3,35 +3,30 @@
# This is used for writing the config.opt file.
#
# This script takes the following arguments:
-# OUT_FILE: The output file.
+# IN_FILE: The input file. The whole command line as one string.
+# OUT_FILE: The output file. One argument per line.
# SKIP_ARGS: Number of arguments to skip from the front of the arguments list.
# IGNORE_ARGS: List of arguments to be ignored, i.e. that are not written.
cmake_minimum_required(VERSION 3.3)
-# 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()
+# Read arguments from IN_FILE and separate them.
+file(READ "${IN_FILE}" raw_args)
+separate_arguments(args NATIVE_COMMAND "${raw_args}")
# Skip arguments if requested
if(DEFINED SKIP_ARGS)
- math(EXPR start "${start} + ${SKIP_ARGS}")
+ foreach(i RANGE 1 ${SKIP_ARGS})
+ list(POP_FRONT args)
+ endforeach()
endif()
# Write config.opt
set(content "")
-if(start LESS_EQUAL stop)
- foreach(i RANGE ${start} ${stop})
- set(arg ${CMAKE_ARGV${i}})
- if(NOT arg IN_LIST IGNORE_ARGS)
- string(APPEND content "${arg}\n")
- endif()
- endforeach()
-endif()
+foreach(arg IN LISTS args)
+ if(NOT arg IN_LIST IGNORE_ARGS)
+ string(APPEND content "${arg}\n")
+ endif()
+endforeach()
+
file(WRITE "${OUT_FILE}" "${content}")
diff --git a/configure.bat b/configure.bat
index 36fae68144..54fa2b2110 100644
--- a/configure.bat
+++ b/configure.bat
@@ -104,7 +104,8 @@ cd "%TOPQTDIR%"
rem Write config.opt if we're not currently -redo'ing
if "%rargs%" == "" (
- cmake -DOUT_FILE=config.opt -DIGNORE_ARGS=-top-level -P "%QTSRC%\cmake\QtWriteArgsFile.cmake" %*
+ echo %*>config.opt.in
+ cmake -DIN_FILE=config.opt.in -DOUT_FILE=config.opt -DIGNORE_ARGS=-top-level -P "%QTSRC%\cmake\QtWriteArgsFile.cmake"
)
rem Launch CMake-based configure