diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2019-10-22 20:59:36 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-22 20:59:36 +0300 |
commit | dea2c093d4925a0616e9c1f2aaf5352a2db36c2e (patch) | |
tree | 13bd3ddb0002820d9f8160da1581d965671e0f81 /mesonbuild | |
parent | 1ed70e22b9e42b5710e52252ce76212d79737186 (diff) | |
parent | 31d397187d30c59258a5fdb40634783f7c2c4b5a (diff) | |
download | meson-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.py | 11 | ||||
-rw-r--r-- | mesonbuild/environment.py | 24 |
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( |