From 903729159e3b53beb309429c15875c8f2822f5da Mon Sep 17 00:00:00 2001 From: TheGoddessInari Date: Tue, 26 Mar 2019 11:05:06 -0700 Subject: [PATCH] Rework mach.bat to support VS2019 and user-supplied environments. As a bonus, use setlocal to avoid environment pollution. --- mach.bat | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/mach.bat b/mach.bat index a270b583801..836bbf5e63e 100644 --- a/mach.bat +++ b/mach.bat @@ -1,5 +1,11 @@ @echo off +setlocal + +if EXIST "%VCINSTALLDIR%" ( + GOTO mach +) + pushd . IF EXIST "%ProgramFiles(x86)%" ( @@ -8,37 +14,52 @@ IF EXIST "%ProgramFiles(x86)%" ( set "ProgramFiles32=%ProgramFiles%" ) -set VC14VARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat -IF EXIST "%VC14VARS%" ( - set "VS_VCVARS=%VC14VARS%" -) ELSE ( +for %%v in (2019 2017) do ( for %%e in (Enterprise Professional Community BuildTools) do ( - IF EXIST "%ProgramFiles32%\Microsoft Visual Studio\2017\%%e\VC\Auxiliary\Build\vcvarsall.bat" ( - set "VS_VCVARS=%ProgramFiles32%\Microsoft Visual Studio\2017\%%e\VC\Auxiliary\Build\vcvarsall.bat" + IF EXIST "%ProgramFiles32%\Microsoft Visual Studio\%%v\%%e\VC\Auxiliary\Build\vcvarsall.bat" ( + set "VS_VCVARS=%ProgramFiles32%\Microsoft Visual Studio\%%v\%%e\VC\Auxiliary\Build\vcvarsall.bat" + GOTO vcvars ) ) ) +set VC14VARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat +IF EXIST "%VC14VARS%" ( + set "VS_VCVARS=%VC14VARS%" +) + +:vcvars IF EXIST "%VS_VCVARS%" ( IF NOT DEFINED Platform ( IF EXIST "%ProgramFiles(x86)%" ( call "%VS_VCVARS%" x64 ) ELSE ( ECHO 32-bit Windows is currently unsupported. - EXIT /B 1 + GOTO bad_exit ) ) ) ELSE ( - ECHO Visual Studio 2015 or 2017 is not installed. - ECHO Download and install Visual Studio 2015 or 2017 from https://www.visualstudio.com/ - EXIT /B 1 + ECHO Visual Studio 2015, 2017, or 2019 is not installed. + ECHO Download and install Visual Studio from https://www.visualstudio.com/ + GOTO bad_exit ) popd +:mach where /Q py.exe IF %ERRORLEVEL% NEQ 0 ( python mach %* ) ELSE ( py -2 mach %* ) + +GOTO exit + +:bad_exit +endlocal +EXIT /B 1 + +:exit +endlocal +exit /B