aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/c.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r--mesonbuild/compilers/c.py36
1 files changed, 11 insertions, 25 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index 547d59f..e5b89ce 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -157,26 +157,6 @@ class CCompiler(Compiler):
'''
return self.get_no_optimization_args()
- def get_allow_undefined_link_args(self):
- '''
- Get args for allowing undefined symbols when linking to a shared library
- '''
- if self.id in ('clang', 'gcc'):
- if self.compiler_type.is_osx_compiler:
- # Apple ld
- return ['-Wl,-undefined,dynamic_lookup']
- elif self.compiler_type.is_windows_compiler:
- # For PE/COFF this is impossible
- return []
- else:
- # GNU ld and LLVM lld
- return ['-Wl,--allow-shlib-undefined']
- elif isinstance(self, VisualStudioCCompiler):
- # link.exe
- return ['/FORCE:UNRESOLVED']
- # FIXME: implement other linkers
- return []
-
def get_output_args(self, target):
return ['-o', target]
@@ -413,12 +393,12 @@ class CCompiler(Compiler):
dependencies=dependencies)
def _get_compiler_check_args(self, env, extra_args, dependencies, mode='compile'):
- if callable(extra_args):
- extra_args = extra_args(mode)
if extra_args is None:
extra_args = []
- elif isinstance(extra_args, str):
- extra_args = [extra_args]
+ else:
+ extra_args = listify(extra_args)
+ extra_args = listify([e(mode) if callable(e) else e for e in extra_args])
+
if dependencies is None:
dependencies = []
elif not isinstance(dependencies, list):
@@ -1268,7 +1248,7 @@ class IntelCCompiler(IntelCompiler, CCompiler):
CCompiler.__init__(self, exelist, version, is_cross, exe_wrapper, **kwargs)
IntelCompiler.__init__(self, compiler_type)
self.lang_header = 'c-header'
- default_warn_args = ['-Wall', '-w3', '-diag-disable:remark', '-Wpch-messages']
+ default_warn_args = ['-Wall', '-w3', '-diag-disable:remark']
self.warn_args = {'1': default_warn_args,
'2': default_warn_args + ['-Wextra'],
'3': default_warn_args + ['-Wextra']}
@@ -1597,11 +1577,17 @@ class VisualStudioCCompiler(CCompiler):
def get_argument_syntax(self):
return 'msvc'
+ def get_allow_undefined_link_args(self):
+ # link.exe
+ return ['/FORCE:UNRESOLVED']
+
+
class ClangClCCompiler(VisualStudioCCompiler):
def __init__(self, exelist, version, is_cross, exe_wrap, is_64):
super().__init__(exelist, version, is_cross, exe_wrap, is_64)
self.id = 'clang-cl'
+
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)