From eae4afdcb71b22d90698611c4b50eb18a4338ff4 Mon Sep 17 00:00:00 2001
From: Lars Viklund <zao@zao.se>
Date: Tue, 2 Jul 2013 01:05:51 +0200
Subject: [PATCH] Boost.Build copy-paste MSVC 11.0 to 12.0, add vc12 toolset
---
tools/build/v2/engine/build.bat | 27 ++++++++++++++++++++++++++-
tools/build/v2/engine/build.jam | 6 ++++++
tools/build/v2/tools/msvc.jam | 10 ++++++++--
tools/build/v2/tools/msvc.py | 10 +++++++---
4 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/tools/build/v2/engine/build.bat b/tools/build/v2/engine/build.bat
index 07da9bb..3e80e3d 100644
a
|
b
|
ECHO ### You can specify the toolset as the argument, i.e.:
|
28 | 28 | ECHO ### .\build.bat msvc |
29 | 29 | ECHO ### |
30 | 30 | ECHO ### Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin, |
31 | | ECHO ### intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9, vc10, vc11 |
| 31 | ECHO ### intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9, vc10, vc11, vc12 |
32 | 32 | ECHO ### |
33 | 33 | call :Set_Error |
34 | 34 | endlocal |
… |
… |
call :Test_Empty %ProgramFiles%
|
101 | 101 | if not errorlevel 1 set ProgramFiles=C:\Program Files |
102 | 102 | |
103 | 103 | call :Clear_Error |
| 104 | if NOT "_%VS120COMNTOOLS%_" == "__" ( |
| 105 | set "BOOST_JAM_TOOLSET=vc12" |
| 106 | set "BOOST_JAM_TOOLSET_ROOT=%VS120COMNTOOLS%..\..\VC\" |
| 107 | goto :eof) |
| 108 | call :Clear_Error |
| 109 | if EXIST "%ProgramFiles%\Microsoft Visual Studio 12.0\VC\VCVARSALL.BAT" ( |
| 110 | set "BOOST_JAM_TOOLSET=vc12" |
| 111 | set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 12.0\VC\" |
| 112 | goto :eof) |
| 113 | call :Clear_Error |
104 | 114 | if NOT "_%VS110COMNTOOLS%_" == "__" ( |
105 | 115 | set "BOOST_JAM_TOOLSET=vc11" |
106 | 116 | set "BOOST_JAM_TOOLSET_ROOT=%VS110COMNTOOLS%..\..\VC\" |
… |
… |
set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0"
|
396 | 406 | set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" |
397 | 407 | set "_known_=1" |
398 | 408 | :Skip_VC11 |
| 409 | if NOT "_%BOOST_JAM_TOOLSET%_" == "_vc12_" goto Skip_VC12 |
| 410 | if NOT "_%VS120COMNTOOLS%_" == "__" ( |
| 411 | set "BOOST_JAM_TOOLSET_ROOT=%VS120COMNTOOLS%..\..\VC\" |
| 412 | ) |
| 413 | if "_%VCINSTALLDIR%_" == "__" call :Call_If_Exists "%BOOST_JAM_TOOLSET_ROOT%VCVARSALL.BAT" %BOOST_JAM_ARGS% |
| 414 | if NOT "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( |
| 415 | if "_%VCINSTALLDIR%_" == "__" ( |
| 416 | set "PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%" |
| 417 | ) ) |
| 418 | set "BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib" |
| 419 | set "BOOST_JAM_OPT_JAM=/Febootstrap\jam0" |
| 420 | set "BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0" |
| 421 | set "BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0" |
| 422 | set "_known_=1" |
| 423 | :Skip_VC12 |
399 | 424 | if NOT "_%BOOST_JAM_TOOLSET%_" == "_borland_" goto Skip_BORLAND |
400 | 425 | if "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" ( |
401 | 426 | call :Test_Path bcc32.exe ) |
diff --git a/tools/build/v2/engine/build.jam b/tools/build/v2/engine/build.jam
index 9c01d1d..9d3bb0d 100644
a
|
b
|
toolset vc11 cl : /Fe /Fe /Fd /Fo : -D
|
377 | 377 | [ opt --debug : /MTd /DEBUG /Z7 /Od /Ob0 /wd4996 ] |
378 | 378 | -I$(--python-include) -I$(--extra-include) |
379 | 379 | : kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ; |
| 380 | toolset vc12 cl : /Fe /Fe /Fd /Fo : -D |
| 381 | : /nologo |
| 382 | [ opt --release : /GL /MT /O2 /Ob2 /Gy /GF /GA /wd4996 ] |
| 383 | [ opt --debug : /MTd /DEBUG /Z7 /Od /Ob0 /wd4996 ] |
| 384 | -I$(--python-include) -I$(--extra-include) |
| 385 | : kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ; |
380 | 386 | |
381 | 387 | # First set the build commands and options according to the |
382 | 388 | # preset toolset. |
diff --git a/tools/build/v2/tools/msvc.jam b/tools/build/v2/tools/msvc.jam
index cc04768..354f658 100644
a
|
b
|
local rule configure-really ( version ? : options * )
|
749 | 749 | # version from the path. |
750 | 750 | # FIXME: We currently detect both Microsoft Visual Studio 9.0 and |
751 | 751 | # 9.0express as 9.0 here. |
752 | | if [ MATCH "(Microsoft Visual Studio 11)" : $(command) ] |
| 752 | if [ MATCH "(Microsoft Visual Studio 12)" : $(command) ] |
| 753 | { |
| 754 | version = 12.0 ; |
| 755 | } |
| 756 | else if [ MATCH "(Microsoft Visual Studio 11)" : $(command) ] |
753 | 757 | { |
754 | 758 | version = 11.0 ; |
755 | 759 | } |
… |
… |
if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
|
1385 | 1389 | |
1386 | 1390 | |
1387 | 1391 | # Known toolset versions, in order of preference. |
1388 | | .known-versions = 11.0 10.0 10.0express 9.0 9.0express 8.0 8.0express 7.1 |
| 1392 | .known-versions = 12.0 11.0 10.0 10.0express 9.0 9.0express 8.0 8.0express 7.1 |
1389 | 1393 | 7.1toolkit 7.0 6.0 ; |
1390 | 1394 | |
1391 | 1395 | # Version aliases. |
… |
… |
if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
|
1396 | 1400 | .version-alias-9 = 9.0 ; |
1397 | 1401 | .version-alias-10 = 10.0 ; |
1398 | 1402 | .version-alias-11 = 11.0 ; |
| 1403 | .version-alias-12 = 12.0 ; |
1399 | 1404 | |
1400 | 1405 | # Names of registry keys containing the Visual C++ installation path (relative |
1401 | 1406 | # to "HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft"). |
… |
… |
if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
|
1409 | 1414 | .version-10.0-reg = "VisualStudio\\10.0\\Setup\\VC" ; |
1410 | 1415 | .version-10.0express-reg = "VCExpress\\10.0\\Setup\\VC" ; |
1411 | 1416 | .version-11.0-reg = "VisualStudio\\11.0\\Setup\\VC" ; |
| 1417 | .version-12.0-reg = "VisualStudio\\12.0\\Setup\\VC" ; |
1412 | 1418 | |
1413 | 1419 | # Visual C++ Toolkit 2003 does not store its installation path in the registry. |
1414 | 1420 | # The environment variable 'VCToolkitInstallDir' and the default installation |
diff --git a/tools/build/v2/tools/msvc.py b/tools/build/v2/tools/msvc.py
index c6dab50..2cba16b 100644
a
|
b
|
def configure_really(version=None, options=[]):
|
645 | 645 | # version from the path. |
646 | 646 | # FIXME: We currently detect both Microsoft Visual Studio 9.0 and |
647 | 647 | # 9.0express as 9.0 here. |
648 | | if re.search("Microsoft Visual Studio 11", command): |
| 648 | if re.search("Microsoft Visual Studio 12", command): |
| 649 | version = '12.0' |
| 650 | elif re.search("Microsoft Visual Studio 11", command): |
649 | 651 | version = '11.0' |
650 | | if re.search("Microsoft Visual Studio 10", command): |
| 652 | elif re.search("Microsoft Visual Studio 10", command): |
651 | 653 | version = '10.0' |
652 | 654 | elif re.search("Microsoft Visual Studio 9", command): |
653 | 655 | version = '9.0' |
… |
… |
__cpu_type_itanium2 = ['itanium2', 'mckinley']
|
1156 | 1158 | |
1157 | 1159 | |
1158 | 1160 | # Known toolset versions, in order of preference. |
1159 | | _known_versions = ['11.0', '10.0', '10.0express', '9.0', '9.0express', '8.0', '8.0express', '7.1', '7.1toolkit', '7.0', '6.0'] |
| 1161 | _known_versions = ['12.0', '11.0', '10.0', '10.0express', '9.0', '9.0express', '8.0', '8.0express', '7.1', '7.1toolkit', '7.0', '6.0'] |
1160 | 1162 | |
1161 | 1163 | # Version aliases. |
1162 | 1164 | __version_alias_6 = '6.0' |
… |
… |
__version_alias_8 = '8.0'
|
1166 | 1168 | __version_alias_9 = '9.0' |
1167 | 1169 | __version_alias_10 = '10.0' |
1168 | 1170 | __version_alias_11 = '11.0' |
| 1171 | __version_alias_12 = '12.0' |
1169 | 1172 | |
1170 | 1173 | # Names of registry keys containing the Visual C++ installation path (relative |
1171 | 1174 | # to "HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft"). |
… |
… |
__version_9_0express_reg = "VCExpress\\9.0\\Setup\\VC"
|
1179 | 1182 | __version_10_0_reg = "VisualStudio\\10.0\\Setup\\VC" |
1180 | 1183 | __version_10_0express_reg = "VCExpress\\10.0\\Setup\\VC" |
1181 | 1184 | __version_11_0_reg = "VisualStudio\\11.0\\Setup\\VC" |
| 1185 | __version_12_0_reg = "VisualStudio\\12.0\\Setup\\VC" |
1182 | 1186 | |
1183 | 1187 | # Visual C++ Toolkit 2003 does not store its installation path in the registry. |
1184 | 1188 | # The environment variable 'VCToolkitInstallDir' and the default installation |