[Python-checkins] r72504 - in python/branches/py3k: Lib/distutils/tests/test_build_ext.py Lib/distutils/tests/test_unixccompiler.py Lib/distutils/unixccompiler.py Makefile.pre.in configure configure.in

tarek.ziade python-checkins at python.org
Sat May 9 13:55:12 CEST 2009


Author: tarek.ziade
Date: Sat May 9 13:55:12 2009
New Revision: 72504
Log:
Merged revisions 72497 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk
........
 r72497 | tarek.ziade | 2009年05月09日 10:28:53 +0200 (2009年5月09日) | 1 line
 
 Fixed Issue 5900: distutils.command.build_ext - Ensure RUNPATH is added to extension modules with RPATH if GNU ld is used
........
Added:
 python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py
 - copied unchanged from r72497, /python/trunk/Lib/distutils/tests/test_unixccompiler.py
Modified:
 python/branches/py3k/ (props changed)
 python/branches/py3k/Lib/distutils/tests/test_build_ext.py
 python/branches/py3k/Lib/distutils/unixccompiler.py
 python/branches/py3k/Makefile.pre.in
 python/branches/py3k/configure
 python/branches/py3k/configure.in
Modified: python/branches/py3k/Lib/distutils/tests/test_build_ext.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_build_ext.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_build_ext.py	Sat May 9 13:55:12 2009
@@ -125,7 +125,7 @@
 dist = Distribution({'name': 'xx'})
 cmd = build_ext(dist)
 
- # making sure the suer option is there
+ # making sure the user option is there
 options = [name for name, short, lable in
 cmd.user_options]
 self.assert_('user' in options)
@@ -145,6 +145,7 @@
 # see if include_dirs and library_dirs
 # were set
 self.assert_(lib in cmd.library_dirs)
+ self.assert_(lib in cmd.rpath)
 self.assert_(incl in cmd.include_dirs)
 
 def test_optional_extension(self):
Modified: python/branches/py3k/Lib/distutils/unixccompiler.py
==============================================================================
--- python/branches/py3k/Lib/distutils/unixccompiler.py	(original)
+++ python/branches/py3k/Lib/distutils/unixccompiler.py	Sat May 9 13:55:12 2009
@@ -271,8 +271,9 @@
 # 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 @@
 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
Modified: python/branches/py3k/Makefile.pre.in
==============================================================================
--- python/branches/py3k/Makefile.pre.in	(original)
+++ python/branches/py3k/Makefile.pre.in	Sat May 9 13:55:12 2009
@@ -36,6 +36,8 @@
 RANLIB=		@RANLIB@
 SVNVERSION=	@SVNVERSION@
 
+GNULD= @GNULD@
+
 # Shell used by make (some versions default to the login shell, which is bad)
 SHELL=		/bin/sh
 
Modified: python/branches/py3k/configure
==============================================================================
--- python/branches/py3k/configure	(original)
+++ python/branches/py3k/configure	Sat May 9 13:55:12 2009
@@ -693,6 +693,7 @@
 INSTSONAME
 RUNSHARED
 LINKCC
+GNULD
 RANLIB
 AR
 ARFLAGS
@@ -3949,6 +3950,27 @@
 { echo "$as_me:$LINENO: result: $LINKCC" >&5
 echo "${ECHO_T}$LINKCC" >&6; }
 
+# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
+# make sure we default having it set to "no": this is used by
+# distutils.unixccompiler to know if it should add --enable-new-dtags
+# to linker command lines, and failing to detect GNU ld simply results
+# in the same bahaviour as before.
+
+{ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+ac_prog=ld
+if test "$GCC" = yes; then
+ ac_prog=`$CC -print-prog-name=ld`
+fi
+case `"$ac_prog" -V 2>&1 < /dev/null` in
+ *GNU*)
+ GNULD=yes;;
+ *)
+ GNULD=no;;
+esac
+{ echo "$as_me:$LINENO: result: $GNULD" >&5
+echo "${ECHO_T}$GNULD" >&6; }
+
 { echo "$as_me:$LINENO: checking for --enable-shared" >&5
 echo $ECHO_N "checking for --enable-shared... $ECHO_C" >&6; }
 # Check whether --enable-shared was given.
@@ -26096,6 +26118,7 @@
 INSTSONAME!$INSTSONAME$ac_delim
 RUNSHARED!$RUNSHARED$ac_delim
 LINKCC!$LINKCC$ac_delim
+GNULD!$GNULD$ac_delim
 RANLIB!$RANLIB$ac_delim
 AR!$AR$ac_delim
 ARFLAGS!$ARFLAGS$ac_delim
@@ -26115,7 +26138,6 @@
 CCSHARED!$CCSHARED$ac_delim
 LINKFORSHARED!$LINKFORSHARED$ac_delim
 CFLAGSFORSHARED!$CFLAGSFORSHARED$ac_delim
-SHLIBS!$SHLIBS$ac_delim
 _ACEOF
 
 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -26157,6 +26179,7 @@
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
 cat >conf$$subs.sed <<_ACEOF
+SHLIBS!$SHLIBS$ac_delim
 USE_SIGNAL_MODULE!$USE_SIGNAL_MODULE$ac_delim
 SIGNAL_OBJS!$SIGNAL_OBJS$ac_delim
 USE_THREAD_MODULE!$USE_THREAD_MODULE$ac_delim
@@ -26179,7 +26202,7 @@
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 20; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 21; then
 break
 elif $ac_last_try; then
 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
Modified: python/branches/py3k/configure.in
==============================================================================
--- python/branches/py3k/configure.in	(original)
+++ python/branches/py3k/configure.in	Sat May 9 13:55:12 2009
@@ -606,6 +606,25 @@
 fi
 AC_MSG_RESULT($LINKCC)
 
+# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
+# make sure we default having it set to "no": this is used by
+# distutils.unixccompiler to know if it should add --enable-new-dtags
+# to linker command lines, and failing to detect GNU ld simply results
+# in the same bahaviour as before.
+AC_SUBST(GNULD)
+AC_MSG_CHECKING(for GNU ld)
+ac_prog=ld
+if test "$GCC" = yes; then
+ ac_prog=`$CC -print-prog-name=ld`
+fi
+case `"$ac_prog" -V 2>&1 < /dev/null` in
+ *GNU*)
+ GNULD=yes;;
+ *)
+ GNULD=no;;
+esac
+AC_MSG_RESULT($GNULD)
+
 AC_MSG_CHECKING(for --enable-shared)
 AC_ARG_ENABLE(shared,
 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /