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