diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2019-08-21 13:21:49 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2019-10-07 10:44:56 -0700 |
commit | ff4a17dbef08a1d8afd075f57dbab0f5c76951ab (patch) | |
tree | 5c0e08f3150679fd0e220ca1006b7ddee3a08e40 /mesonbuild/compilers/c.py | |
parent | 1ea3182f827db7c038ac20089437a6202eec02c0 (diff) | |
download | meson-ff4a17dbef08a1d8afd075f57dbab0f5c76951ab.zip meson-ff4a17dbef08a1d8afd075f57dbab0f5c76951ab.tar.gz meson-ff4a17dbef08a1d8afd075f57dbab0f5c76951ab.tar.bz2 |
compilers: Add a specific type for AppleClangC
This allows us to detect use classes rather than methods to determine
what C standards are available.
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r-- | mesonbuild/compilers/c.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index 1ec9146..7b5d3cc 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -75,6 +75,10 @@ class CCompiler(CLikeCompiler, Compiler): class ClangCCompiler(ClangCompiler, CCompiler): + + _C17_VERSION = '>=10.0.0' + _C18_VERSION = '>=11.0.0' + def __init__(self, exelist, version, compiler_type, for_machine: MachineChoice, is_cross, exe_wrapper=None, **kwargs): CCompiler.__init__(self, exelist, version, for_machine, is_cross, exe_wrapper, **kwargs) ClangCompiler.__init__(self, compiler_type) @@ -90,12 +94,10 @@ class ClangCCompiler(ClangCompiler, CCompiler): g_stds = ['gnu89', 'gnu99', 'gnu11'] # https://releases.llvm.org/6.0.0/tools/clang/docs/ReleaseNotes.html # https://en.wikipedia.org/wiki/Xcode#Latest_versions - v = '>=10.0.0' if self.compiler_type is CompilerType.CLANG_OSX else '>=6.0.0' - if version_compare(self.version, v): + if version_compare(self.version, self._C17_VERSION): c_stds += ['c17'] g_stds += ['gnu17'] - v = '>=11.0.0' if self.compiler_type is CompilerType.CLANG_OSX else '>=8.0.0' - if version_compare(self.version, v): + if version_compare(self.version, self._C18_VERSION): c_stds += ['c18'] g_stds += ['gnu18'] opts.update({'c_std': coredata.UserComboOption('C language standard to use', @@ -114,6 +116,18 @@ class ClangCCompiler(ClangCompiler, CCompiler): return [] +class AppleClangCCompiler(ClangCCompiler): + + """Handle the differences between Apple Clang and Vanilla Clang. + + Right now this just handles the differences between the versions that new + C standards were added. + """ + + _C17_VERSION = '>=6.0.0' + _C18_VERSION = '>=8.0.0' + + class EmscriptenCCompiler(LinkerEnvVarsMixin, BasicLinkerIsCompilerMixin, ClangCCompiler): def __init__(self, exelist, version, compiler_type, for_machine: MachineChoice, is_cross, exe_wrapper=None, **kwargs): if not is_cross: |