Issue #13590: Improve support for OS X Xcode 4:

- Try to avoid building Python or extension modules with problematic
  llvm-gcc compiler.
- Since Xcode 4 removes ppc support, extension module builds now
  check for ppc compiler support and automatically remove ppc and
  ppc64 archs when not available.
- Since Xcode 4 no longer install SDKs in default locations,
  extension module builds now revert to using installed headers
  and libs if the SDK used to build the interpreter is not
  available.
- Update ./configure to use better defaults for universal builds;
  in particular, --enable-universalsdk=yes uses the Xcode default
  SDK and --with-universal-archs now defaults to "intel" if ppc
  not available.
This commit is contained in:
Ned Deily 2012-06-23 16:02:19 -07:00
parent 88bc0d2640
commit cbfb9a56e6
5 changed files with 493 additions and 172 deletions

View file

@ -83,9 +83,8 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
except ValueError:
pass
# Check if the SDK that is used during compilation actually exists,
# the universal build requires the usage of a universal SDK and not all
# users have that installed by default.
# Check if the SDK that is used during compilation actually exists.
# If not, revert to using the installed headers and hope for the best.
sysroot = None
if '-isysroot' in cc_args:
idx = cc_args.index('-isysroot')
@ -97,7 +96,21 @@ def _darwin_compiler_fixup(compiler_so, cc_args):
if sysroot and not os.path.isdir(sysroot):
log.warn("Compiling with an SDK that doesn't seem to exist: %s",
sysroot)
log.warn("Please check your Xcode installation")
log.warn("Attempting to compile without the SDK")
while True:
try:
index = cc_args.index('-isysroot')
# Strip this argument and the next one:
del cc_args[index:index+2]
except ValueError:
break
while True:
try:
index = compiler_so.index('-isysroot')
# Strip this argument and the next one:
del compiler_so[index:index+2]
except ValueError:
break
return compiler_so