Windows msvsc: Report accurate platform toolset version for VS2022 (#45525)
VC toolset versions 144 and 143 are both associated with the platform toolset 143; this deviates from prior version choices made by the MSVC devs; add a special case to report platform toolset version as 143 when VC toolset version is >= 143 (this will need revisiting for later releases).
This commit is contained in:
parent
bfba3c9d5c
commit
ffcb4ee487
@ -231,24 +231,55 @@ def msvc_version(self):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def short_msvc_version(self):
|
def short_msvc_version(self):
|
||||||
|
"""This is the shorthand VCToolset version of form
|
||||||
|
MSVC<short-ver>
|
||||||
"""
|
"""
|
||||||
This is the shorthand VCToolset version of form
|
return "MSVC" + self.vc_toolset_ver
|
||||||
MSVC<short-ver> *NOT* the full version, for that see
|
|
||||||
|
@property
|
||||||
|
def vc_toolset_ver(self):
|
||||||
|
"""
|
||||||
|
The toolset version is the version of the combined set of cl and link
|
||||||
|
This typically relates directly to VS version i.e. VS 2022 is v143
|
||||||
|
VS 19 is v142, etc.
|
||||||
|
This value is defined by the first three digits of the major + minor
|
||||||
|
version of the VS toolset (143 for 14.3x.bbbbb). Traditionally the
|
||||||
|
minor version has remained a static two digit number for a VS release
|
||||||
|
series, however, as of VS22, this is no longer true, both
|
||||||
|
14.4x.bbbbb and 14.3x.bbbbb are considered valid VS22 VC toolset
|
||||||
|
versions due to a change in toolset minor version sentiment.
|
||||||
|
|
||||||
|
This is *NOT* the full version, for that see
|
||||||
Msvc.msvc_version or MSVC.platform_toolset_ver for the
|
Msvc.msvc_version or MSVC.platform_toolset_ver for the
|
||||||
raw platform toolset version
|
raw platform toolset version
|
||||||
|
|
||||||
"""
|
"""
|
||||||
ver = self.platform_toolset_ver
|
ver = self.msvc_version[:2].joined.string[:3]
|
||||||
return "MSVC" + ver
|
return ver
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def platform_toolset_ver(self):
|
def platform_toolset_ver(self):
|
||||||
"""
|
"""
|
||||||
This is the platform toolset version of current MSVC compiler
|
This is the platform toolset version of current MSVC compiler
|
||||||
i.e. 142.
|
i.e. 142. The platform toolset is the targeted MSVC library/compiler
|
||||||
|
versions by compilation (this is different from the VC Toolset)
|
||||||
|
|
||||||
|
|
||||||
This is different from the VC toolset version as established
|
This is different from the VC toolset version as established
|
||||||
by `short_msvc_version`
|
by `short_msvc_version`, but typically are represented by the same
|
||||||
|
three digit value
|
||||||
"""
|
"""
|
||||||
return self.msvc_version[:2].joined.string[:3]
|
# Typically VS toolset version and platform toolset versions match
|
||||||
|
# VS22 introduces the first divergence of VS toolset version
|
||||||
|
# (144 for "recent" releases) and platform toolset version (143)
|
||||||
|
# so it needs additional handling until MS releases v144
|
||||||
|
# (assuming v144 is also for VS22)
|
||||||
|
# or adds better support for detection
|
||||||
|
# TODO: (johnwparent) Update this logic for the next platform toolset
|
||||||
|
# or VC toolset version update
|
||||||
|
toolset_ver = self.vc_toolset_ver
|
||||||
|
vs22_toolset = Version(toolset_ver) > Version("142")
|
||||||
|
return toolset_ver if not vs22_toolset else "143"
|
||||||
|
|
||||||
def _compiler_version(self, compiler):
|
def _compiler_version(self, compiler):
|
||||||
"""Returns version object for given compiler"""
|
"""Returns version object for given compiler"""
|
||||||
|
Loading…
Reference in New Issue
Block a user