Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c411203

Browse files
zackwintermdbdmoody256
authored andcommitted
SERVER-123107 pin windows sdk (#51747) (#53264)
Co-authored-by: Daniel Moody <[email protected]> GitOrigin-RevId: ed9a6630253d3bc301e5ef19606704715d1e2066
1 parent b4d3645 commit c411203

1 file changed

Lines changed: 39 additions & 7 deletions

File tree

SConstruct

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1262,22 +1262,37 @@ env_vars.Add(
12621262

12631263
VSINSTALLDIR = 'C:/Program Files/Microsoft Visual Studio/2022/Professional'
12641264
MSVC_TOOLSET_VERSION = "14.31.31103"
1265+
DEFAULT_WINDOWS_SDK_VERSION = "10.0.17763.0"
1266+
WINDOWS_KITS_10_LIB_ROOT = "C:/Program Files (x86)/Windows Kits/10/Lib"
1267+
# Keep the vcvars args symbolic so env.subst() picks up command-line overrides.
1268+
DEFAULT_MSVC_USE_SCRIPT_ARGS = "x64 $MSVC_SDK_VERSION -vcvars_ver=$MSVC_TOOLSET_VERSION"
1269+
1270+
1271+
def get_windows_sdk_libdir(sdk_version):
1272+
return os.path.join(WINDOWS_KITS_10_LIB_ROOT, sdk_version)
1273+
12651274

12661275
env_vars.Add('MSVC_USE_SCRIPT', help='Sets the script used to setup Visual Studio.',
12671276
default=f'{VSINSTALLDIR}/VC/Auxiliary/Build/vcvarsall.bat')
12681277

12691278
env_vars.Add('VSINSTALLDIR', help='The path where Visual Studio is installed.',
12701279
default=VSINSTALLDIR)
12711280

1272-
env_vars.Add('MSVC_USE_SCRIPT_ARGS', help='Sets the script used to setup Visual Studio.',
1273-
default=f'x64 -vcvars_ver={MSVC_TOOLSET_VERSION}')
1281+
env_vars.Add('MSVC_USE_SCRIPT_ARGS', help='Sets the arguments used to setup Visual Studio.',
1282+
default=DEFAULT_MSVC_USE_SCRIPT_ARGS)
12741283

12751284
env_vars.Add(
12761285
'MSVC_TOOLSET_VERSION',
12771286
help='Sets the full toolset version of Visual C++ to use.',
12781287
default=MSVC_TOOLSET_VERSION,
12791288
)
12801289

1290+
env_vars.Add(
1291+
'MSVC_SDK_VERSION',
1292+
help='Sets the Windows 10 SDK version used by Visual C++.',
1293+
default=DEFAULT_WINDOWS_SDK_VERSION,
1294+
)
1295+
12811296
env_vars.Add(
12821297
'MSVC_VERSION',
12831298
help='Sets the version of Visual C++ to use (e.g. 14.2 for VS2019, 14.3 for VS2022)',
@@ -1573,6 +1588,22 @@ if GetOption('help'):
15731588

15741589
Return()
15751590

1591+
selected_windows_sdk_version = variables_only_env.get("MSVC_SDK_VERSION")
1592+
if variables_only_env.get("TARGET_OS") == "windows":
1593+
if not selected_windows_sdk_version:
1594+
fatal_error(
1595+
None,
1596+
"MSVC_SDK_VERSION must name a Windows 10 SDK version. Override it on the SCons command line with MSVC_SDK_VERSION=<sdk version>.",
1597+
)
1598+
1599+
selected_windows_sdk_libdir = get_windows_sdk_libdir(selected_windows_sdk_version)
1600+
if not os.path.isdir(selected_windows_sdk_libdir):
1601+
fatal_error(
1602+
None,
1603+
"Pinned Windows SDK not found at '{}'. Install that SDK or override it on the SCons command line with MSVC_SDK_VERSION=<sdk version>.",
1604+
selected_windows_sdk_libdir,
1605+
)
1606+
15761607
if ('CC' in variables_only_env) != ('CXX' in variables_only_env):
15771608
print('Cannot customize C compiler without customizing C++ compiler, and vice versa')
15781609
Exit(1)
@@ -1654,6 +1685,7 @@ envDict = dict(
16541685
LIBDEPS_TAG_EXPANSIONS=[],
16551686
MSVC_VERSION=variables_only_env.get("MSVC_VERSION"),
16561687
MSVC_TOOLSET_VERSION=variables_only_env.get("MSVC_TOOLSET_VERSION"),
1688+
MSVC_SDK_VERSION=variables_only_env.get("MSVC_SDK_VERSION"),
16571689
VSINSTALLDIR=variables_only_env.get("VSINSTALLDIR"),
16581690
MSVC_USE_SCRIPT=variables_only_env.get("MSVC_USE_SCRIPT"),
16591691
MSVC_USE_SCRIPT_ARGS=variables_only_env.get("MSVC_USE_SCRIPT_ARGS"),
@@ -3973,19 +4005,19 @@ def doConfigure(myenv):
39734005
"C++ libraries.")
39744006
myenv.Append(CPPDEFINES=["_GLIBCXX_DEBUG"])
39754007

3976-
# Check if we have a modern Windows SDK
4008+
# Check if we have a Windows 10 SDK.
39774009
if env.TargetOSIs('windows'):
39784010

39794011
def CheckWindowsSDKVersion(context):
39804012

39814013
test_body = """
39824014
#include <windows.h>
3983-
#if !defined(NTDDI_WINBLUE)
3984-
#error Need Windows SDK Version 8.1 or higher
4015+
#if !defined(NTDDI_WIN10)
4016+
#error Need Windows SDK Version 10 or higher
39854017
#endif
39864018
"""
39874019

3988-
context.Message('Checking Windows SDK is 8.1 or newer... ')
4020+
context.Message('Checking Windows SDK is 10 or newer... ')
39894021
ret = context.TryCompile(textwrap.dedent(test_body), ".c")
39904022
context.Result(ret)
39914023
return ret
@@ -3999,7 +4031,7 @@ def doConfigure(myenv):
39994031
)
40004032

40014033
if not conf.CheckWindowsSDKVersion():
4002-
myenv.ConfError('Windows SDK Version 8.1 or higher is required to build MongoDB')
4034+
myenv.ConfError('Windows SDK Version 10 or higher is required to build MongoDB')
40034035

40044036
conf.Finish()
40054037

0 commit comments

Comments
 (0)