diff --git a/SConstruct b/SConstruct index 4ec07a36a51..dcd591c10d7 100644 --- a/SConstruct +++ b/SConstruct @@ -1260,9 +1260,22 @@ env_vars.Add( default=version_data['githash'], ) +VSINSTALLDIR = 'C:/Program Files/Microsoft Visual Studio/2022/Professional' +MSVC_TOOLSET_VERSION = "14.31.31103" + +env_vars.Add('MSVC_USE_SCRIPT', help='Sets the script used to setup Visual Studio.', + default=f'{VSINSTALLDIR}/VC/Auxiliary/Build/vcvarsall.bat') + +env_vars.Add('VSINSTALLDIR', help='The path where Visual Studio is installed.', + default=VSINSTALLDIR) + +env_vars.Add('MSVC_USE_SCRIPT_ARGS', help='Sets the script used to setup Visual Studio.', + default=f'x64 -vcvars_ver={MSVC_TOOLSET_VERSION}') + env_vars.Add( - 'MSVC_USE_SCRIPT', - help='Sets the script used to setup Visual Studio.', + 'MSVC_TOOLSET_VERSION', + help='Sets the full toolset version of Visual C++ to use.', + default=MSVC_TOOLSET_VERSION, ) env_vars.Add( @@ -1271,12 +1284,6 @@ env_vars.Add( default="14.3", ) -env_vars.Add( - 'MSVC_TOOLSET_VERSION', - help='Sets the full toolset version of Visual C++ to use.', - default="14.31.31103", -) - env_vars.Add( 'LINKFLAGS_COMPILER_EXEC_PREFIX', help='Specify the search path to be injected into the LINKFLAGS', @@ -1647,6 +1654,9 @@ envDict = dict( LIBDEPS_TAG_EXPANSIONS=[], MSVC_VERSION=variables_only_env.get("MSVC_VERSION"), MSVC_TOOLSET_VERSION=variables_only_env.get("MSVC_TOOLSET_VERSION"), + VSINSTALLDIR=variables_only_env.get("VSINSTALLDIR"), + MSVC_USE_SCRIPT=variables_only_env.get("MSVC_USE_SCRIPT"), + MSVC_USE_SCRIPT_ARGS=variables_only_env.get("MSVC_USE_SCRIPT_ARGS"), ) # By default, we will get the normal SCons tool search. But if the diff --git a/site_scons/site_tools/vcredist.py b/site_scons/site_tools/vcredist.py index 0f86629b281..1061eefb930 100644 --- a/site_scons/site_tools/vcredist.py +++ b/site_scons/site_tools/vcredist.py @@ -87,6 +87,14 @@ def generate(env): if not exists(env): return + if 'TARGET_ARCH' not in env or env['TARGET_ARCH'] is None: + env['TARGET_ARCH'] = "x86_64" + + if env['TARGET_ARCH'] not in target_arch_expansion_map: + raise Exception( + f"TARGET_ARCH={env['TARGET_ARCH']}, TARGET_ARCH must be in {target_arch_expansion_map.keys()} on windows." + ) + env.Tool("msvc") env.AddMethod(_get_merge_module_name_for_feature, "GetMergeModuleNameForFeature") @@ -128,6 +136,9 @@ def generate(env): if os.path.isdir(mergemodulepath): env["MSVS"]["VCREDISTMERGEMODULEPATH"] = mergemodulepath + if 'VSINSTALLDIR' in env: + env["MSVS"]["VSINSTALLDIR"] = env["VSINSTALLDIR"] + if not "VSINSTALLDIR" in env["MSVS"]: # Compute a VS version based on the VC version. VC 14.0 is VS 2015, VC