diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2018-10-13 20:00:38 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2018-11-15 18:42:25 -0800 |
commit | 9f9cfd21396db5cd5eb1711916c8b0c6e433c702 (patch) | |
tree | 1d42c21c51f80f5c9ae1bbc9f46b840eee4c6da5 /mesonbuild/compilers/c.py | |
parent | a480de1cb55c9efa88a9a520d0d776743b4e5664 (diff) | |
download | meson-9f9cfd21396db5cd5eb1711916c8b0c6e433c702.zip meson-9f9cfd21396db5cd5eb1711916c8b0c6e433c702.tar.gz meson-9f9cfd21396db5cd5eb1711916c8b0c6e433c702.tar.bz2 |
compilers: Move get_allow_undefined_link_args to Compiler
This allows each implementation (gnu-like) and msvc to be implemented in
their respective classes rather than through an if tree in the CCompiler
class. This is cleaner abstraction and allows us to clean up the Fortran
compiler, which was calling CCompiler bound methods without an instance.
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r-- | mesonbuild/compilers/c.py | 32 |
1 files changed, 6 insertions, 26 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) |