[CMAKE] Improve configure script to work with newer CMake versions (#5742)

This change allows to properly pass parameters to newer CMake versions. Currently the script passes "VSSolution" and similar on to CMake, which are ignored, but newer CMake will complain. Allows to configure a VSSolution with CMake 3.27.4.
This commit is contained in:
Timo Kreuzer 2023-10-17 13:17:35 +03:00 committed by GitHub
parent d9cb169920
commit e0545dab15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -76,48 +76,58 @@ if not defined ARCH (
set USE_CLANG_CL=0 set USE_CLANG_CL=0
REM Parse command line parameters REM Parse command line parameters
set CMAKE_PARAMS=
set REMAINING=%*
:repeat :repeat
REM Extract a parameter without removing '='
for /f "tokens=1*" %%a in ("%REMAINING%") do (
set "PARAM=%%a"
set REMAINING=%%b
)
if "%BUILD_ENVIRONMENT%" == "MinGW" ( if "%BUILD_ENVIRONMENT%" == "MinGW" (
if /I "%1" == "Codeblocks" ( if /I "!PARAM!" == "Codeblocks" (
set CMAKE_GENERATOR="CodeBlocks - MinGW Makefiles" set CMAKE_GENERATOR="CodeBlocks - MinGW Makefiles"
) else if /I "%1" == "Eclipse" ( ) else if /I "!PARAM!" == "Eclipse" (
set CMAKE_GENERATOR="Eclipse CDT4 - MinGW Makefiles" set CMAKE_GENERATOR="Eclipse CDT4 - MinGW Makefiles"
) else if /I "%1" == "Makefiles" ( ) else if /I "!PARAM!" == "Makefiles" (
set CMAKE_GENERATOR="MinGW Makefiles" set CMAKE_GENERATOR="MinGW Makefiles"
) else if /I "%1" == "Ninja" ( ) else if /I "!PARAM!" == "Ninja" (
set CMAKE_GENERATOR="Ninja" set CMAKE_GENERATOR="Ninja"
) else if /I "%1" == "VSSolution" ( ) else if /I "!PARAM!" == "VSSolution" (
echo. && echo Error: Creation of VS Solution files is not supported in a MinGW environment. echo. && echo Error: Creation of VS Solution files is not supported in a MinGW environment.
echo Please run this command in a [Developer] Command Prompt for Visual Studio. echo Please run this command in a [Developer] Command Prompt for Visual Studio.
goto quit goto quit
) else if /I "%1" NEQ "" ( ) else if /I "!PARAM:~0,2!" == "-D" (
echo.%1| find /I "-D" >nul 2>&1 REM User is passing a switch to CMake
if not errorlevel 1 ( set "CMAKE_PARAMS=%CMAKE_PARAMS% !PARAM!"
REM User is passing a switch to CMake
REM Ignore it, and ignore the next parameter that follows
Shift
) else (
echo. && echo Warning: Unrecognized switch "%1" && echo.
)
) else ( ) else (
goto continue echo. && echo Warning: Unrecognized switch "!PARAM!" && echo.
) )
) else ( ) else (
if /I "%1" == "CodeBlocks" ( if /I "!PARAM!" == "CodeBlocks" (
set CMAKE_GENERATOR="CodeBlocks - NMake Makefiles" set CMAKE_GENERATOR="CodeBlocks - NMake Makefiles"
) else if /I "%1" == "Eclipse" ( ) else if /I "!PARAM!" == "Eclipse" (
set CMAKE_GENERATOR="Eclipse CDT4 - NMake Makefiles" set CMAKE_GENERATOR="Eclipse CDT4 - NMake Makefiles"
) else if /I "%1" == "Makefiles" ( ) else if /I "!PARAM!" == "Makefiles" (
set CMAKE_GENERATOR="NMake Makefiles" set CMAKE_GENERATOR="NMake Makefiles"
) else if /I "%1" == "Ninja" ( ) else if /I "!PARAM!" == "Ninja" (
set CMAKE_GENERATOR="Ninja" set CMAKE_GENERATOR="Ninja"
) else if /I "%1" == "clang" ( ) else if /I "!PARAM!" == "clang" (
set USE_CLANG_CL=1 set USE_CLANG_CL=1
) else if /I "%1" == "VSSolution" ( ) else if /I "!PARAM!" == "VSSolution" (
set VS_SOLUTION=1 set VS_SOLUTION=1
REM explicitly set VS version for project generator REM explicitly set VS version for project generator
if /I "%2" == "-VS_VER" ( for /f "tokens=1*" %%a in ("%REMAINING%") do (
set VS_VERSION=%3 set PARAM=%%a
set REMAINING2=%%b
)
if /I "!PARAM!" == "-VS_VER" (
for /f "tokens=1*" %%a in ("!REMAINING2!") do (
set VS_VERSION=%%a
set REMAINING=%%b
)
echo Visual Studio Environment set to !BUILD_ENVIRONMENT!!VS_VERSION!-!ARCH! echo Visual Studio Environment set to !BUILD_ENVIRONMENT!!VS_VERSION!-!ARCH!
) )
set CMAKE_GENERATOR="Visual Studio !VS_VERSION!" set CMAKE_GENERATOR="Visual Studio !VS_VERSION!"
@ -130,24 +140,16 @@ REM Parse command line parameters
) else if "!ARCH!" == "arm64" ( ) else if "!ARCH!" == "arm64" (
set CMAKE_ARCH=-A ARM64 set CMAKE_ARCH=-A ARM64
) )
) else if /I "%1" NEQ "" ( ) else if /I "!PARAM:~0,2!" == "-D" (
echo.%1| find /I "-D" >nul 2>&1 REM User is passing a switch to CMake
if not errorlevel 1 ( set "CMAKE_PARAMS=%CMAKE_PARAMS% !PARAM!"
REM User is passing a switch to CMake
REM Ignore it, and ignore the next parameter that follows
Shift
) else (
echo. && echo Warning: Unrecognized switch "%1" && echo.
)
) else ( ) else (
goto continue echo. && echo Warning: Unrecognized switch "!PARAM!" && echo.
) )
) )
REM Go to next parameter REM Go to next parameter
SHIFT if defined REMAINING goto repeat
goto repeat
:continue
REM Inform the user about the default build REM Inform the user about the default build
if "!CMAKE_GENERATOR!" == "Ninja" ( if "!CMAKE_GENERATOR!" == "Ninja" (
@ -194,11 +196,11 @@ if EXIST CMakeCache.txt (
if "%BUILD_ENVIRONMENT%" == "MinGW" ( if "%BUILD_ENVIRONMENT%" == "MinGW" (
cmake -G %CMAKE_GENERATOR% -DENABLE_CCACHE:BOOL=0 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=%MINGW_TOOCHAIN_FILE% -DARCH:STRING=%ARCH% %BUILD_TOOLS_FLAG% %* "%REACTOS_SOURCE_DIR%" cmake -G %CMAKE_GENERATOR% -DENABLE_CCACHE:BOOL=0 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=%MINGW_TOOCHAIN_FILE% -DARCH:STRING=%ARCH% %BUILD_TOOLS_FLAG% %CMAKE_PARAMS% "%REACTOS_SOURCE_DIR%"
) else if %USE_CLANG_CL% == 1 ( ) else if %USE_CLANG_CL% == 1 (
cmake -G %CMAKE_GENERATOR% -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=%ARCH% %BUILD_TOOLS_FLAG% -DUSE_CLANG_CL:BOOL=1 %* "%REACTOS_SOURCE_DIR%" cmake -G %CMAKE_GENERATOR% -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=%ARCH% %BUILD_TOOLS_FLAG% -DUSE_CLANG_CL:BOOL=1 %CMAKE_PARAMS% "%REACTOS_SOURCE_DIR%"
) else ( ) else (
cmake -G %CMAKE_GENERATOR% %CMAKE_ARCH% -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=%ARCH% %BUILD_TOOLS_FLAG% %* "%REACTOS_SOURCE_DIR%" cmake -G %CMAKE_GENERATOR% %CMAKE_ARCH% -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=%ARCH% %BUILD_TOOLS_FLAG% %CMAKE_PARAMS% "%REACTOS_SOURCE_DIR%"
) )
if %ERRORLEVEL% NEQ 0 ( if %ERRORLEVEL% NEQ 0 (