Fixed #7617: all flavors of gcc should be recognized now

This commit is contained in:
Tarek Ziadé 2010-01-08 23:42:23 +00:00
parent 5b77d6dfa3
commit c25417f644
3 changed files with 21 additions and 2 deletions

View File

@ -82,6 +82,18 @@ class UnixCCompilerTestCase(unittest.TestCase):
sysconfig.get_config_var = gcv sysconfig.get_config_var = gcv
self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo')
# GCC GNULD with fully qualified configuration prefix
# see #7617
sys.platform = 'bar'
def gcv(v):
if v == 'CC':
return 'x86_64-pc-linux-gnu-gcc-4.4.2'
elif v == 'GNULD':
return 'yes'
sysconfig.get_config_var = gcv
self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
# non-GCC GNULD # non-GCC GNULD
sys.platform = 'bar' sys.platform = 'bar'
def gcv(v): def gcv(v):

View File

@ -266,6 +266,9 @@ class UnixCCompiler(CCompiler):
def library_dir_option(self, dir): def library_dir_option(self, dir):
return "-L" + dir return "-L" + dir
def _is_gcc(self, compiler_name):
return "gcc" in compiler_name or "g++" in compiler_name
def runtime_library_dir_option(self, dir): def runtime_library_dir_option(self, dir):
# XXX Hackish, at the very least. See Python bug #445902: # XXX Hackish, at the very least. See Python bug #445902:
# http://sourceforge.net/tracker/index.php # http://sourceforge.net/tracker/index.php
@ -285,12 +288,12 @@ class UnixCCompiler(CCompiler):
# MacOSX's linker doesn't understand the -R flag at all # MacOSX's linker doesn't understand the -R flag at all
return "-L" + dir return "-L" + dir
elif sys.platform[:5] == "hp-ux": elif sys.platform[:5] == "hp-ux":
if "gcc" in compiler or "g++" in compiler: if self._is_gcc(compiler):
return ["-Wl,+s", "-L" + dir] return ["-Wl,+s", "-L" + dir]
return ["+s", "-L" + dir] return ["+s", "-L" + dir]
elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5":
return ["-rpath", dir] return ["-rpath", dir]
elif compiler[:3] == "gcc" or compiler[:3] == "g++": elif self._is_gcc(compiler):
# gcc on non-GNU systems does not need -Wl, but can # gcc on non-GNU systems does not need -Wl, but can
# use it anyway. Since distutils has always passed in # use it anyway. Since distutils has always passed in
# -Wl whenever gcc was used in the past it is probably # -Wl whenever gcc was used in the past it is probably

View File

@ -65,6 +65,10 @@ Core and Builtins
Library Library
------- -------
- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes
gcc when it has a fully qualified configuration prefix. Initial patch
by Arfrever.
- Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles - Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles
renaming of `cPickle` to `pickle`. The warning was annoying since there's renaming of `cPickle` to `pickle`. The warning was annoying since there's
no alternative to cPickle if you care about performance. Patch by Florent no alternative to cPickle if you care about performance. Patch by Florent