summaryrefslogtreecommitdiffstats
path: root/configure.bat
diff options
context:
space:
mode:
Diffstat (limited to 'configure.bat')
-rw-r--r--configure.bat34
1 files changed, 26 insertions, 8 deletions
diff --git a/configure.bat b/configure.bat
index 1fb822d60f..0c22fdccca 100644
--- a/configure.bat
+++ b/configure.bat
@@ -1,6 +1,6 @@
:: Copyright (C) 2016 The Qt Company Ltd.
:: Copyright (C) 2016 Intel Corporation.
-:: SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+:: SPDX-License-Identifier: BSD-3-Clause
@echo off
setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
@@ -65,9 +65,8 @@ goto doneargs
:redo
if not exist "%TOPQTDIR%\config.opt" goto redoerr
- set rargs=
- for /f "usebackq delims=" %%i in ("%TOPQTDIR%\config.opt") do set rargs=!rargs! "%%i"
- call :doargs %rargs%
+ echo %ARGS% > %TOPQTDIR%\config.redo.in
+ set redoing=""
goto nextarg
:redoerr
echo No config.opt present - cannot redo configuration. >&2
@@ -78,12 +77,31 @@ goto doneargs
cd "%TOPQTDIR%"
rem Write config.opt if we're not currently -redo'ing
-if "!rargs!" == "" (
- echo.%*>config.opt.in
- cmake -DIN_FILE=config.opt.in -DOUT_FILE=config.opt -DIGNORE_ARGS=-top-level -P "%QTSRC%\cmake\QtWriteArgsFile.cmake"
+set OPT_FILE_PATH=%TOPQTDIR%\config.opt
+set OPT_TMP_FILE_PATH=%TOPQTDIR%\config.opt.in
+set REDO_FILE_PATH=%TOPQTDIR%\config.redo.last
+set REDO_TMP_FILE_PATH=%TOPQTDIR%\config.redo.in
+set FRESH_REQUESTED_ARG=
+if not defined redoing (
+ rem "The '.' in 'echo.%*' ensures we don't print "echo is off" when no arguments are passed"
+ rem "https://devblogs.microsoft.com/oldnewthing/20170802-00/?p=96735"
+ rem "The space before the '>' makes sure that when we have a digit at the end of the args, we"
+ rem "don't accidentally concatenate it with the '>' resulting in '0>' or '2>' which redirects"
+ rem "into the file from a stream different than stdout, leading to broken or empty content."
+ echo.%* >"%OPT_TMP_FILE_PATH%"
+
+ cmake -DIN_FILE="%OPT_TMP_FILE_PATH%" -DOUT_FILE="%OPT_FILE_PATH%" -DIGNORE_ARGS=-top-level -P "%QTSRC%\cmake\QtWriteArgsFile.cmake"
+) else (
+ echo. 2> "%OPT_TMP_FILE_PATH%"
+ for /F "usebackq tokens=*" %%A in ("%OPT_FILE_PATH%") do echo "%%A" >> "%OPT_TMP_FILE_PATH%"
+
+ cmake -DIN_FILE="%OPT_TMP_FILE_PATH%" -DREDO_FILE="%REDO_TMP_FILE_PATH%" -DOUT_FILE="%REDO_FILE_PATH%" -DIGNORE_ARGS="-top-level;-redo;--redo" -P "%QTSRC%\cmake\QtWriteArgsFile.cmake"
+
+ set OPT_FILE_PATH=%REDO_FILE_PATH%
+ set FRESH_REQUESTED_ARG=-DFRESH_REQUESTED=TRUE
)
rem Launch CMake-based configure
set TOP_LEVEL_ARG=
if %TOPLEVEL% == true set TOP_LEVEL_ARG=-DTOP_LEVEL=TRUE
-cmake -DOPTFILE=config.opt %TOP_LEVEL_ARG% -P "%QTSRC%\cmake\QtProcessConfigureArgs.cmake"
+cmake -DOPTFILE="%OPT_FILE_PATH%" %TOP_LEVEL_ARG% %FRESH_REQUESTED_ARG% -P "%QTSRC%\cmake\QtProcessConfigureArgs.cmake"