diff options
author | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-05-09 11:55:12 (GMT) |
---|---|---|
committer | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-05-09 11:55:12 (GMT) |
commit | be720e0369b6b8a97ceab4a4f8f8930911bd1b75 (patch) | |
tree | 6aaa74a6fd2431eeabfadf5e1efe27d5d2ca0017 /Lib/distutils/unixccompiler.py | |
parent | be5b1b99737271a1f7d9748203b7ee116dd0ce61 (diff) | |
download | cpython-be720e0369b6b8a97ceab4a4f8f8930911bd1b75.zip cpython-be720e0369b6b8a97ceab4a4f8f8930911bd1b75.tar.gz cpython-be720e0369b6b8a97ceab4a4f8f8930911bd1b75.tar.bz2 |
Merged revisions 72497 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r72497 | tarek.ziade | 2009-05-09 10:28:53 +0200 (Sat, 09 May 2009) | 1 line
Fixed Issue 5900: distutils.command.build_ext - Ensure RUNPATH is added to extension modules with RPATH if GNU ld is used
........
Diffstat (limited to 'Lib/distutils/unixccompiler.py')
-rw-r--r-- | Lib/distutils/unixccompiler.py | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index d65ab32..c11544d 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -271,8 +271,9 @@ class UnixCCompiler(CCompiler): # Linkers on different platforms need different options to # specify that directories need to be added to the list of # directories searched for dependencies when a dynamic library - # is sought. GCC has to be told to pass the -R option through - # to the linker, whereas other compilers just know this. + # is sought. GCC on GNU systems (Linux, FreeBSD, ...) has to + # be told to pass the -R option through to the linker, whereas + # other compilers and gcc on other systems just know this. # Other compilers may need something slightly different. At # this time, there's no way to determine this information from # the configuration data stored in the Python installation, so @@ -285,10 +286,23 @@ class UnixCCompiler(CCompiler): return "+s -L" + dir elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] - elif compiler[:3] == "gcc" or compiler[:3] == "g++": - return "-Wl,-R" + dir else: - return "-R" + dir + 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 + 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 |