mirror of
https://github.com/boostorg/build.git
synced 2026-02-13 00:12:11 +00:00
Merge pull request #192 from refack/develop
Try to detect VS2017 using vswhere
This commit is contained in:
@@ -31,9 +31,9 @@ ECHO ### Toolsets supported by this script are: borland, como, gcc,
|
||||
ECHO ### gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7, vc8,
|
||||
ECHO ### vc9, vc10, vc11, vc12, vc14, vc141
|
||||
ECHO ###
|
||||
ECHO ### If you have Visual Studio 2017 installed you will need to build from
|
||||
ECHO ### the Visual Studio Command Prompt for VS 2017 as we where unable to
|
||||
ECHO ### detect your toolset installtion.
|
||||
ECHO ### If you have Visual Studio 2017 installed you will need either update
|
||||
ECHO ### the Visual Studio 2017 installer or run from VS 2017 Command Prompt
|
||||
ECHO ### as we where unable to detect your toolset installation.
|
||||
ECHO ###
|
||||
call :Set_Error
|
||||
endlocal
|
||||
|
||||
@@ -161,6 +161,7 @@ set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0"
|
||||
set "_known_=1"
|
||||
:Skip_VC14
|
||||
if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc141_" goto Skip_VC141
|
||||
call vswhere_usability_wrapper.cmd
|
||||
if "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" (
|
||||
if NOT "_%VS150COMNTOOLS%_" == "__" (
|
||||
set "BOOST_JAM_TOOLSET_ROOT=%VS150COMNTOOLS%..\..\VC\"
|
||||
|
||||
@@ -28,10 +28,13 @@ goto :eof
|
||||
:Guess
|
||||
REM Check the variable first. This can be set manually by the user (by running the tools commmand prompt).
|
||||
call :Clear_Error
|
||||
call vswhere_usability_wrapper.cmd
|
||||
if NOT "_%VS150COMNTOOLS%_" == "__" (
|
||||
set "BOOST_JAM_TOOLSET=vc141"
|
||||
set "BOOST_JAM_TOOLSET_ROOT=%VS150COMNTOOLS%..\..\VC\"
|
||||
goto :eof)
|
||||
|
||||
:skip_vswhere
|
||||
if EXIST "%VS_ProgramFiles%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" (
|
||||
set "BOOST_JAM_TOOLSET=vc141"
|
||||
set "BOOST_JAM_TOOLSET_ROOT=%VS_ProgramFiles%\Microsoft Visual Studio\2017\Enterprise\VC\"
|
||||
|
||||
20
src/engine/vswhere_usability_wrapper.cmd
Normal file
20
src/engine/vswhere_usability_wrapper.cmd
Normal file
@@ -0,0 +1,20 @@
|
||||
:: Copyright 2017 - Refael Ackermann
|
||||
:: Distributed under MIT style license
|
||||
:: See accompanying file LICENSE at https://github.com/node4good/windows-autoconf
|
||||
:: version: 1.14.0
|
||||
|
||||
@if not defined DEBUG_HELPER @ECHO OFF
|
||||
setlocal
|
||||
set VSWHERE_REQ=-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64
|
||||
set VSWHERE_PRP=-property installationPath
|
||||
set VSWHERE_LMT=-version "[15.0,16.0)"
|
||||
SET VSWHERE_ARGS=-latest -products * %VSWHERE_REQ% %VSWHERE_PRP% %VSWHERE_LMT%
|
||||
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
|
||||
if not exist "%VSWHERE%" set "VSWHERE=%ProgramFiles%\Microsoft Visual Studio\Installer"
|
||||
if not exist "%VSWHERE%" exit /B 1
|
||||
set Path=%Path%;%VSWHERE%
|
||||
for /f "usebackq tokens=*" %%i in (`vswhere %VSWHERE_ARGS%`) do (
|
||||
endlocal
|
||||
set "VCINSTALLDIR=%%i\VC\"
|
||||
set "VS150COMNTOOLS=%%i\Common7\Tools\"
|
||||
exit /B 0)
|
||||
@@ -1250,10 +1250,40 @@ local rule default-path ( version )
|
||||
}
|
||||
else
|
||||
{
|
||||
# Check environment.
|
||||
# try to use vswhere
|
||||
local pseudo_env_VS150 ;
|
||||
if $(version) = 14.1 || $(version) = "default"
|
||||
{
|
||||
local req = "-requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64" ;
|
||||
local prop = "-property installationPath" ;
|
||||
local limit = "-version \"[15.0,16.0)\"" ;
|
||||
local root = [ os.environ "ProgramFiles(x86)" ] ;
|
||||
if ( ! $(root) )
|
||||
{
|
||||
root = [ os.environ "ProgramFiles" ] ;
|
||||
}
|
||||
local vswhere = "$(root)\\Microsoft Visual Studio\\Installer\\vswhere.exe" ;
|
||||
if ( [ path.exists $(vswhere) ] )
|
||||
{
|
||||
local vmwhere_cmd = "\"$(vswhere)\" -latest -products * $(req) $(prop) $(limit)" ;
|
||||
local shell_ret = [ SPLIT_BY_CHARACTERS [ SHELL $(vmwhere_cmd) ] : "\n" ] ;
|
||||
pseudo_env_VS150 = [ path.native [ path.join $(shell_ret) "\\Common7\\Tools" ] ] ;
|
||||
}
|
||||
}
|
||||
|
||||
# Check environment or previous path_VS150
|
||||
for local env in $(.version-$(version)-env)
|
||||
{
|
||||
local env-path = [ os.environ $(env) ] ;
|
||||
local env-path ;
|
||||
if ( $(pseudo_env_VS150) && [ path.exists $(pseudo_env_VS150) ] )
|
||||
{
|
||||
env-path = $(pseudo_env_VS150) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
env-path = [ os.environ $(env) ] ;
|
||||
}
|
||||
ECHO "env-path $(env-path)" ;
|
||||
if $(env-path) && $(.version-$(version)-path)
|
||||
{
|
||||
for local bin-path in $(.version-$(version)-path)
|
||||
@@ -1669,8 +1699,7 @@ if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
|
||||
.version-7.1toolkit-path = "Microsoft Visual C++ Toolkit 2003/bin" ;
|
||||
.version-7.1toolkit-env = VCToolkitInstallDir ;
|
||||
# Visual Studio 2017 doesn't use a registry at all. And the suggested methods
|
||||
# of discovery involve having a compiled program. We can't do that as it would
|
||||
# make for a recursive discovery and build dependency cycle. So we search
|
||||
# of discovery involve having a compiled program. So as a fallback we search
|
||||
# paths for VS2017 (aka msvc >= 14.1).
|
||||
.version-14.1-path =
|
||||
"../../VC/Tools/MSVC/*/bin/Host*/*"
|
||||
|
||||
Reference in New Issue
Block a user