Update Built-in Option c_std for C17. Closes #4842.

pull/3582/merge
jrl64 6 years ago committed by Jussi Pakkanen
parent 04710b087a
commit a2d222c383
  1. 2
      docs/markdown/Builtin-options.md
  2. 2
      docs/markdown/Configuring-a-build-directory.md
  3. 9
      docs/markdown/snippets/add_c17_and_c18_standards.md
  4. 21
      mesonbuild/compilers/c.py

@ -128,7 +128,7 @@ compiler being used:
| ------ | ------------- | --------------- | ----------- |
| c_args | | free-form comma-separated list | C compile arguments to use |
| c_link_args | | free-form comma-separated list | C link arguments to use |
| c_std | none | none, c89, c99, c11, gnu89, gnu99, gnu11 | C language standard to use |
| c_std | none | none, c89, c99, c11, c17, c18, gnu89, gnu99, gnu11, gnu17, gnu18 | C language standard to use |
| c_winlibs | see below | free-form comma-separated list | Standard Windows libs to link against |
| cpp_args | | free-form comma-separated list | C++ compile arguments to use |
| cpp_link_args| | free-form comma-separated list | C++ link arguments to use |

@ -60,7 +60,7 @@ sample output for a simple project.
------ ------------- --------------- -----------
c_args [] Extra arguments passed to the C compiler
c_link_args [] Extra arguments passed to the C linker
c_std c99 [none, c89, c99, c11, gnu89, gnu99, gnu11] C language standard to use
c_std c99 [none, c89, c99, c11, c17, c18, gnu89, gnu99, gnu11, gnu17, gnu18] C language standard to use
cpp_args [] Extra arguments passed to the C++ compiler
cpp_debugstl false [true, false] STL debug mode
cpp_link_args [] Extra arguments passed to the C++ linker

@ -0,0 +1,9 @@
---
short-description: Add c17 and c18 values for c_std option
...
## Added c17 and c18 as c_std values for recent GCC and Clang Versions
For gcc version 8.0 and later, the values c17, c18, gnu17, and gnu18 were added to the accepted values for built-in compiler option c_std.
For Clang version 10.0 and later on Apple OSX (Darwin), and for version 7.0 and later on other platforms, the values c17 and gnu17 were added as c_std values.

@ -1220,9 +1220,17 @@ class ClangCCompiler(ClangCompiler, CCompiler):
def get_options(self):
opts = CCompiler.get_options(self)
c_stds = ['c89', 'c99', 'c11']
g_stds = ['gnu89', 'gnu99', 'gnu11']
if self.compiler_type is CompilerType.CLANG_OSX:
v = '>=10.0.0'
else:
v = '>=7.0.0'
if version_compare(self.version, v):
c_stds += ['c17']
g_stds += ['gnu17']
opts.update({'c_std': coredata.UserComboOption('c_std', 'C language standard to use',
['none', 'c89', 'c99', 'c11',
'gnu89', 'gnu99', 'gnu11'],
['none'] + c_stds + g_stds,
'none')})
return opts
@ -1284,9 +1292,14 @@ class GnuCCompiler(GnuCompiler, CCompiler):
def get_options(self):
opts = CCompiler.get_options(self)
c_stds = ['c89', 'c99', 'c11']
g_stds = ['gnu89', 'gnu99', 'gnu11']
v = '>=8.0.0'
if version_compare(self.version, v):
c_stds += ['c17', 'c18']
g_stds += ['gnu17', 'gnu18']
opts.update({'c_std': coredata.UserComboOption('c_std', 'C language standard to use',
['none', 'c89', 'c99', 'c11',
'gnu89', 'gnu99', 'gnu11'],
['none'] + c_stds + g_stds,
'none')})
if self.compiler_type.is_windows_compiler:
opts.update({

Loading…
Cancel
Save