aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/c.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2019-04-30 15:53:50 -0700
committerDylan Baker <dylan@pnwbakers.com>2019-05-13 11:22:31 -0700
commitfa54f05f09da9b1878d51f35535e54e0222c4f1e (patch)
tree881dbc875b10a3e5937f0724eed6df41555ecad4 /mesonbuild/compilers/c.py
parentde011e031c83db8f88958573815feaef3bce0d1d (diff)
downloadmeson-fa54f05f09da9b1878d51f35535e54e0222c4f1e.zip
meson-fa54f05f09da9b1878d51f35535e54e0222c4f1e.tar.gz
meson-fa54f05f09da9b1878d51f35535e54e0222c4f1e.tar.bz2
compilers: Add basic ICL abstractions
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r--mesonbuild/compilers/c.py33
1 files changed, 32 insertions, 1 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index e7c9338..0cfcbc3 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -16,7 +16,7 @@ import os.path
import typing
from .. import coredata
-from ..mesonlib import MesonException, version_compare
+from ..mesonlib import MesonException, version_compare, mlog
from .c_function_attributes import C_FUNC_ATTRIBUTES
from .clike import CLikeCompiler
@@ -31,6 +31,7 @@ from .compilers import (
GnuCompiler,
ElbrusCompiler,
IntelGnuLikeCompiler,
+ IntelVisualStudioLikeCompiler,
PGICompiler,
CcrxCompiler,
VisualStudioLikeCompiler,
@@ -279,6 +280,36 @@ class ClangClCCompiler(VisualStudioLikeCompiler, VisualStudioLikeCCompilerMixin,
self.id = 'clang-cl'
+class IntelClCCompiler(IntelVisualStudioLikeCompiler, VisualStudioLikeCCompilerMixin, CCompiler):
+
+ """Intel "ICL" compiler abstraction."""
+
+ __have_warned = False
+
+ def __init__(self, exelist, version, is_cross, exe_wrap, target):
+ CCompiler.__init__(self, exelist, version, is_cross, exe_wrap)
+ IntelVisualStudioLikeCompiler.__init__(self, target)
+
+ def get_options(self):
+ opts = super().get_options()
+ c_stds = ['none', 'c89', 'c99', 'c11']
+ opts.update({'c_std': coredata.UserComboOption('c_std', 'C language standard to use',
+ c_stds,
+ 'none')})
+ return opts
+
+ def get_option_compile_args(self, options):
+ args = []
+ std = options['c_std']
+ if std.value == 'c89':
+ if not self.__have_warned:
+ self.__have_warned = True
+ mlog.warning("ICL doesn't explicitly implement c89, setting the standard to 'none', which is close.")
+ elif std.value != 'none':
+ args.append('/Qstd:' + std.value)
+ return args
+
+
class ArmCCompiler(ArmCompiler, CCompiler):
def __init__(self, exelist, version, compiler_type, is_cross, exe_wrapper=None, **kwargs):
CCompiler.__init__(self, exelist, version, is_cross, exe_wrapper, **kwargs)