aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-12-11 23:29:33 +0200
committerGitHub <noreply@github.com>2019-12-11 23:29:33 +0200
commit17dd9e5bffd42c3ad6c2dff1f15639d6adf31e1c (patch)
tree88eb97cee03e8ecffbd18b7f15e06d8ba038c03d /mesonbuild/compilers
parentc3d0b95a58695257cc40cbc9a51dfa6c7f172ec4 (diff)
parentf8aa17d8e62e05ed264a00a5e948b3e42aa68b30 (diff)
downloadmeson-17dd9e5bffd42c3ad6c2dff1f15639d6adf31e1c.zip
meson-17dd9e5bffd42c3ad6c2dff1f15639d6adf31e1c.tar.gz
meson-17dd9e5bffd42c3ad6c2dff1f15639d6adf31e1c.tar.bz2
Merge pull request #6207 from dcbaker/linker-option
Add a way to select the dynamic linker meson uses
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r--mesonbuild/compilers/compilers.py6
-rw-r--r--mesonbuild/compilers/mixins/gnu.py4
-rw-r--r--mesonbuild/compilers/mixins/visualstudio.py4
-rw-r--r--mesonbuild/compilers/rust.py6
4 files changed, 19 insertions, 1 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 09c53ea..eedd4cf 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -1192,6 +1192,12 @@ class Compiler:
def get_dependency_link_args(self, dep):
return dep.get_link_args()
+ @classmethod
+ def use_linker_args(cls, linker: str) -> typing.List[str]:
+ """Get a list of arguments to pass to the compiler to set the linker.
+ """
+ return []
+
def get_largefile_args(compiler):
'''
diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py
index 64b0d3b..6683486 100644
--- a/mesonbuild/compilers/mixins/gnu.py
+++ b/mesonbuild/compilers/mixins/gnu.py
@@ -299,6 +299,10 @@ class GnuLikeCompiler(metaclass=abc.ABCMeta):
return ['-isystem' + path]
return ['-I' + path]
+ @classmethod
+ def use_linker_args(cls, linker: str) -> typing.List[str]:
+ return ['-fuse-ld={}'.format(linker)]
+
class GnuCompiler(GnuLikeCompiler):
"""
diff --git a/mesonbuild/compilers/mixins/visualstudio.py b/mesonbuild/compilers/mixins/visualstudio.py
index 60b07c4..4798bdc 100644
--- a/mesonbuild/compilers/mixins/visualstudio.py
+++ b/mesonbuild/compilers/mixins/visualstudio.py
@@ -381,3 +381,7 @@ class VisualStudioLikeCompiler(metaclass=abc.ABCMeta):
def get_argument_syntax(self) -> str:
return 'msvc'
+
+ @classmethod
+ def use_linker_args(cls, linker: str) -> typing.List[str]:
+ return []
diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py
index a17b697..405afea 100644
--- a/mesonbuild/compilers/rust.py
+++ b/mesonbuild/compilers/rust.py
@@ -32,7 +32,7 @@ rust_optimization_args = {'0': [],
class RustCompiler(Compiler):
- LINKER_PREFIX = '-Wl,'
+ # rustc doesn't invoke the compiler itself, it doesn't need a LINKER_PREFIX
def __init__(self, exelist, version, for_machine: MachineChoice,
is_cross, info: 'MachineInfo', exe_wrapper=None, **kwargs):
@@ -109,3 +109,7 @@ class RustCompiler(Compiler):
def get_std_exe_link_args(self):
return []
+
+ # Rust does not have a use_linker_args because it dispatches to a gcc-like
+ # C compiler for dynamic linking, as such we invoke the C compiler's
+ # use_linker_args method instead.