@@ -2570,6 +2570,34 @@ def msvc_toolset_versions_spectre(msvc_version=None, vswhere_exe=None):
2570
2570
rval = MSVC .ScriptArguments ._msvc_toolset_versions_spectre_internal (msvc_version , vc_dir )
2571
2571
return rval
2572
2572
2573
+ def get_installed_vcs_toolsets_components (env = None ):
2574
+
2575
+ vcs = get_installed_vcs (env )
2576
+
2577
+ msvc_toolset_component_defs = []
2578
+
2579
+ for msvc_version in vcs :
2580
+ msvc_version_def = MSVC .Util .msvc_version_components (msvc_version )
2581
+ if msvc_version_def .msvc_vernum > 14.0 :
2582
+ # VS2017 and later
2583
+ toolset_all_list = msvc_toolset_versions (msvc_version = msvc_version , full = True , sxs = True )
2584
+ for toolset_version in toolset_all_list :
2585
+ debug ('msvc_version=%s, toolset_version=%s' , repr (msvc_version ), repr (toolset_version ))
2586
+ toolset_version_def = MSVC .Util .msvc_extended_version_components (toolset_version )
2587
+ if not toolset_version_def :
2588
+ continue
2589
+ rval = (msvc_version_def , toolset_version_def )
2590
+ msvc_toolset_component_defs .append (rval )
2591
+ else :
2592
+ # VS2015 and earlier
2593
+ toolset_version = msvc_version_def .msvc_verstr
2594
+ debug ('msvc_version=%s, toolset_version=%s' , repr (msvc_version ), repr (toolset_version ))
2595
+ toolset_version_def = MSVC .Util .msvc_extended_version_components (toolset_version )
2596
+ rval = (msvc_version_def , toolset_version_def )
2597
+ msvc_toolset_component_defs .append (rval )
2598
+
2599
+ return msvc_toolset_component_defs
2600
+
2573
2601
def msvc_query_version_toolset (version = None , prefer_newest : bool = True , vswhere_exe = None ):
2574
2602
"""
2575
2603
Return an msvc version and a toolset version given a version
@@ -2616,13 +2644,13 @@ def msvc_query_version_toolset(version=None, prefer_newest: bool=True, vswhere_e
2616
2644
"""
2617
2645
debug ('version=%s, prefer_newest=%s' , repr (version ), repr (prefer_newest ))
2618
2646
2647
+ _VSWhereExecutable .vswhere_freeze_executable (vswhere_exe )
2648
+
2619
2649
msvc_version = None
2620
2650
msvc_toolset_version = None
2621
2651
2622
2652
with MSVC .Policy .msvc_notfound_policy_contextmanager ('suppress' ):
2623
2653
2624
- _VSWhereExecutable .vswhere_freeze_executable (vswhere_exe )
2625
-
2626
2654
vcs = get_installed_vcs ()
2627
2655
2628
2656
if not version :
0 commit comments