aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/c.py
diff options
context:
space:
mode:
authormakise-homura <akemi_homura@kurisa.ch>2021-09-29 02:38:19 +0300
committerDylan Baker <dylan@pnwbakers.com>2021-09-29 20:16:02 -0700
commit0021a219302101db01daca29017b1125a71f087f (patch)
tree591ce58388548601d0a20c10f8efa813992927ff /mesonbuild/compilers/c.py
parent0ed2d2719bb275a573ead6ca69be46206daea2bc (diff)
downloadmeson-0021a219302101db01daca29017b1125a71f087f.zip
meson-0021a219302101db01daca29017b1125a71f087f.tar.gz
meson-0021a219302101db01daca29017b1125a71f087f.tar.bz2
compilers/elbrus: Deal with C/C++/Fortran stds more correctly
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r--mesonbuild/compilers/c.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index a096442..e56d29e 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -333,14 +333,19 @@ class ElbrusCCompiler(ElbrusCompiler, CCompiler):
info, exe_wrapper, linker=linker, full_version=full_version)
ElbrusCompiler.__init__(self)
- # It does support some various ISO standards and c/gnu 90, 9x, 1x in addition to those which GNU CC supports.
def get_options(self) -> 'KeyedOptionDictType':
opts = CCompiler.get_options(self)
- opts[OptionKey('std', machine=self.for_machine, lang=self.language)].choices = [
- 'none', 'c89', 'c90', 'c9x', 'c99', 'c1x', 'c11',
- 'gnu89', 'gnu90', 'gnu9x', 'gnu99', 'gnu1x', 'gnu11',
- 'iso9899:2011', 'iso9899:1990', 'iso9899:199409', 'iso9899:1999',
- ]
+ stds = ['c89', 'c9x', 'c99', 'gnu89', 'gnu9x', 'gnu99']
+ stds += ['iso9899:1990', 'iso9899:199409', 'iso9899:1999']
+ if version_compare(self.version, '>=1.20.00'):
+ stds += ['c11', 'gnu11']
+ if version_compare(self.version, '>=1.21.00') and version_compare(self.version, '<1.22.00'):
+ stds += ['c90', 'c1x', 'gnu90', 'gnu1x', 'iso9899:2011']
+ if version_compare(self.version, '>=1.23.00'):
+ stds += ['c90', 'c1x', 'gnu90', 'gnu1x', 'iso9899:2011']
+ if version_compare(self.version, '>=1.26.00'):
+ stds += ['c17', 'c18', 'iso9899:2017', 'iso9899:2018', 'gnu17', 'gnu18']
+ opts[OptionKey('std', machine=self.for_machine, lang=self.language)].choices = ['none'] + stds
return opts
# Elbrus C compiler does not have lchmod, but there is only linker warning, not compiler error.
@@ -355,6 +360,7 @@ class ElbrusCCompiler(ElbrusCompiler, CCompiler):
extra_args=extra_args,
dependencies=dependencies)
+
class IntelCCompiler(IntelGnuLikeCompiler, CCompiler):
def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoice, is_cross: bool,
info: 'MachineInfo', exe_wrapper: T.Optional['ExternalProgram'] = None,