From 17a81cffb21a3bebfe38cbc9150385439e4440de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Sat, 22 Feb 2020 22:01:48 +0100 Subject: [PATCH] SCons: Ensure that MSVC gets /std:c++17 in CCFLAGS We were running this logic too early, so `env.msvc` was not initialized yet and MSVC used the same branch as GCC/Clang. --- SConstruct | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/SConstruct b/SConstruct index eb59db006da..0c0e7ed6810 100644 --- a/SConstruct +++ b/SConstruct @@ -309,9 +309,19 @@ if selected_platform in platform_list: env['LINKFLAGS'] = '' env.Append(LINKFLAGS=str(LINKFLAGS).split()) + # Platform specific flags + flag_list = platform_flags[selected_platform] + for f in flag_list: + if not (f[0] in ARGUMENTS): # allow command line to override platform flags + env[f[0]] = f[1] + + # Must happen after the flags definition, so that they can be used by platform detect + detect.configure(env) + # Set our C and C++ standard requirements. # C++17 is required as we need guaranteed copy elision as per GH-36436. # Prepending to make it possible to override. + # This needs to come after `configure`, otherwise we don't have env.msvc. if not env.msvc: # Specifying GNU extensions support explicitly, which are supported by # both GCC and Clang. Both currently default to gnu11 and gnu++14. @@ -322,15 +332,6 @@ if selected_platform in platform_list: # We apply it to CCFLAGS (both C and C++ code) in case it impacts C features. env.Prepend(CCFLAGS=['/std:c++17', '/permissive-']) - # Platform specific flags - flag_list = platform_flags[selected_platform] - for f in flag_list: - if not (f[0] in ARGUMENTS): # allow command line to override platform flags - env[f[0]] = f[1] - - # Must happen after the flags definition, so that they can be used by platform detect - detect.configure(env) - # Configure compiler warnings if env.msvc: # Truncations, narrowing conversions, signed/unsigned comparisons...