summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--giscanner/ccompiler.py5
-rw-r--r--tests/scanner/test_ccompiler.py5
2 files changed, 9 insertions, 1 deletions
diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py
index 8ea99445..aee6a1af 100644
--- a/giscanner/ccompiler.py
+++ b/giscanner/ccompiler.py
@@ -45,7 +45,10 @@ def customize_compiler(compiler):
get_config_vars('CC', 'CXX', 'LDSHARED', 'SHLIB_SUFFIX', 'AR', 'ARFLAGS')
if 'CC' in os.environ:
- cc = os.environ['CC']
+ newcc = os.environ['CC']
+ if 'LDSHARED' not in os.environ and ldshared.startswith(cc):
+ ldshared = newcc + ldshared[len(cc):]
+ cc = newcc
if 'CXX' in os.environ:
cxx = os.environ['CXX']
if 'LDSHARED' in os.environ:
diff --git a/tests/scanner/test_ccompiler.py b/tests/scanner/test_ccompiler.py
index ac50e245..dd8700d8 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_args_override(self):
+ with Environ(dict(CC="foobar")):
+ compiler = CCompiler()
+ self.assertEqual(compiler.compiler.linker_so[0], "foobar")
+
def compile_args(self, environ={}, compiler_name='unix',
pkg_config_cflags=[], cpp_includes=[],
source='a.c', init_sections=[]):