From 439bf93f8cf8c3c24fc8d5d2f6438ca7adb72d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarek=20Ziad=C3=A9?= Date: Sat, 20 Jun 2009 13:57:20 +0000 Subject: Fixed #6164 AIX specific linker argument in Distutils unixcompiler --- Lib/distutils/tests/test_unixccompiler.py | 8 ++++++++ Lib/distutils/unixccompiler.py | 33 ++++++++++++++++--------------- Misc/NEWS | 3 +++ 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/Lib/distutils/tests/test_unixccompiler.py b/Lib/distutils/tests/test_unixccompiler.py index 94e9edf..96f5454 100644 --- a/Lib/distutils/tests/test_unixccompiler.py +++ b/Lib/distutils/tests/test_unixccompiler.py @@ -86,6 +86,14 @@ class UnixCCompilerTestCase(unittest.TestCase): sysconfig.get_config_var = gcv self.assertEqual(self.cc.rpath_foo(), '-R/foo') + # AIX C/C++ linker + sys.platform = 'aix' + def gcv(v): + return 'xxx' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-blibpath:/foo') + + def test_suite(): return unittest.makeSuite(UnixCCompilerTestCase) diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index 0b1dc4a..129ac8c 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -288,23 +288,24 @@ class UnixCCompiler(CCompiler): return "+s -L" + dir elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] - else: - if compiler[:3] == "gcc" or compiler[:3] == "g++": - # gcc on non-GNU systems does not need -Wl, but can - # use it anyway. Since distutils has always passed in - # -Wl whenever gcc was used in the past it is probably - # safest to keep doing so. - if sysconfig.get_config_var("GNULD") == "yes": - # GNU ld needs an extra option to get a RUNPATH - # instead of just an RPATH. - return "-Wl,--enable-new-dtags,-R" + dir - else: - return "-Wl,-R" + dir + elif compiler[:3] == "gcc" or compiler[:3] == "g++": + # gcc on non-GNU systems does not need -Wl, but can + # use it anyway. Since distutils has always passed in + # -Wl whenever gcc was used in the past it is probably + # safest to keep doing so. + if sysconfig.get_config_var("GNULD") == "yes": + # GNU ld needs an extra option to get a RUNPATH + # instead of just an RPATH. + return "-Wl,--enable-new-dtags,-R" + dir else: - # No idea how --enable-new-dtags would be passed on to - # ld if this system was using GNU ld. Don't know if a - # system like this even exists. - return "-R" + dir + return "-Wl,-R" + dir + elif sys.platform[:3] == "aix": + return "-blibpath:" + dir + else: + # No idea how --enable-new-dtags would be passed on to + # ld if this system was using GNU ld. Don't know if a + # system like this even exists. + return "-R" + dir def library_option(self, lib): return "-l" + lib diff --git a/Misc/NEWS b/Misc/NEWS index 4f59ba6..9581313 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -327,6 +327,9 @@ Core and Builtins Library ------- +- Issue #6164: Added an AIX specific linker argument in Distutils + unixcompiler. Original patch by Sridhar Ratnakumar. + - Issue #6274: Fixed possible file descriptors leak in subprocess.py - Issue #6189: Restored compatibility of subprocess.py with Python 2.2. -- cgit v0.12