summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorRonald Oussoren <ronaldoussoren@mac.com>2010-06-03 09:47:21 (GMT)
committerRonald Oussoren <ronaldoussoren@mac.com>2010-06-03 09:47:21 (GMT)
commit593e4ca7a5300752c1fe595c22caa859b7fcd5fb (patch)
tree259a43d26ac1a77a9d5a59ee5fe2bfd9c9b5b2e2 /Lib
parent52dcd4590652e3c6f57a94fb57a5522880b7d72b (diff)
downloadcpython-593e4ca7a5300752c1fe595c22caa859b7fcd5fb.zip
cpython-593e4ca7a5300752c1fe595c22caa859b7fcd5fb.tar.gz
cpython-593e4ca7a5300752c1fe595c22caa859b7fcd5fb.tar.bz2
Fix for issue #7724: ensure that distutils and python's own setup.py
honor the MacOSX SDK when one is specified. This is needed to be able to build using the 10.4u SDK while running on OSX 10.6. This is a fixed version of the patch in r80963, I've tested this patch on OSX and Linux.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/distutils/unixccompiler.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
index 783d4dc..b76f0d4 100644
--- a/Lib/distutils/unixccompiler.py
+++ b/Lib/distutils/unixccompiler.py
@@ -15,7 +15,7 @@ the "typical" Unix-style command-line C compiler:
__revision__ = "$Id$"
-import os, sys
+import os, sys, re
from types import StringType, NoneType
from distutils import sysconfig
@@ -305,10 +305,30 @@ class UnixCCompiler(CCompiler):
dylib_f = self.library_filename(lib, lib_type='dylib')
static_f = self.library_filename(lib, lib_type='static')
+ if sys.platform == 'darwin':
+ # On OSX users can specify an alternate SDK using
+ # '-isysroot', calculate the SDK root if it is specified
+ # (and use it further on)
+ cflags = sysconfig.get_config_var('CFLAGS')
+ m = re.search(r'-isysroot\s+(\S+)', cflags)
+ if m is None:
+ sysroot = '/'
+ else:
+ sysroot = m.group(1)
+
+
+
for dir in dirs:
shared = os.path.join(dir, shared_f)
dylib = os.path.join(dir, dylib_f)
static = os.path.join(dir, static_f)
+
+ if sys.platform == 'darwin' and (
+ dir.startswith('/System/') or dir.startswith('/usr/')):
+ shared = os.path.join(sysroot, dir[1:], shared_f)
+ dylib = os.path.join(sysroot, dir[1:], dylib_f)
+ static = os.path.join(sysroot, dir[1:], static_f)
+
# We're second-guessing the linker here, with not much hard
# data to go on: GCC seems to prefer the shared library, so I'm
# assuming that *all* Unix C compilers do. And of course I'm