Revert "compilers/c++: Add MSVC option to make the __cplusplus define accurate"

This reverts commit 0b97d58548.
pull/9121/head
Jussi Pakkanen 3 years ago
parent 00bfbcbfa2
commit a90d2925dd
  1. 7
      docs/markdown/snippets/msvc_cplusplus_define.md
  2. 11
      mesonbuild/compilers/cpp.py
  3. 7
      test cases/windows/18 msvc cplusplus define/main.cpp
  4. 14
      test cases/windows/18 msvc cplusplus define/meson.build
  5. 2
      test cases/windows/3 cpp/meson.build
  6. 1
      unittests/windowstests.py

@ -1,7 +0,0 @@
## MSVC now sets the __cplusplus #define accurately
For reasons, MSVC will always return `199711L` for `__cplusplus`, even when a
newer c++ standard is explicitly requested, unless you pass a specific option to
the compiler for MSVC 2017 15.7 and newer. Older versions are unaffected by
this. Meson now always sets the option if it is available, as it is unlikley
that users want the default behavior.

@ -692,17 +692,6 @@ class VisualStudioCPPCompiler(CPP11AsCPP14Mixin, VisualStudioLikeCPPCompilerMixi
del args[i]
return args
def get_always_args(self) -> T.List[str]:
args = super().get_always_args()
# update the __cplusplus #define to match the version given on the
# command line with /std:NNN, but only for versions above 15.7 (2017)
# https://docs.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=msvc-160
if version_compare(self.version, '>= 15.7'):
args.append('/Zc:__cplusplus')
return args
class ClangClCPPCompiler(CPP11AsCPP14Mixin, VisualStudioLikeCPPCompilerMixin, ClangClCompiler, CPPCompiler):
def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice,
is_cross: bool, info: 'MachineInfo', target: str,

@ -1,7 +0,0 @@
int main() {
#if __cplusplus == 199711L
return 1;
#else
return 0;
#endif
}

@ -1,14 +0,0 @@
project('msvc __cplusplus', 'cpp', default_options : ['cpp_std=c++14'])
cpp = meson.get_compiler('cpp')
if cpp.get_id() != 'msvc'
error('MESON_SKIP_TEST: test is only relavent for msvc')
elif meson.project_version().version_compare('< 15.7')
error('MESON_SKIP_TEST: test is only relavent for msvc versions >= 15.7')
endif
test(
'main',
executable('main', 'main.cpp'),
)

@ -1,4 +1,4 @@
project('wincpp', 'cpp', default_options : ['cpp_std=c++14'])
project('wincpp', 'cpp')
exe = executable('prog', 'prog.cpp')
test('wincpp', exe)

@ -359,3 +359,4 @@ class WindowsTests(BasePlatformTests):
raise SkipTest('C++ modules are only supported with VS 2019 Preview or newer.')
self.init(os.path.join(self.unit_test_dir, '86 cpp modules'))
self.build()

Loading…
Cancel
Save