@@ -55,6 +55,9 @@ if "%PHP_SDK_ARCH%"=="" (
5555 goto out_error
5656)
5757
58+ set TOOLSET =
59+ if NOT " %3 " == " " SET TOOLSET = %3
60+
5861rem check OS arch
5962rem todo: allow user choose host sdk arch (i.e. x64 target can be compiled at x64(native) or x86(cross))
6063for /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% (
119122 if /i " %PHP_SDK_OS_ARCH% " == " arm64" (
120123 set APPEND = ARM64
121124 )
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 (
123128 set PHP_SDK_VC_DIR = %%b \VC
124129 )
125130 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 (
127132 set PHP_SDK_VC_DIR = %%b \VC
128133 )
129134 if not exist " !PHP_SDK_VC_DIR! " (
130135 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 (
132137 set PHP_SDK_VC_DIR = %%b \VC
133138 )
134139 if not exist " !PHP_SDK_VC_DIR! " (
@@ -199,9 +204,17 @@ if "%HOST_ARCH_NAME%"=="%TARGET_ARCH_NAME%" (
199204 set VCVARSALL_ARCH_NAME = %HOST_ARCH_NAME% _%TARGET_ARCH_NAME%
200205)
201206if 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+ )
203212) 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+ )
205218)
206219set VCVARSALL_ARCH_NAME =
207220
0 commit comments