Commits

Anonymous committed c6af145

[svn r81662] 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.

  • Participants
  • Parent commits d0e06be

Comments (0)

Files changed (1)

File Lib/distutils/unixccompiler.py

   * link shared library handled by 'cc -shared'
 """
 
-__revision__ = "$Id: unixccompiler.py 80982 2010-05-08 15:23:57Z antoine.pitrou $"
+__revision__ = "$Id: unixccompiler.py 81662 2010-06-03 09:47:21Z ronald.oussoren $"
 
-import os, sys
+import os, sys, re
 from types import StringType, NoneType
 
 from distutils import sysconfig
         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