[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