diff options
Diffstat (limited to 'tools/buildsteps/windows/vswhere.bat')
-rw-r--r-- | tools/buildsteps/windows/vswhere.bat | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tools/buildsteps/windows/vswhere.bat b/tools/buildsteps/windows/vswhere.bat new file mode 100644 index 0000000..b8c60b9 --- /dev/null +++ b/tools/buildsteps/windows/vswhere.bat @@ -0,0 +1,86 @@ +@ECHO OFF + +IF "%1"=="" ( + ECHO ERROR! vswhere.bat: architecture not specified + EXIT /B 1 +) + +REM running vcvars more than once can cause problems; exit early if using the same configuration, error if different +IF "%VSWHERE_SET%"=="%*" ( + ECHO vswhere.bat: VC vars already configured for %VSWHERE_SET% + GOTO :EOF +) +IF "%VSWHERE_SET%" NEQ "" ( + ECHO ERROR! vswhere.bat: VC vars are configured for %VSWHERE_SET% + EXIT /B 1 +) + +REM Trick to make the path absolute +PUSHD %~dp0\..\..\..\project\BuildDependencies +SET builddeps=%CD% +POPD + +SET arch=%1 +SET vcarch=amd64 +SET vcstore=%2 +SET vcvars=no +SET sdkver= + +SET vsver= +SET toolsdir=%arch% + +IF "%arch%" NEQ "x64" ( + SET vcarch=%vcarch%_%arch% +) + +IF "%arch%"=="x86" ( + SET toolsdir=win32 +) + +IF "%vcstore%"=="store" ( + SET sdkver=10.0.18362.0 + SET toolsdir="win10-%toolsdir%" +) + +SET vswhere="%builddeps%\%toolsdir%\tools\vswhere\vswhere.exe" + +FOR /f "usebackq tokens=1* delims=" %%i in (`%vswhere% -latest -property installationPath`) do ( + IF EXIST "%%i\VC\Auxiliary\Build\vcvarsall.bat" ( + SET vcvars="%%i\VC\Auxiliary\Build\vcvarsall.bat" + SET vsver=15 2017 + ECHO %%i | findstr "2019" >NUL 2>NUL + IF NOT ERRORLEVEL 1 SET vsver=16 2019 + ECHO %%i | findstr "2022" >NUL 2>NUL + IF NOT ERRORLEVEL 1 SET vsver=17 2022 + ) +) + +IF %vcvars%==no ( + FOR /f "usebackq tokens=1* delims=" %%i in (`%vswhere% -legacy -property installationPath`) do ( + ECHO %%i | findstr "14" >NUL 2>NUL + IF NOT ERRORLEVEL 1 ( + IF EXIST "%%i\VC\vcvarsall.bat" ( + SET vcvars="%%i\VC\vcvarsall.bat" + SET vsver=14 2015 + ) + ) + ) +) + +IF %vcvars%==no ( + ECHO "ERROR! Could not find vcvarsall.bat" + EXIT /B 1 +) + +REM vcvars changes the cwd so we need to store it and restore it +PUSHD %~dp0 +CALL %vcvars% %vcarch% %vcstore% %sdkver% +POPD + +IF ERRORLEVEL 1 ( + ECHO "ERROR! something went wrong when calling" + ECHO %vcvars% %vcarch% %vcstore% %sdkver% + EXIT /B 1 +) + +SET VSWHERE_SET=%* |