aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/compilers/c.py32
-rw-r--r--mesonbuild/compilers/compilers.py14
-rw-r--r--mesonbuild/compilers/fortran.py3
3 files changed, 20 insertions, 29 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index bc90381..9a2d7db 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -157,32 +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']
- elif self.id == 'intel':
- if self.compiler_type.is_osx_compiler:
- # Apple ld
- return ['-Wl,-undefined,dynamic_lookup']
- else:
- return ['-Wl,--allow-shlib-undefined']
- # FIXME: implement other linkers
- return []
-
def get_output_args(self, target):
return ['-o', target]
@@ -1600,11 +1574,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)
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 3d53f27..f464ec8 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -1265,6 +1265,12 @@ class Compiler:
raise EnvironmentException(
'%s does not support get_profile_use_args ' % self.get_id())
+ def get_undefined_link_args(self):
+ '''
+ Get args for allowing undefined symbols when linking to a shared library
+ '''
+ return []
+
@enum.unique
class CompilerType(enum.Enum):
@@ -1511,6 +1517,14 @@ class GnuLikeCompiler(abc.ABC):
def get_profile_use_args(self):
return ['-fprofile-use', '-fprofile-correction']
+ def get_allow_undefined_link_args(self):
+ if self.compiler_type.is_osx_compiler:
+ # Apple ld
+ return ['-Wl,-undefined,dynamic_lookup']
+ else:
+ # GNU ld and LLVM lld
+ return ['-Wl,--allow-shlib-undefined']
+
class GnuCompiler(GnuLikeCompiler):
"""
diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py
index 8eea4e7..0afdfdf 100644
--- a/mesonbuild/compilers/fortran.py
+++ b/mesonbuild/compilers/fortran.py
@@ -144,9 +144,6 @@ end program prog
def get_compiler_check_args(self):
return CCompiler.get_compiler_check_args(self)
- def get_allow_undefined_link_args(self):
- return CCompiler.get_allow_undefined_link_args(self)
-
def get_output_args(self, target):
return CCompiler.get_output_args(self, target)