Merge branch 'master' into blender2.8
[blender.git] / build_files / windows / detect_msvc2017.cmd
1 if NOT "%verbose%" == "" (
2         echo Detecting msvc 2017
3 )
4 set BUILD_VS_VER=15
5 set ProgramFilesX86=%ProgramFiles(x86)%
6 if not exist "%ProgramFilesX86%" set ProgramFilesX86=%ProgramFiles%
7
8 set vs_where=%ProgramFilesX86%\Microsoft Visual Studio\Installer\vswhere.exe
9 if not exist "%vs_where%" (
10         if NOT "%verbose%" == "" (
11                 echo Visual Studio 2017 ^(15.2 or newer^) is not detected
12                 goto FAIL
13         )
14 )
15 for /f "usebackq tokens=1* delims=: " %%i in (`"%vs_where%" -latest %VSWHERE_ARGS% -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64`) do (
16         if /i "%%i"=="installationPath" set VS_InstallDir=%%j
17 )
18
19 if "%VS_InstallDir%"=="" (
20         if NOT "%verbose%" == "" (
21                 echo Visual Studio is detected but the "Desktop development with C++" workload has not been instlled
22                 goto FAIL
23         )
24 )
25
26 set VCVARS=%VS_InstallDir%\VC\Auxiliary\Build\vcvarsall.bat
27 if exist "%VCVARS%" (
28         call "%VCVARS%" %BUILD_ARCH%
29 ) else (
30         if NOT "%verbose%" == "" (
31                 echo "%VCVARS%" not found
32         )
33         goto FAIL
34 )
35
36 rem try msbuild
37 msbuild /version > NUL 
38 if errorlevel 1 (
39         if NOT "%verbose%" == "" (
40                 echo Visual Studio %BUILD_VS_YEAR% msbuild not found
41         )
42         goto FAIL
43 )
44
45 if NOT "%verbose%" == "" (
46                 echo Visual Studio %BUILD_VS_YEAR% msbuild found 
47 )
48
49 REM try the c++ compiler
50 cl 2> NUL 1>&2
51 if errorlevel 1 (
52         if NOT "%verbose%" == "" (
53                 echo Visual Studio %BUILD_VS_YEAR% C/C++ Compiler not found
54         )
55         goto FAIL
56 )
57
58 if NOT "%verbose%" == "" (
59                 echo Visual Studio %BUILD_VS_YEAR% C/C++ Compiler found
60 )
61
62 if NOT "%verbose%" == "" (
63         echo Visual Studio 2017 is detected successfully  
64 )
65 goto EOF
66
67 :FAIL
68 exit /b 1 
69
70 :EOF