X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=configure.cmd;h=5f3d939ef0faf1403389b03bce377cf03403e6f4;hp=922a8f1d944c1b65f4f22401c8fd4761bba99e0d;hb=04ff92bbdd6b31a17f19ee6bb1bc94dba6241859;hpb=03be7587ebb45e4e9fb49b47ef25adef6fb88e20 diff --git a/configure.cmd b/configure.cmd index 922a8f1d944..5f3d939ef0f 100755 --- a/configure.cmd +++ b/configure.cmd @@ -15,8 +15,7 @@ if /I "%1" == "/?" ( echo Syntax: path\to\source\configure.cmd [script-options] [Cmake-options] echo Available script-options: Codeblocks, Eclipse, Makefiles, clang, VSSolution, RTC echo Cmake-options: -DVARIABLE:TYPE=VALUE - endlocal - exit /b + goto quit ) REM Special case %1 = arm_hosttools %2 = vcvarsall.bat %3 = %CMAKE_GENERATOR% @@ -34,6 +33,16 @@ if /I "%1" == "arm_hosttools" ( REM Get the source root directory set REACTOS_SOURCE_DIR=%~dp0 +REM Ensure there's no spaces in the source path +echo %REACTOS_SOURCE_DIR%| find " " > NUL +if %ERRORLEVEL% == 0 ( + echo. && echo Your source path contains at least one space. + echo This will cause problems with building. + echo Please rename your folders so there are no spaces in the source path, + echo or move your source to a different folder. + goto quit +) + REM Set default generator set CMAKE_GENERATOR="Ninja" set CMAKE_GENERATOR_HOST=!CMAKE_GENERATOR! @@ -53,17 +62,17 @@ if defined ROS_ARCH ( cl 2>&1 | find "x86" > NUL && set ARCH=i386 cl 2>&1 | find "x64" > NUL && set ARCH=amd64 cl 2>&1 | find "ARM" > NUL && set ARCH=arm - cl 2>&1 | find "15.00." > NUL && set VS_VERSION=9 cl 2>&1 | find "16.00." > NUL && set VS_VERSION=10 cl 2>&1 | find "17.00." > NUL && set VS_VERSION=11 cl 2>&1 | find "18.00." > NUL && set VS_VERSION=12 cl 2>&1 | find "19.00." > NUL && set VS_VERSION=14 cl 2>&1 | find "19.10." > NUL && set VS_VERSION=15 cl 2>&1 | find "19.11." > NUL && set VS_VERSION=15 + cl 2>&1 | find "19.12." > NUL && set VS_VERSION=15 + cl 2>&1 | find "19.13." > NUL && set VS_VERSION=15 if not defined VS_VERSION ( - echo Error: Visual Studio version too old or version detection failed. - endlocal - exit /b + echo Error: Visual Studio version too old ^(before 10 ^(2010^)^) or version detection failed. + goto quit ) set BUILD_ENVIRONMENT=VS set VS_SOLUTION=0 @@ -71,15 +80,13 @@ if defined ROS_ARCH ( echo Detected Visual Studio Environment !BUILD_ENVIRONMENT!!VS_VERSION!-!ARCH! ) else ( echo Error: Unable to detect build environment. Configure script failure. - endlocal - exit /b + goto quit ) REM Checkpoint if not defined ARCH ( echo Unknown build architecture - endlocal - exit /b + goto quit ) set NEW_STYLE_BUILD=1 @@ -87,7 +94,7 @@ set USE_CLANG_CL=0 REM Parse command line parameters :repeat - if /I "%1%" == "-DNEW_STYLE_BUILD" ( + if /I "%1" == "-DNEW_STYLE_BUILD" ( set NEW_STYLE_BUILD=%2 ) else if "%BUILD_ENVIRONMENT%" == "MinGW" ( if /I "%1" == "Codeblocks" ( @@ -96,6 +103,21 @@ REM Parse command line parameters set CMAKE_GENERATOR="Eclipse CDT4 - MinGW Makefiles" ) else if /I "%1" == "Makefiles" ( set CMAKE_GENERATOR="MinGW Makefiles" + ) else if /I "%1" == "VSSolution" ( + 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. + goto quit + ) else if /I "%1" == "RTC" ( + echo. && echo Warning: RTC switch is ignored outside of a Visual Studio environment. && echo. + ) else if /I "%1" NEQ "" ( + echo %1| find /I "-D" > NUL + if %ERRORLEVEL% == 0 ( + 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 ( goto continue ) @@ -115,13 +137,7 @@ REM Parse command line parameters set VS_VERSION=%3 echo Visual Studio Environment set to !BUILD_ENVIRONMENT!!VS_VERSION!-!ARCH! ) - if "!VS_VERSION!" == "9" ( - if "!ARCH!" == "amd64" ( - set CMAKE_GENERATOR="Visual Studio 9 2008 Win64" - ) else ( - set CMAKE_GENERATOR="Visual Studio 9 2008" - ) - ) else if "!VS_VERSION!" == "10" ( + if "!VS_VERSION!" == "10" ( if "!ARCH!" == "amd64" ( set CMAKE_GENERATOR="Visual Studio 10 Win64" ) else ( @@ -167,6 +183,15 @@ REM Parse command line parameters ) else if /I "%1" == "RTC" ( echo Runtime checks enabled set VS_RUNTIME_CHECKS=1 + ) else if /I "%1" NEQ "" ( + echo %1| find /I "-D" > NUL + if %ERRORLEVEL% == 0 ( + 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 ( goto continue ) @@ -184,7 +209,13 @@ if "!CMAKE_GENERATOR!" == "Ninja" ( REM Create directories set REACTOS_OUTPUT_PATH=output-%BUILD_ENVIRONMENT%-%ARCH% + +if "%VS_SOLUTION%" == "1" ( + set REACTOS_OUTPUT_PATH=%REACTOS_OUTPUT_PATH%-sln +) + if "%REACTOS_SOURCE_DIR%" == "%CD%\" ( + set CD_SAME_AS_SOURCE=1 echo Creating directories in %REACTOS_OUTPUT_PATH% if not exist %REACTOS_OUTPUT_PATH% ( @@ -193,6 +224,21 @@ if "%REACTOS_SOURCE_DIR%" == "%CD%\" ( cd %REACTOS_OUTPUT_PATH% ) +if "%VS_SOLUTION%" == "1" ( + + if exist build.ninja ( + echo. && echo Error: This directory has already been configured for ninja. + echo An output folder configured for ninja can't be reconfigured for VSSolution. + echo Use an empty folder or delete the contents of this folder, then try again. + goto quit + ) +) else if exist REACTOS.sln ( + echo. && echo Error: This directory has already been configured for Visual Studio. + echo An output folder configured for VSSolution can't be reconfigured for ninja. + echo Use an empty folder or delete the contents of this folder, then try again. && echo. + goto quit +) + if "%NEW_STYLE_BUILD%"=="0" ( if not exist host-tools ( @@ -250,11 +296,27 @@ if "%NEW_STYLE_BUILD%"=="0" ( cd.. ) -echo Configure script complete^^! Execute appropriate build commands (ex: ninja, make, nmake, etc...). -endlocal -exit /b +if %ERRORLEVEL% NEQ 0 ( + goto quit +) + +if "%CD_SAME_AS_SOURCE%" == "1" ( + set ENDV= from %REACTOS_OUTPUT_PATH% +) + +if "%VS_SOLUTION%" == "1" ( + set ENDV= You can now use msbuild or open REACTOS.sln%ENDV%. +) else ( + set ENDV= Execute appropriate build commands ^(ex: ninja, make, nmake, etc...^)%ENDV% +) + +echo. && echo Configure script complete^^!%ENDV% + +goto quit :cmake_notfound echo Unable to find cmake, if it is installed, check your PATH variable. + +:quit endlocal exit /b