aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/environment.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/environment.py')
-rw-r--r--mesonbuild/environment.py24
1 files changed, 17 insertions, 7 deletions
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(