summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/cpp.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2024-09-06 10:08:49 -0700
committerDylan Baker <dylan@pnwbakers.com>2025-01-27 09:38:53 -0800
commit4f314baaf638d6a566fa295b8779b4cf3ba6d96f (patch)
treefd041e369b4ef7a57cba69370c6000cac357a5a3 /mesonbuild/compilers/cpp.py
parent30ca64a25b966c7204325e0338afbbb2c6a64d53 (diff)
downloadmeson-4f314baaf638d6a566fa295b8779b4cf3ba6d96f.tar.gz
compilers/gnu: Split Gnu C++ standard handling into a mixin class
So we can re-use it in the ObjC++ standards
Diffstat (limited to 'mesonbuild/compilers/cpp.py')
-rw-r--r--mesonbuild/compilers/cpp.py17
1 files changed, 3 insertions, 14 deletions
diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
index e051050e2..9626aaceb 100644
--- a/mesonbuild/compilers/cpp.py
+++ b/mesonbuild/compilers/cpp.py
@@ -25,7 +25,7 @@ from .mixins.ccrx import CcrxCompiler
from .mixins.ti import TICompiler
from .mixins.arm import ArmCompiler, ArmclangCompiler
from .mixins.visualstudio import MSVCCompiler, ClangClCompiler
-from .mixins.gnu import GnuCompiler, gnu_common_warning_args, gnu_cpp_warning_args
+from .mixins.gnu import GnuCompiler, GnuCPPStds, gnu_common_warning_args, gnu_cpp_warning_args
from .mixins.intel import IntelGnuLikeCompiler, IntelVisualStudioLikeCompiler
from .mixins.clang import ClangCompiler, ClangCPPStds
from .mixins.elbrus import ElbrusCompiler
@@ -417,7 +417,7 @@ class ArmclangCPPCompiler(ArmclangCompiler, CPPCompiler):
return []
-class GnuCPPCompiler(_StdCPPLibMixin, GnuCompiler, CPPCompiler):
+class GnuCPPCompiler(_StdCPPLibMixin, GnuCPPStds, GnuCompiler, CPPCompiler):
def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool,
info: 'MachineInfo',
linker: T.Optional['DynamicLinker'] = None,
@@ -437,7 +437,7 @@ class GnuCPPCompiler(_StdCPPLibMixin, GnuCompiler, CPPCompiler):
def get_options(self) -> 'MutableKeyedOptionDictType':
key = self.form_compileropt_key('std')
- opts = CPPCompiler.get_options(self)
+ opts = super().get_options()
self.update_options(
opts,
self.create_option(options.UserComboOption,
@@ -454,17 +454,6 @@ class GnuCPPCompiler(_StdCPPLibMixin, GnuCompiler, CPPCompiler):
'STL debug mode',
False),
)
- cppstd_choices = [
- 'c++98', 'c++03', 'c++11', 'c++14', 'c++17', 'c++1z',
- 'c++2a', 'c++20',
- ]
- if version_compare(self.version, '>=11.0.0'):
- cppstd_choices.append('c++23')
- if version_compare(self.version, '>=14.0.0'):
- cppstd_choices.append('c++26')
- std_opt = opts[key]
- assert isinstance(std_opt, options.UserStdOption), 'for mypy'
- std_opt.set_versions(cppstd_choices, gnu=True)
if self.info.is_windows() or self.info.is_cygwin():
self.update_options(
opts,