From 8705247eebfdf24f7da7e61592e080f80b35af53 Mon Sep 17 00:00:00 2001 From: Shivam Mathur Date: Sat, 25 May 2024 11:51:52 +0000 Subject: [PATCH] Add support for toolset --- bin/phpsdk_setshell.bat | 23 ++++++++++++++++++----- phpsdk-starter.bat | 3 ++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/bin/phpsdk_setshell.bat b/bin/phpsdk_setshell.bat index f651a4e..8c41734 100644 --- a/bin/phpsdk_setshell.bat +++ b/bin/phpsdk_setshell.bat @@ -55,6 +55,9 @@ if "%PHP_SDK_ARCH%"=="" ( goto out_error ) +set TOOLSET= +if NOT "%3"=="" SET TOOLSET=%3 + rem check OS arch rem todo: allow user choose host sdk arch (i.e. x64 target can be compiled at x64(native) or x86(cross)) 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% ( if /i "%PHP_SDK_OS_ARCH%"=="arm64" ( set APPEND=ARM64 ) - 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 ( + set VS_VERSION_ARGS="-latest" + if "%TOOLSET%"=="" set VS_VERSION_ARGS=-version !PHP_SDK_VS_RANGE! + 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 ( set PHP_SDK_VC_DIR=%%b\VC ) if not exist "!PHP_SDK_VC_DIR!" ( - 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 ( + 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 ( set PHP_SDK_VC_DIR=%%b\VC ) if not exist "!PHP_SDK_VC_DIR!" ( rem check for a preview release - 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 ( + 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 ( set PHP_SDK_VC_DIR=%%b\VC ) if not exist "!PHP_SDK_VC_DIR!" ( @@ -199,9 +204,17 @@ if "%HOST_ARCH_NAME%"=="%TARGET_ARCH_NAME%" ( set VCVARSALL_ARCH_NAME=%HOST_ARCH_NAME%_%TARGET_ARCH_NAME% ) if 15 gtr %PHP_SDK_VS_NUM% ( - set PHP_SDK_VS_SHELL_CMD="!PHP_SDK_VC_DIR!\vcvarsall.bat" !VCVARSALL_ARCH_NAME! + if NOT "%TOOLSET%"=="" ( + set PHP_SDK_VS_SHELL_CMD="!PHP_SDK_VC_DIR!\vcvarsall.bat" !VCVARSALL_ARCH_NAME! -vcvars_ver=%TOOLSET% + ) else ( + set PHP_SDK_VS_SHELL_CMD="!PHP_SDK_VC_DIR!\vcvarsall.bat" !VCVARSALL_ARCH_NAME! + ) ) else ( - set PHP_SDK_VS_SHELL_CMD="!PHP_SDK_VC_DIR!\Auxiliary\Build\vcvarsall.bat" !VCVARSALL_ARCH_NAME! + if NOT "%TOOLSET%"=="" ( + set PHP_SDK_VS_SHELL_CMD="!PHP_SDK_VC_DIR!\Auxiliary\Build\vcvarsall.bat" !VCVARSALL_ARCH_NAME! -vcvars_ver=%TOOLSET% + ) else ( + set PHP_SDK_VS_SHELL_CMD="!PHP_SDK_VC_DIR!\Auxiliary\Build\vcvarsall.bat" !VCVARSALL_ARCH_NAME! + ) ) set VCVARSALL_ARCH_NAME= diff --git a/phpsdk-starter.bat b/phpsdk-starter.bat index cc7a58d..618f1f4 100644 --- a/phpsdk-starter.bat +++ b/phpsdk-starter.bat @@ -14,6 +14,7 @@ set PHP_SDK_ROOT_PATH=%PHP_SDK_ROOT_PATH:~0,-1% if /i "%1" equ "-h" goto help if /i "%1" equ "-c" set CRT=%2 & shift if /i "%1" equ "-a" set ARCH=%2 & shift +if /i "%1" equ "-s" set TOOLSET=%2 & shift if /i "%1" equ "-t" set TASK=%2 & shift if /i "%1" equ "--task-args" set TASK_ARGS=%2 & shift shift @@ -37,7 +38,7 @@ set PHP_SDK_RUN_FROM_ROOT=1 title PHP SDK %CRT% %ARCH% -call %PHP_SDK_ROOT_PATH%\bin\phpsdk_setshell.bat %CRT% %ARCH% +call %PHP_SDK_ROOT_PATH%\bin\phpsdk_setshell.bat %CRT% %ARCH% %TOOLSET% set PHP_SDK_RUN_FROM_ROOT= set CRT=