[Bf-blender-cvs] [c9db7ceff25] master: make.bat: Add support for building with ninja.
Ray Molenkamp
noreply at git.blender.org
Sat May 26 05:46:49 CEST 2018
Commit: c9db7ceff2546e0fc2967bafa279cf352d30c510
Author: Ray Molenkamp
Date: Fri May 25 21:46:42 2018 -0600
Branches: master
https://developer.blender.org/rBc9db7ceff2546e0fc2967bafa279cf352d30c510
make.bat: Add support for building with ninja.
ninja is an alternative to msbuild designed for fast rebuilds. However there is no IDE support, builds only from the command line.
Comparison between msbuild and ninja for a full build, build time in seconds.
Full Clean Build
msbuild 867.5
Ninja 801.2
Difference -66.3 (-7.6%)
Minor Change
msbuild 43.0
Ninja 14.9
Difference -28.1 (-64.4%)
No Changes
msbuild 23.0
Ninja 6.1
Difference -16.9 (-73.5%)
===================================================================
M build_files/cmake/platform/platform_win32.cmake
M build_files/windows/build_msbuild.cmd
A build_files/windows/build_ninja.cmd
M build_files/windows/configure_msbuild.cmd
A build_files/windows/configure_ninja.cmd
M make.bat
===================================================================
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index ef3ef7b6517..3520ac9c075 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -119,6 +119,8 @@ set(CMAKE_INSTALL_OPENMP_LIBRARIES ${WITH_OPENMP})
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
include(InstallRequiredSystemLibraries)
+remove_cc_flag("/MDd" "/MD")
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP")
diff --git a/build_files/windows/build_msbuild.cmd b/build_files/windows/build_msbuild.cmd
index 37bd9abfe71..49958ed67c5 100644
--- a/build_files/windows/build_msbuild.cmd
+++ b/build_files/windows/build_msbuild.cmd
@@ -1,5 +1,5 @@
if "%NOBUILD%"=="1" goto EOF
-
+echo %TIME% > buildtime.txt
msbuild ^
%BUILD_DIR%\Blender.sln ^
/target:build ^
@@ -22,5 +22,5 @@ msbuild ^
echo Error during install phase
exit /b 1
)
-
+echo %TIME% >>buildtime.txt
:EOF
\ No newline at end of file
diff --git a/build_files/windows/build_ninja.cmd b/build_files/windows/build_ninja.cmd
new file mode 100644
index 00000000000..f6b266e206d
--- /dev/null
+++ b/build_files/windows/build_ninja.cmd
@@ -0,0 +1,16 @@
+if "%NOBUILD%"=="1" goto EOF
+set HAS_ERROR=
+cd %BUILD_DIR%
+echo %TIME% > buildtime.txt
+ninja install
+if errorlevel 1 (
+ set HAS_ERROR=1
+ )
+echo %TIME% >>buildtime.txt
+cd %BLENDER_DIR%
+
+if "%HAS_ERROR%" == "1" (
+ echo Error during build, see %BUILD_DIR%\Build.log for details
+ exit /b 1
+)
+:EOF
\ No newline at end of file
diff --git a/build_files/windows/configure_msbuild.cmd b/build_files/windows/configure_msbuild.cmd
index 28884ce2fd7..135b7933ab2 100644
--- a/build_files/windows/configure_msbuild.cmd
+++ b/build_files/windows/configure_msbuild.cmd
@@ -42,6 +42,7 @@ if "%MUST_CONFIGURE%"=="1" (
echo call "%VCVARS%" %BUILD_ARCH% > %BUILD_DIR%\rebuild.cmd
echo "%CMAKE%" . >> %BUILD_DIR%\rebuild.cmd
+echo echo %%TIME%% ^> buildtime.txt >> %BUILD_DIR%\rebuild.cmd
echo msbuild ^
%BUILD_DIR%\Blender.sln ^
/target:build ^
@@ -55,3 +56,4 @@ echo msbuild ^
/property:Configuration=%BUILD_TYPE% ^
/verbosity:minimal ^
/p:platform=%MSBUILD_PLATFORM% >> %BUILD_DIR%\rebuild.cmd
+echo echo %%TIME%% ^>^> buildtime.txt >> %BUILD_DIR%\rebuild.cmd
\ No newline at end of file
diff --git a/build_files/windows/configure_ninja.cmd b/build_files/windows/configure_ninja.cmd
new file mode 100644
index 00000000000..13797543bcc
--- /dev/null
+++ b/build_files/windows/configure_ninja.cmd
@@ -0,0 +1,35 @@
+set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Ninja" %TESTS_CMAKE_ARGS% -DCMAKE_BUILD_TYPE=%BUILD_TYPE%
+:DetectionComplete
+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%\Blender.sln 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 call "%VCVARS%" %BUILD_ARCH% > %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
\ No newline at end of file
diff --git a/make.bat b/make.bat
index ee65f4ad6c1..577f820438b 100644
--- a/make.bat
+++ b/make.bat
@@ -52,10 +52,18 @@ if errorlevel 1 goto EOF
call "%BLENDER_DIR%\build_files\windows\check_submodules.cmd"
if errorlevel 1 goto EOF
-call "%BLENDER_DIR%\build_files\windows\configure_msbuild.cmd"
-if errorlevel 1 goto EOF
+if "%BUILD_WITH_NINJA%" == "" (
+ call "%BLENDER_DIR%\build_files\windows\configure_msbuild.cmd"
+ if errorlevel 1 goto EOF
-call "%BLENDER_DIR%\build_files\windows\build_msbuild.cmd"
-if errorlevel 1 goto EOF
+ call "%BLENDER_DIR%\build_files\windows\build_msbuild.cmd"
+ if errorlevel 1 goto EOF
+) else (
+ call "%BLENDER_DIR%\build_files\windows\configure_ninja.cmd"
+ if errorlevel 1 goto EOF
+
+ call "%BLENDER_DIR%\build_files\windows\build_ninja.cmd"
+ if errorlevel 1 goto EOF
+)
:EOF
\ No newline at end of file
More information about the Bf-blender-cvs
mailing list