diff --git a/build/tools/msvs/findvs.bat b/build/tools/msvs/findvs.bat new file mode 100644 index 000000000000..7234f95302de --- /dev/null +++ b/build/tools/msvs/findvs.bat @@ -0,0 +1,54 @@ +@echo off + +rem This is used to set up the VS2017 and later (hopefully) environment. + +rem Called with two paramaters, the inclusive low and the exclusisve high. +if "%1" == "" goto ERR_NOPARM +if "%2" == "" goto ERR_NOPARM + +rem If not running from official build, remember where we are. + +if "%curr_dir%" == "" ( + set curr_dir=%cd% +) + +@echo Checking if vswhere in path +vswhere 1>nul + +if errorlevel 9009 ( +@echo "vswhere not found, trying C:\Program Files (x86)\Microsoft Visual Studio\Installer" +set "PATH=C:\Program Files (x86)\Microsoft Visual Studio\Installer;%PATH%" +) + +vswhere 1>nul +if errorlevel 9009 ( +@echo "vswhere not found" +goto ERR_EXIT +) + +for /f "usebackq tokens=*" %%i in (`vswhere -latest -version "[%1,%2)" -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do ( + set InstallDir=%%i +) + +if "%InstallDir%" == "" ( + @echo Install directory not found + goto ERR_EXIT +) + +if NOT exist "%InstallDir%\Common7\Tools\vsdevcmd.bat" ( + @echo Can't find an vsdevcmd.bat + goto ERR_EXIT +) + +call "%InstallDir%"\Common7\Tools\vsdevcmd.bat + +rem Go back to where we were before vsdevcmd changed things. +cd %curr_dir% + +goto end + +:ERR_NOPARM +@echo Need to specifiy version min/max range, eg.: 15.0 16.0 +:ERR_EXIT +exit /b 1 +:end diff --git a/build/tools/msvs/officialbuild.bat b/build/tools/msvs/officialbuild.bat index 4771bf9664b2..aca9161920a5 100755 --- a/build/tools/msvs/officialbuild.bat +++ b/build/tools/msvs/officialbuild.bat @@ -1,4 +1,6 @@ -ECHO ON +@echo off + +rem SetLocal EnableDelayedExpansion if "%1" == "" goto ERR_NOPARM @@ -22,11 +24,20 @@ set compvers="Unknown" if "%1" == "vc141" ( @echo Building for vc141 / vs2017 - @echo This will only work if the environment varialbe VS150COMNTOOLS is set - @echo or a VS2017 command prompt is used. set comp=141 set compvers=vc141 - call "%VS150COMNTOOLS%VsDevCmd.bat" + + if NOT "%VS150COMNTOOLS%" == "" ( + call "%VS150COMNTOOLS%VsDevCmd.bat" + ) + if "%VS150COMNTOOLS%" == "" ( + call %curr_dir%\findvs 15.0 16.0 + + if errorlevel 1 ( + @echo vswhere.exe must be in your path or a VS2017 developer command prompt must be used. + goto end + ) + ) ) if "%1" == "vc140" ( @echo Building for vc140 / vs2015