summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2019-08-08 21:12:03 +0200
committerChristoph Reiter <reiter.christoph@gmail.com>2019-08-08 21:12:03 +0200
commitc1f4af2830ff636fa32c36964f7ee7f78d94824b (patch)
treebc79a0f7209340a8519be6d2f3bd30c18155da93
parent399afe04f7e59371e48544a0efb290e028c72756 (diff)
downloadgobject-introspection-c1f4af2830ff636fa32c36964f7ee7f78d94824b.tar.gz
ccompiler: use the distutils linker in the dumper
No need to hardcode things since distutils looks it up. Similar to !170 but for Windows.
-rw-r--r--giscanner/ccompiler.py9
-rw-r--r--giscanner/dumper.py6
-rw-r--r--tests/scanner/test_ccompiler.py5
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()