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.
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
index c70a3cc..5d45faa 100644
--- a/Lib/distutils/unixccompiler.py
+++ b/Lib/distutils/unixccompiler.py
@@ -83,9 +83,8 @@
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 @@
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