@@ -55,6 +55,9 @@ if "%PHP_SDK_ARCH%"=="" (
55
55
goto out_error
56
56
)
57
57
58
+ set TOOLSET =
59
+ if NOT " %3 " == " " SET TOOLSET = %3
60
+
58
61
rem check OS arch
59
62
rem todo: allow user choose host sdk arch (i.e. x64 target can be compiled at x64(native) or x86(cross))
60
63
for /f " usebackq tokens=1*" %%i in (`wmic cpu get Architecture /value /format:table ^ | findstr /r " [1234567890][1234567890]*" `) do (
@@ -119,16 +122,18 @@ if 15 gtr %PHP_SDK_VS_NUM% (
119
122
if /i " %PHP_SDK_OS_ARCH% " == " arm64" (
120
123
set APPEND = ARM64
121
124
)
122
- for /f " tokens=1* delims=: " %%a in ('%~dp0 \vswhere -nologo -version !PHP_SDK_VS_RANGE! -requires Microsoft.VisualStudio.Component.VC.Tools.!APPEND! -property installationPath -format text') do (
125
+ set VS_VERSION_ARGS = " -latest"
126
+ if " %TOOLSET% " == " " set VS_VERSION_ARGS = -version !PHP_SDK_VS_RANGE!
127
+ for /f " tokens=1* delims=: " %%a in ('%~dp0 \vswhere -nologo !VS_VERSION_ARGS! -requires Microsoft.VisualStudio.Component.VC.Tools.!APPEND! -property installationPath -format text') do (
123
128
set PHP_SDK_VC_DIR = %%b \VC
124
129
)
125
130
if not exist " !PHP_SDK_VC_DIR! " (
126
- for /f " tokens=1* delims=: " %%a in ('%~dp0 \vswhere -nologo -version !PHP_SDK_VS_RANGE ! -products Microsoft.VisualStudio.Product.BuildTools -requires Microsoft.VisualStudio.Component.VC.Tools.!APPEND! -property installationPath -format text') do (
131
+ for /f " tokens=1* delims=: " %%a in ('%~dp0 \vswhere -nologo !VS_VERSION_ARGS ! -products Microsoft.VisualStudio.Product.BuildTools -requires Microsoft.VisualStudio.Component.VC.Tools.!APPEND! -property installationPath -format text') do (
127
132
set PHP_SDK_VC_DIR = %%b \VC
128
133
)
129
134
if not exist " !PHP_SDK_VC_DIR! " (
130
135
rem check for a preview release
131
- for /f " tokens=1* delims=: " %%a in ('%~dp0 \vswhere -nologo -version !PHP_SDK_VS_RANGE ! -prerelease -requires Microsoft.VisualStudio.Component.VC.Tools.!APPEND! -property installationPath -format text') do (
136
+ for /f " tokens=1* delims=: " %%a in ('%~dp0 \vswhere -nologo !VS_VERSION_ARGS ! -prerelease -requires Microsoft.VisualStudio.Component.VC.Tools.!APPEND! -property installationPath -format text') do (
132
137
set PHP_SDK_VC_DIR = %%b \VC
133
138
)
134
139
if not exist " !PHP_SDK_VC_DIR! " (
@@ -199,9 +204,17 @@ if "%HOST_ARCH_NAME%"=="%TARGET_ARCH_NAME%" (
199
204
set VCVARSALL_ARCH_NAME = %HOST_ARCH_NAME% _%TARGET_ARCH_NAME%
200
205
)
201
206
if 15 gtr %PHP_SDK_VS_NUM% (
202
- set PHP_SDK_VS_SHELL_CMD = " !PHP_SDK_VC_DIR! \vcvarsall.bat" !VCVARSALL_ARCH_NAME!
207
+ if NOT " %TOOLSET% " == " " (
208
+ set PHP_SDK_VS_SHELL_CMD = " !PHP_SDK_VC_DIR! \vcvarsall.bat" !VCVARSALL_ARCH_NAME! -vcvars_ver=%TOOLSET%
209
+ ) else (
210
+ set PHP_SDK_VS_SHELL_CMD = " !PHP_SDK_VC_DIR! \vcvarsall.bat" !VCVARSALL_ARCH_NAME!
211
+ )
203
212
) else (
204
- set PHP_SDK_VS_SHELL_CMD = " !PHP_SDK_VC_DIR! \Auxiliary\Build\vcvarsall.bat" !VCVARSALL_ARCH_NAME!
213
+ if NOT " %TOOLSET% " == " " (
214
+ set PHP_SDK_VS_SHELL_CMD = " !PHP_SDK_VC_DIR! \Auxiliary\Build\vcvarsall.bat" !VCVARSALL_ARCH_NAME! -vcvars_ver=%TOOLSET%
215
+ ) else (
216
+ set PHP_SDK_VS_SHELL_CMD = " !PHP_SDK_VC_DIR! \Auxiliary\Build\vcvarsall.bat" !VCVARSALL_ARCH_NAME!
217
+ )
205
218
)
206
219
set VCVARSALL_ARCH_NAME =
207
220
0 commit comments