aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-10-22 20:59:36 +0300
committerGitHub <noreply@github.com>2019-10-22 20:59:36 +0300
commitdea2c093d4925a0616e9c1f2aaf5352a2db36c2e (patch)
tree13bd3ddb0002820d9f8160da1581d965671e0f81 /mesonbuild
parent1ed70e22b9e42b5710e52252ce76212d79737186 (diff)
parent31d397187d30c59258a5fdb40634783f7c2c4b5a (diff)
downloadmeson-dea2c093d4925a0616e9c1f2aaf5352a2db36c2e.zip
meson-dea2c093d4925a0616e9c1f2aaf5352a2db36c2e.tar.gz
meson-dea2c093d4925a0616e9c1f2aaf5352a2db36c2e.tar.bz2
Merge pull request #6090 from GoaLitiuM/master
d: Fix various linking issues
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/compilers/d.py11
-rw-r--r--mesonbuild/environment.py24
2 files changed, 27 insertions, 8 deletions
diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py
index e8355a8..a22e8d4 100644
--- a/mesonbuild/compilers/d.py
+++ b/mesonbuild/compilers/d.py
@@ -394,7 +394,10 @@ class DmdLikeCompilerMixin:
return Compiler.get_soname_args(self, *args, **kwargs)
def get_allow_undefined_link_args(self) -> typing.List[str]:
- return self.linker.get_allow_undefined_args()
+ args = []
+ for arg in self.linker.get_allow_undefined_args():
+ args.append('-L=' + arg)
+ return args
class DCompiler(Compiler):
@@ -637,6 +640,9 @@ class GnuDCompiler(DCompiler, GnuCompiler):
return parameter_list
+ def get_allow_undefined_link_args(self) -> typing.List[str]:
+ return self.linker.get_allow_undefined_args()
+
class LLVMDCompiler(DmdLikeCompilerMixin, LinkerEnvVarsMixin, BasicLinkerIsCompilerMixin, DCompiler):
@@ -667,6 +673,9 @@ class LLVMDCompiler(DmdLikeCompilerMixin, LinkerEnvVarsMixin, BasicLinkerIsCompi
def get_pic_args(self):
return ['-relocation-model=pic']
+ def get_std_shared_lib_link_args(self):
+ return ['-shared']
+
def get_crt_link_args(self, crt_val, buildtype):
return self.get_crt_args(crt_val, buildtype)
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index c75077a..99428c7 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -1369,12 +1369,15 @@ class Environment:
# LDC seems to require a file
m = self.machines[for_machine]
if m.is_windows() or m.is_cygwin():
- # Getting LDC on windows to give useful linker output when not
- # doing real work is painfully hard. It ships with a verison of
- # lld-link, so just assume that we're going to use lld-link
- # with it.
- _, o, _ = Popen_safe(['lld-link.exe', '--version'])
- linker = ClangClDynamicLinker(for_machine, version=search_version(o))
+ if is_msvc:
+ linker = MSVCDynamicLinker(for_machine, version=version)
+ else:
+ # Getting LDC on windows to give useful linker output when not
+ # doing real work is painfully hard. It ships with a verison of
+ # lld-link, so just assume that we're going to use lld-link
+ # with it.
+ _, o, _ = Popen_safe(['lld-link.exe', '--version'])
+ linker = ClangClDynamicLinker(for_machine, version=search_version(o))
else:
with tempfile.NamedTemporaryFile(suffix='.d') as f:
linker = self._guess_nix_linker(
@@ -1393,7 +1396,14 @@ class Environment:
# DMD seems to require a file
m = self.machines[for_machine]
if m.is_windows() or m.is_cygwin():
- linker = OptlinkDynamicLinker(for_machine, version=full_version)
+ if is_msvc:
+ linker = MSVCDynamicLinker(for_machine, version=version)
+ elif arch == 'x86':
+ linker = OptlinkDynamicLinker(for_machine, version=full_version)
+ else:
+ # DMD ships with lld-link
+ _, o, _ = Popen_safe(['lld-link.exe', '--version'])
+ linker = ClangClDynamicLinker(for_machine, version=search_version(o))
else:
with tempfile.NamedTemporaryFile(suffix='.d') as f:
linker = self._guess_nix_linker(