build_environment: support for msvc2017 and newer cmake.
[blender.git] / build_files / build_environment / windows / build_deps.cmd
1 @echo off
2 if NOT "%1" == "" (
3         if "%1" == "2013" (
4     echo "Building for VS2013"
5     set VSVER=12.0
6     set VSVER_SHORT=12
7     set BuildDir=VS12
8     goto par2
9   )
10         if "%1" == "2015" (
11     echo "Building for VS2015"
12     set VSVER=14.0
13     set VSVER_SHORT=14
14     set BuildDir=VS14
15     goto par2
16   )
17         if "%1" == "2017" (
18     echo "Building for VS2017"
19     set VSVER=15.0
20     set VSVER_SHORT=15
21     set BuildDir=VS15
22     goto par2
23   )
24   
25 )
26 :usage
27
28 Echo Usage build_deps 2013/2015/2017 x64/x86
29 goto exit
30 :par2
31 if NOT "%2" == "" (
32         if "%2" == "x86" (
33     echo "Building for x86"
34     set HARVESTROOT=Windows_vc
35     set ARCH=86
36                 if "%1" == "2013" (
37                         set CMAKE_BUILDER=Visual Studio 12 2013
38                 )
39                 if "%1" == "2015" (
40                         set CMAKE_BUILDER=Visual Studio 14 2015
41                 )
42                 if "%1" == "2017" (
43                         set CMAKE_BUILDER=Visual Studio 15 2017
44                 )
45                 
46     goto start
47   )
48         if "%2" == "x64" (
49     echo "Building for x64"
50     set HARVESTROOT=Win64_vc
51     set ARCH=64
52                 if "%1" == "2013" (
53                         set CMAKE_BUILDER=Visual Studio 12 2013 Win64
54                 )
55                 if "%1" == "2015" (
56                         set CMAKE_BUILDER=Visual Studio 14 2015 Win64
57                 )
58                 if "%1" == "2017" (
59                         set CMAKE_BUILDER=Visual Studio 15 2017 Win64
60                 )
61                 
62     goto start
63   )
64 )
65 goto usage
66
67 :start
68 setlocal ENABLEEXTENSIONS
69 set CMAKE_DEBUG_OPTIONS=-DWITH_OPTIMIZED_DEBUG=On
70 if "%3" == "debug" set CMAKE_DEBUG_OPTIONS=-DWITH_OPTIMIZED_DEBUG=Off
71
72 set SOURCE_DIR=%~dp0\..
73 set BUILD_DIR=%cd%\build
74 set HARVEST_DIR=%BUILD_DIR%\output
75 set STAGING=%BUILD_DIR%\S
76
77 rem for python module build
78 set MSSdk=1 
79 set DISTUTILS_USE_SDK=1  
80 rem for python externals source to be shared between the various archs and compilers
81 mkdir %BUILD_DIR%\downloads\externals
82
83 REM Detect MSVC Installation
84 if DEFINED VisualStudioVersion goto msvc_detect_finally
85 set VALUE_NAME=ProductDir
86 REM Check 64 bits
87 set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%VSVER%\Setup\VC"
88 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
89 if DEFINED MSVC_VC_DIR goto msvc_detect_finally
90 REM Check 32 bits
91 set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\%VSVER%\Setup\VC"
92 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
93 if DEFINED MSVC_VC_DIR goto msvc_detect_finally
94 :msvc_detect_finally
95 if DEFINED MSVC_VC_DIR call "%MSVC_VC_DIR%\vcvarsall.bat"
96 echo on
97
98 REM Sanity Checks
99 where /Q msbuild
100 if %ERRORLEVEL% NEQ 0 (
101         echo Error: "MSBuild" command not in the PATH.
102         echo You must have MSVC installed and run this from the "Developer Command Prompt"
103         echo ^(available from Visual Studio's Start menu entry^), aborting!
104         goto EOF
105 )
106 where /Q cmake
107 if %ERRORLEVEL% NEQ 0 (
108         echo Error: "CMake" command not in the PATH.
109         echo You must have CMake installed and added to your PATH, aborting!
110         goto EOF
111 )
112
113 set StatusFile=%BUILD_DIR%\%1_%2.log
114 set path=%BUILD_DIR%\downloads\mingw\mingw64\msys\1.0\bin\;%BUILD_DIR%\downloads\nasm-2.12.01\;%path%
115 mkdir %STAGING%\%BuildDir%%ARCH%R
116 cd %Staging%\%BuildDir%%ARCH%R
117 echo %DATE% %TIME% : Start > %StatusFile%
118 cmake -G "%CMAKE_BUILDER%" %SOURCE_DIR% -DDOWNLOAD_DIR=%BUILD_DIR%/downloads -DBUILD_MODE=Release -DHARVEST_TARGET=%HARVEST_DIR%/%HARVESTROOT%%VSVER_SHORT%/
119 echo %DATE% %TIME% : Release Configuration done >> %StatusFile%
120 msbuild /m "ll.vcxproj" /p:Configuration=Release /fl /flp:logfile=BlenderDeps_llvm.log;Verbosity=normal
121 msbuild /m "BlenderDependencies.sln" /p:Configuration=Release /fl /flp:logfile=BlenderDeps.log;Verbosity=minimal  /verbosity:minimal
122 echo %DATE% %TIME% : Release Build done >> %StatusFile%
123 cmake --build . --target Harvest_Release_Results  > Harvest_Release.txt
124 echo %DATE% %TIME% : Release Harvest done >> %StatusFile%
125 cd %BUILD_DIR%
126 mkdir %STAGING%\%BuildDir%%ARCH%D
127 cd %Staging%\%BuildDir%%ARCH%D
128 cmake -G "%CMAKE_BUILDER%" %SOURCE_DIR% -DDOWNLOAD_DIR=%BUILD_DIR%/downloads -DCMAKE_BUILD_TYPE=Debug -DBUILD_MODE=Debug -DHARVEST_TARGET=%HARVEST_DIR%/%HARVESTROOT%%VSVER_SHORT%/  %CMAKE_DEBUG_OPTIONS%
129 echo %DATE% %TIME% : Debug Configuration done >> %StatusFile%
130 msbuild /m "ll.vcxproj" /p:Configuration=Debug /fl /flp:logfile=BlenderDeps_llvm.log;;Verbosity=normal 
131 msbuild /m "BlenderDependencies.sln" /p:Configuration=Debug /verbosity:n /fl /flp:logfile=BlenderDeps.log;;Verbosity=normal
132 echo %DATE% %TIME% : Debug Build done >> %StatusFile%
133 cmake --build . --target Harvest_Debug_Results> Harvest_Debug.txt
134 echo %DATE% %TIME% : Debug Harvest done >> %StatusFile%
135 cd %BUILD_DIR%
136
137 :exit
138 Echo .