make.bat: Add support for building with ninja.
[blender.git] / make.bat
index 8c41308eb0a48128f2e4cf7b2082e2edc71a086d..577f820438b5af535b530d749bb58b246a02f813 100644 (file)
--- a/make.bat
+++ b/make.bat
 @echo off
 REM This batch file does an out-of-source CMake build in ../build_windows
 REM This is for users who like to configure & build Blender with a single command.
-
+setlocal EnableDelayedExpansion
 setlocal ENABLEEXTENSIONS
 set BLENDER_DIR=%~dp0
-set BUILD_DIR=%BLENDER_DIR%..\build_windows
-set BUILD_TYPE=Release
-set BUILD_CMAKE_ARGS=
-
-REM Detect MSVC Installation
-if DEFINED VisualStudioVersion goto msvc_detect_finally
-set VALUE_NAME=ProductDir
-REM Check 64 bits
-set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\Setup\VC"
-for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO set MSVC_VC_DIR=%%C
-if DEFINED MSVC_VC_DIR goto msvc_detect_finally
-REM Check 32 bits
-set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VC"
-for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO set MSVC_VC_DIR=%%C
-if DEFINED MSVC_VC_DIR goto msvc_detect_finally
-:msvc_detect_finally
-if DEFINED MSVC_VC_DIR call "%MSVC_VC_DIR%\vcvarsall.bat"
-
-
-REM Sanity Checks
-where /Q msbuild
-if %ERRORLEVEL% NEQ 0 (
-       echo Error: "MSBuild" command not in the PATH.
-       echo You must have MSVC installed and run this from the "Developer Command Prompt"
-       echo ^(available from Visual Studio's Start menu entry^), aborting!
-       goto EOF
-)
-where /Q cmake
-if %ERRORLEVEL% NEQ 0 (
-       echo Error: "CMake" command not in the PATH.
-       echo You must have CMake installed and added to your PATH, aborting!
-       goto EOF
-)
-if NOT EXIST %BLENDER_DIR%..\lib\nul (
-       echo Error: Path to libraries not found "%BLENDER_DIR%..\lib\"
-       echo This is needed for building, aborting!
-       goto EOF
-)
 
+call "%BLENDER_DIR%\build_files\windows\reset_variables.cmd"
 
-:argv_loop
-if NOT "%1" == "" (
-
-       REM Help Message
-       if "%1" == "help" (
-               echo.
-               echo Convenience targets
-               echo - debug
-               echo - full
-               echo - lite
-               echo - headless
-               echo - cycles
-               echo - bpy
-               echo.
-               echo Utilities ^(not associated with building^)
-               echo - clean
-               echo - update
-               goto EOF
-       )
+call "%BLENDER_DIR%\build_files\windows\check_spaces_in_path.cmd"
+if errorlevel 1 goto EOF
 
-       REM Build Types
-       if "%1" == "debug" (
-               set BUILD_DIR=%BUILD_DIR%_debug
-               set BUILD_TYPE=Debug
-
-       REM Build Configurations
-       ) else if "%1" == "full" (
-               set BUILD_DIR=%BUILD_DIR%_full
-               set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
-                   -C"%BLENDER_DIR%\build_files\cmake\config\blender_full.cmake"
-       ) else if "%1" == "lite" (
-               set BUILD_DIR=%BUILD_DIR%_lite
-               set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
-                   -C"%BLENDER_DIR%\build_files\cmake\config\blender_lite.cmake"
-       ) else if "%1" == "cycles" (
-               set BUILD_DIR=%BUILD_DIR%_cycles
-               set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
-                   -C"%BLENDER_DIR%\build_files\cmake\config\cycles_standalone.cmake"
-       ) else if "%1" == "headless" (
-               set BUILD_DIR=%BUILD_DIR%_headless
-               set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
-                   -C"%BLENDER_DIR%\build_files\cmake\config\blender_headless.cmake"
-       ) else if "%1" == "bpy" (
-               set BUILD_DIR=%BUILD_DIR%_bpy
-               set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
-                   -C"%BLENDER_DIR%\build_files\cmake\config\bpy_module.cmake"
-
-       REM Non-Build Commands
-       ) else if "%1" == "update" (
-               svn up ../lib/*
-               git pull --rebase
-               git submodule foreach git pull --rebase origin master
-               goto EOF
-       ) else if "%1" == "clean" (
-               msbuild ^
-                       %BUILD_DIR%\Blender.sln ^
-                       /target:clean ^
-                       /property:Configuration=%BUILD_TYPE% ^
-                       /verbosity:minimal
-               if %ERRORLEVEL% NEQ 0 (
-                       echo Cleaned "%BUILD_DIR%"
-               )
-               goto EOF
-       ) else (
-               echo Command "%1" unknown, aborting!
-               goto EOF
-       )
+call "%BLENDER_DIR%\build_files\windows\parse_arguments.cmd" %*
+if errorlevel 1 goto EOF
 
-       shift /1
-       goto argv_loop
-)
+call "%BLENDER_DIR%\build_files\windows\find_dependencies.cmd"
+if errorlevel 1 goto EOF
 
-if "%PROCESSOR_ARCHITECTURE%" == "x86" (
-       set WINDOWS_ARCH=
-) else (
-       set WINDOWS_ARCH=Win64
+if "%SHOW_HELP%" == "1" (
+       call "%BLENDER_DIR%\build_files\windows\show_help.cmd"
+       goto EOF
 )
 
-set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Visual Studio 12 2013 %WINDOWS_ARCH%"
-if NOT EXIST %BUILD_DIR%\nul (
-       mkdir %BUILD_DIR%
+if "%BUILD_UPDATE%" == "1" (
+       call "%BLENDER_DIR%\build_files\windows\update_sources.cmd"
+       goto EOF
 )
 
-REM Only configure on first run
-if NOT EXIST %BUILD_DIR%\Blender.sln (
-       cmake ^
-               %BUILD_CMAKE_ARGS% ^
-               -H%BLENDER_DIR% ^
-               -B%BUILD_DIR% ^
-               %BUILD_CMAKE_ARGS%
+call "%BLENDER_DIR%\build_files\windows\detect_architecture.cmd" 
 
-       if %ERRORLEVEL% NEQ 0 (
-               echo "Configuration Failed"
+if "%BUILD_VS_YEAR%" == "" (
+       call "%BLENDER_DIR%\build_files\windows\autodetect_msvc.cmd"
+       if errorlevel 1 (
+               echo Visual Studio not found ^(try with the 'verbose' switch for more information^)
+               goto EOF
+       )
+) else (
+       call "%BLENDER_DIR%\build_files\windows\detect_msvc%BUILD_VS_YEAR%.cmd"
+       if errorlevel 1 (
+               echo Visual Studio %BUILD_VS_YEAR% not found ^(try with the 'verbose' switch for more information^)
                goto EOF
        )
 )
 
-msbuild ^
-       %BUILD_DIR%\Blender.sln ^
-       /target:build ^
-       /property:Configuration=%BUILD_TYPE% ^
-       /maxcpucount ^
-       /verbosity:minimal
+call "%BLENDER_DIR%\build_files\windows\set_build_dir.cmd" 
 
-if %ERRORLEVEL% NEQ 0 (
-       echo "Build Failed"
-       goto EOF
-)
+echo Building blender with VS%BUILD_VS_YEAR% for %BUILD_ARCH% in %BUILD_DIR%
+
+call "%BLENDER_DIR%\build_files\windows\check_libraries.cmd" 
+if errorlevel 1 goto EOF
 
-msbuild ^
-       %BUILD_DIR%\INSTALL.vcxproj ^
-       /property:Configuration=%BUILD_TYPE% ^
-       /verbosity:minimal
+call "%BLENDER_DIR%\build_files\windows\check_submodules.cmd" 
+if errorlevel 1 goto EOF
 
-echo.
-echo At any point you can optionally modify your build configuration by editing:
-echo "%BUILD_DIR%\CMakeCache.txt", then run "make" again to build with the changes applied.
-echo.
-echo Blender successfully built, run from: "%BUILD_DIR%\bin\%BUILD_TYPE%"
-echo.
+if "%BUILD_WITH_NINJA%" == "" (
+       call "%BLENDER_DIR%\build_files\windows\configure_msbuild.cmd" 
+       if errorlevel 1 goto EOF
 
-: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