summaryrefslogtreecommitdiff
path: root/unixccompiler.py
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2009-05-09 11:55:12 +0000
committerTarek Ziadé <ziade.tarek@gmail.com>2009-05-09 11:55:12 +0000
commit6625a07e76fff84d1f3ed50ded7d1861744ffce9 (patch)
treea14fb78c52271ccb044ba45d012e19c40c110fdb /unixccompiler.py
parent8faf60dd1c9f552ad552a6267ec8bcb894bd8792 (diff)
downloadpython-setuptools-git-6625a07e76fff84d1f3ed50ded7d1861744ffce9.tar.gz
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 'unixccompiler.py')
-rw-r--r--unixccompiler.py24
1 files changed, 19 insertions, 5 deletions
diff --git a/unixccompiler.py b/unixccompiler.py
index d65ab321..c11544d8 100644
--- a/unixccompiler.py
+++ b/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