diff options
Diffstat (limited to 'configure.bat')
-rw-r--r-- | configure.bat | 34 |
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" |