diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2020-03-15 22:33:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-15 22:33:12 +0200 |
commit | c5572056953e75fbbf03973ee207a4556449edca (patch) | |
tree | 637bb4dbfd5de226bd035edb8abc10072728544a | |
parent | 1bb66d15684aa694b88a62e33159f8cfee16ef25 (diff) | |
parent | 20f8e472212d8aa11fdf073a4e04da65f3d702d5 (diff) | |
download | meson-c5572056953e75fbbf03973ee207a4556449edca.zip meson-c5572056953e75fbbf03973ee207a4556449edca.tar.gz meson-c5572056953e75fbbf03973ee207a4556449edca.tar.bz2 |
Merge pull request #6779 from dcbaker/gdc-linker-args
Allow setting linker for GDC as well as LDC
-rw-r--r-- | docs/markdown/snippets/ldc_linker_override.md | 10 | ||||
-rw-r--r-- | mesonbuild/compilers/d.py | 2 | ||||
-rwxr-xr-x | run_unittests.py | 21 |
3 files changed, 26 insertions, 7 deletions
diff --git a/docs/markdown/snippets/ldc_linker_override.md b/docs/markdown/snippets/ldc_linker_override.md index fa124ba..2eab958 100644 --- a/docs/markdown/snippets/ldc_linker_override.md +++ b/docs/markdown/snippets/ldc_linker_override.md @@ -1,5 +1,7 @@ -## Support for overiding the linker with ldc +## Support for overiding the linker with ldc and gdc -LDC (the llvm D compiler) now honors D_LD linker variable (or d_ld in the cross -file) and is able to pick differnt linkers. ld.bfd, ld.gold, ld.lld, ld64, -link, and lld-link are currently supported. +LDC (the llvm D compiler) and GDC (The Gnu D Compiler) now honor D_LD linker +variable (or d_ld in the cross file) and is able to pick differnt linkers. + +GDC supports all of the same values as GCC, LDC supports ld.bfd, ld.gold, +ld.lld, ld64, link, and lld-link. diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index 9a46a4e..eb3a0f3 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -627,7 +627,7 @@ class DCompiler(Compiler): return ' '.join(self.exelist) -class GnuDCompiler(DCompiler, GnuCompiler): +class GnuDCompiler(GnuCompiler, DCompiler): # we mostly want DCompiler, but that gives us the Compiler.LINKER_PREFIX instead LINKER_PREFIX = GnuCompiler.LINKER_PREFIX diff --git a/run_unittests.py b/run_unittests.py index f867f1c..ee6ec7e 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -4990,9 +4990,18 @@ class WindowsTests(BasePlatformTests): def test_link_environment_variable_optlink(self): self._check_ld('optlink', 'c', 'optlink') + @skip_if_not_language('rust') def test_link_environment_variable_rust(self): self._check_ld('link', 'rust', 'link') + @skip_if_not_language('d') + def test_link_environment_variable_d(self): + env = get_fake_env() + comp = getattr(env, 'detect_d_compiler')(MachineChoice.HOST) + if comp.id == 'dmd': + raise unittest.SkipTest('meson cannot reliably make DMD use a different linker.') + self._check_ld('lld-link', 'd', 'lld-link') + def test_pefile_checksum(self): try: import pefile @@ -6342,23 +6351,31 @@ c = ['{0}'] def test_ld_environment_variable_lld(self): self._check_ld('ld.lld', 'lld', 'c', 'ld.lld') - @skipIfNoExecutable('rustc') + @skip_if_not_language('rust') def test_ld_environment_variable_rust(self): self._check_ld('ld.gold', 'gold', 'rust', 'ld.gold') def test_ld_environment_variable_cpp(self): self._check_ld('ld.gold', 'gold', 'cpp', 'ld.gold') + @skip_if_not_language('objc') def test_ld_environment_variable_objc(self): self._check_ld('ld.gold', 'gold', 'objc', 'ld.gold') + @skip_if_not_language('objcpp') def test_ld_environment_variable_objcpp(self): self._check_ld('ld.gold', 'gold', 'objcpp', 'ld.gold') - @skipIfNoExecutable('gfortran') + @skip_if_not_language('fortran') def test_ld_environment_variable_fortran(self): self._check_ld('ld.gold', 'gold', 'fortran', 'ld.gold') + @skip_if_not_language('d') + def test_ld_environment_variable_d(self): + # At least for me, ldc defaults to gold, and gdc defaults to bfd, so + # let's pick lld, which isn't the default for either (currently) + self._check_ld('ld.lld', 'lld', 'd', 'ld.lld') + def compute_sha256(self, filename): with open(filename, 'rb') as f: return hashlib.sha256(f.read()).hexdigest() |