mirror of
https://github.com/ruby/ruby.git
synced 2026-11-08 01:20:26 +08:00
64 lines
1.9 KiB
Batchfile
Executable File
64 lines
1.9 KiB
Batchfile
Executable File
@setlocal EnableExtensions DisableDelayedExpansion || exit /b -1
|
|
::- do not `echo off` that affects the called batch files
|
|
|
|
::- check for vswhere
|
|
@set vswhere=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe
|
|
@if not exist "%vswhere%" (
|
|
echo 1>&2 vswhere.exe not found
|
|
exit /b 1
|
|
)
|
|
|
|
::- find the latest build tool and its setup batch file.
|
|
@set VSDEVCMD=
|
|
@set VSDEV_ARGS=
|
|
@set where_opt=
|
|
@set arch=
|
|
:argloop
|
|
@(set "arg=%1") & if defined arg (shift) else (goto :argend)
|
|
@if "%arg%" == "-prerelease" (
|
|
set where_opt=-prerelease
|
|
goto :argloop
|
|
)
|
|
@if /i "%arg%" == "-arch" (
|
|
set "arch=%1"
|
|
shift
|
|
goto :argloop
|
|
)
|
|
@if /i "%arg:~0,6%" == "-arch=" (
|
|
set "arch=%arg:~6%"
|
|
goto :argloop
|
|
)
|
|
::- cmd.exe splits arguments on `=`, so `-vcvars_ver=14.x` arrives
|
|
::- as two tokens; reassemble them for `vsdevcmd.bat`.
|
|
@if /i "%arg%" == "-vcvars_ver" (
|
|
set "VSDEV_ARGS=%VSDEV_ARGS% -vcvars_ver=%1"
|
|
shift
|
|
goto :argloop
|
|
)
|
|
|
|
@set "VSDEV_ARGS=%VSDEV_ARGS% %arg%"
|
|
@goto :argloop
|
|
:argend
|
|
@if defined VSDEV_ARGS set "VSDEV_ARGS=%VSDEV_ARGS:~1%"
|
|
|
|
@for /f "delims=" %%I in ('"%vswhere%" -products * -latest -property installationPath %where_opt%') do @(
|
|
set "VSDEVCMD=%%I\Common7\Tools\VsDevCmd.bat"
|
|
)
|
|
@if not defined VSDEVCMD (
|
|
echo 1>&2 Visual Studio not found
|
|
exit /b 1
|
|
)
|
|
|
|
::- default to the current processor.
|
|
@set "host_arch=%PROCESSOR_ARCHITECTURE%"
|
|
@if not defined arch set "arch=%PROCESSOR_ARCHITECTURE%"
|
|
::- `vsdevcmd.bat` requires arch names to be lowercase
|
|
@for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do @(
|
|
call set "arch=%%arch:%%i=%%i%%"
|
|
call set "host_arch=%%host_arch:%%i=%%i%%"
|
|
)
|
|
@if "%arch%" == "x86_64" set arch=amd64
|
|
|
|
::- chain to `vsdevcmd.bat`
|
|
@(endlocal && "%VSDEVCMD%" -arch=%arch% -host_arch=%host_arch% %VSDEV_ARGS%)
|