Previously the MSVC environment was setup every time using vcvarsall.bat when you ran you ran rebuild.cmd, Generally not an issue but after many rebuilds on the same console, it grows the path environment variable beyond what is supported and building breaks. This patch adds a check to see if the environment is setup already and skips the call to vcvarsall.bat Also cleans up the double build in the msbuild's version of rebuild.cmd install.vcxproj will build all that is needed, so no need to do a regular build first.
89 lines
2.2 KiB
Batchfile
89 lines
2.2 KiB
Batchfile
ninja --version 1>NUL 2>&1
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
echo "Ninja not detected in the path"
|
|
exit /b 1
|
|
)
|
|
|
|
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Ninja" %TESTS_CMAKE_ARGS% -DCMAKE_BUILD_TYPE=%BUILD_TYPE%
|
|
|
|
if "%WITH_CLANG%" == "1" (
|
|
set LLVM_DIR=
|
|
for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LLVM\LLVM" /ve 2^>nul`) DO set LLVM_DIR=%%C
|
|
if DEFINED LLVM_DIR (
|
|
if NOT "%verbose%" == "" (
|
|
echo LLVM Detected at "%LLVM_DIR%"
|
|
)
|
|
goto DetectionComplete
|
|
)
|
|
|
|
REM Check 32 bits
|
|
for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\LLVM\LLVM" /ve 2^>nul`) DO set LLVM_DIR=%%C
|
|
if DEFINED LLVM_DIR (
|
|
if NOT "%verbose%" == "" (
|
|
echo LLVM Detected at "%LLVM_DIR%"
|
|
)
|
|
goto DetectionComplete
|
|
)
|
|
echo LLVM not found
|
|
exit /b 1
|
|
|
|
:DetectionComplete
|
|
set CC=%LLVM_DIR%\bin\clang-cl
|
|
set CXX=%LLVM_DIR%\bin\clang-cl
|
|
if "%BUILD_VS_YEAR%" == "2019" (
|
|
rem build and tested against 2019 16.2
|
|
set CFLAGS=-m64 -fmsc-version=1922
|
|
set CXXFLAGS=-m64 -fmsc-version=1922
|
|
) else (
|
|
rem build and tested against 2017 15.7
|
|
set CFLAGS=-m64 -fmsc-version=1914
|
|
set CXXFLAGS=-m64 -fmsc-version=1914
|
|
)
|
|
if "%WITH_ASAN%"=="1" (
|
|
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DWITH_COMPILER_ASAN=On
|
|
)
|
|
)
|
|
|
|
if "%WITH_ASAN%"=="1" (
|
|
if "%WITH_CLANG%" == "" (
|
|
echo ASAN is only supported with clang.
|
|
exit /b 1
|
|
)
|
|
)
|
|
|
|
if NOT "%verbose%" == "" (
|
|
echo BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS%
|
|
)
|
|
|
|
if NOT EXIST %BUILD_DIR%\nul (
|
|
mkdir %BUILD_DIR%
|
|
)
|
|
|
|
if "%MUST_CLEAN%"=="1" (
|
|
echo Cleaning %BUILD_DIR%
|
|
cd %BUILD_DIR%
|
|
%CMAKE% cmake --build . --config Clean
|
|
)
|
|
|
|
if NOT EXIST %BUILD_DIR%\build.ninja set MUST_CONFIGURE=1
|
|
if "%NOBUILD%"=="1" set MUST_CONFIGURE=1
|
|
|
|
if "%MUST_CONFIGURE%"=="1" (
|
|
cmake ^
|
|
%BUILD_CMAKE_ARGS% ^
|
|
-H%BLENDER_DIR% ^
|
|
-B%BUILD_DIR%
|
|
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
echo "Configuration Failed"
|
|
exit /b 1
|
|
)
|
|
)
|
|
|
|
echo echo off > %BUILD_DIR%\rebuild.cmd
|
|
echo if "%%VSCMD_VER%%" == "" ^( >> %BUILD_DIR%\rebuild.cmd
|
|
echo call "%VCVARS%" %BUILD_ARCH% >> %BUILD_DIR%\rebuild.cmd
|
|
echo ^) >> %BUILD_DIR%\rebuild.cmd
|
|
echo echo %%TIME%% ^> buildtime.txt >> %BUILD_DIR%\rebuild.cmd
|
|
echo ninja install >> %BUILD_DIR%\rebuild.cmd
|
|
echo echo %%TIME%% ^>^> buildtime.txt >> %BUILD_DIR%\rebuild.cmd |