From c1f4af2830ff636fa32c36964f7ee7f78d94824b Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 8 Aug 2019 21:12:03 +0200 Subject: ccompiler: use the distutils linker in the dumper No need to hardcode things since distutils looks it up. Similar to !170 but for Windows. --- giscanner/ccompiler.py | 9 +++++++++ giscanner/dumper.py | 6 +----- tests/scanner/test_ccompiler.py | 5 +++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py index 32c92966..35549da2 100644 --- a/giscanner/ccompiler.py +++ b/giscanner/ccompiler.py @@ -413,6 +413,15 @@ class CCompiler(object): ", ".join(not_resolved)) return shlibs + @property + def linker_cmd(self): + if self.check_is_msvc(): + if not self.compiler.initialized: + self.compiler.initialize() + return [self.compiler.linker] + else: + return self.compiler.linker_exe + def check_is_msvc(self): return isinstance(self.compiler, MSVCCompiler) diff --git a/giscanner/dumper.py b/giscanner/dumper.py index abf2150e..efa18782 100644 --- a/giscanner/dumper.py +++ b/giscanner/dumper.py @@ -91,10 +91,6 @@ class DumpCompiler(object): self._uninst_srcdir = os.environ.get('UNINSTALLED_INTROSPECTION_SRCDIR') self._packages = ['gio-2.0', 'gmodule-2.0'] self._packages.extend(options.packages) - if self._compiler.check_is_msvc(): - self._linker_cmd = ['link.exe'] - else: - self._linker_cmd = self._compiler.compiler.linker_exe # Public API @@ -202,7 +198,7 @@ class DumpCompiler(object): if self._options.quiet: args.append('--silent') - args.extend(self._linker_cmd) + args.extend(self._compiler.linker_cmd) # We can use -o for the Microsoft compiler/linker, # but it is considered deprecated usage diff --git a/tests/scanner/test_ccompiler.py b/tests/scanner/test_ccompiler.py index 5890aa9b..6c0674a1 100644 --- a/tests/scanner/test_ccompiler.py +++ b/tests/scanner/test_ccompiler.py @@ -62,6 +62,11 @@ class UnixCCompilerTest(unittest.TestCase): except ValueError: self.fail('%r is not a subsequence of %r' % (list1, list2)) + def test_link_cmd(self): + with Environ(dict(CC="foobar")): + compiler = CCompiler() + self.assertEqual(compiler.linker_cmd[0], "foobar") + def test_link_args_override(self): with Environ(dict(CC="foobar")): compiler = CCompiler() -- cgit v1.2.1