diff --git a/win/build-deps.cmd b/win/build-deps.cmd index 8b7b4f9226..a6671f8d3f 100644 --- a/win/build-deps.cmd +++ b/win/build-deps.cmd @@ -526,8 +526,8 @@ pushd %BUILD_DIR% :: cache always e.g. when we've had new changes in the repository. IF %BUILD_TYPE%==Rebuild IF EXIST CMakeCache.txt. del CMakeCache.txt -IF DEFINED VS_TOOLSET ( - cmake .. -G %GENERATOR% -A %VS_PLATFORM% -T %VS_TOOLSET% %* +IF NOT "%VS_TOOLSET_HOST%"="" ( + cmake .. -G %GENERATOR% -A %VS_PLATFORM% -T %VS_TOOLSET_HOST% %* ) ELSE ( cmake .. -G %GENERATOR% -A %VS_PLATFORM% %* ) diff --git a/win/run-cmake.bat b/win/run-cmake.bat index 4a1d2cddf4..31b9a27aa9 100755 --- a/win/run-cmake.bat +++ b/win/run-cmake.bat @@ -131,8 +131,8 @@ set CMAKELISTS_DIR=..\cmake if not (%1)==() if exist CMakeCache.txt. del /Q CMakeCache.txt call cecho.cmd 0 13 "Running CMake for %PROJECT_NAME%." -IF DEFINED VS_TOOLSET ( - cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -A %VS_PLATFORM% -T %VS_TOOLSET% -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%" -DBoost_NO_BOOST_CMAKE=On %ARGUMENTS% +IF NOT "%VS_TOOLSET_HOST%"=="" ( + cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -A %VS_PLATFORM% -T %VS_TOOLSET_HOST% -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%" -DBoost_NO_BOOST_CMAKE=On %ARGUMENTS% ) ELSE ( cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% -A %VS_PLATFORM% -DCMAKE_INSTALL_PREFIX="%CMAKE_INSTALL_PREFIX%" -DBoost_NO_BOOST_CMAKE=On %ARGUMENTS% ) diff --git a/win/vs-cfg.cmd b/win/vs-cfg.cmd index 50da08b081..19b71a54b2 100644 --- a/win/vs-cfg.cmd +++ b/win/vs-cfg.cmd @@ -54,10 +54,10 @@ if not "!GEN_SHORTHAND!"=="" if !GEN_SHORTHAND!==!GENERATOR! goto :GeneratorShor set "VS_PLATFORM=Win32" :: use the command prompt target platform, at least initially -if %VSCMD_ARG_TGT_ARCH%==x86 set "VS_PLATFORM=Win32" -if %VSCMD_ARG_TGT_ARCH%==x64 set "VS_PLATFORM=x64" -if %VSCMD_ARG_TGT_ARCH%==arm set "VS_PLATFORM=ARM" -if %VSCMD_ARG_TGT_ARCH%==arm64 set "VS_PLATFORM=ARM64" +if "%VSCMD_ARG_TGT_ARCH%"==x86 set "VS_PLATFORM=Win32" +if "%VSCMD_ARG_TGT_ARCH%"==x64 set "VS_PLATFORM=x64" +if "%VSCMD_ARG_TGT_ARCH%"==arm set "VS_PLATFORM=ARM" +if "%VSCMD_ARG_TGT_ARCH%"==arm64 set "VS_PLATFORM=ARM64" :: "echo if" trick from http://stackoverflow.com/a/8758579 echo(!GEN_SHORTHAND! | findstr /c:"-x86" >nul && ( set "VS_PLATFORM=Win32" ) @@ -160,15 +160,24 @@ IF %VS_VER%==2019 ( set "VC_VER=14.2" ) set BOOST_BOOTSTRAP_VER=vc%VC_VER% set BOOST_BOOTSTRAP_VER=%BOOST_BOOTSTRAP_VER:.=% +set VS_TOOLSET_HOST= + :: determine the toolset and winapi for Boost b2 +:: optionally use 64bit toolset to work around memory errors when linking IF DEFINED VS_TOOLSET ( set BOOST_TOOLSET=msvc-%BOOST_TOOLSET% if "!VS_TOOLSET:~-3!"=="_xp" ( set BOOST_WIN_API=define=BOOST_USE_WINAPI_VERSION=0x0501 - ) + ) + IF NOT "%VS_HOST%"=="" ( + set VS_TOOLSET_HOST=%VS_TOOLSET%,host=%VS_HOST% + ) ) ELSE ( set BOOST_TOOLSET=msvc-%VC_VER% set BOOST_WIN_API= + IF NOT "%VS_HOST%"=="" ( + set VS_TOOLSET_HOST=host=%VS_HOST% + ) ) IF %VS_PLATFORM%==Win32 (