Issue #14499: Fix several problems with OS X universal build support:

1. ppc arch detection for extension module builds broke with Xcode 5
    2. ppc arch detection in configure did not work on OS X 10.4
    3. -sysroot and -arch flags were unnecessarily duplicated
    4. there was no obvious way to configure an intel-32 only build.
This commit is contained in:
Ned Deily 2013-10-18 21:09:56 -07:00
parent ea41d5f27c
commit 87adb6ef38
5 changed files with 265 additions and 241 deletions

View File

@ -235,13 +235,19 @@ def _remove_unsupported_archs(_config_vars):
if re.search('-arch\s+ppc', _config_vars['CFLAGS']) is not None: if re.search('-arch\s+ppc', _config_vars['CFLAGS']) is not None:
# NOTE: Cannot use subprocess here because of bootstrap # NOTE: Cannot use subprocess here because of bootstrap
# issues when building Python itself # issues when building Python itself
status = os.system("'%s' -arch ppc -x c /dev/null 2>/dev/null"%( status = os.system(
_config_vars['CC'].replace("'", "'\"'\"'"),)) """echo 'int main{};' | """
# The Apple compiler drivers return status 255 if no PPC """'%s' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/null"""
if (status >> 8) == 255: %(_config_vars['CC'].replace("'", "'\"'\"'"),))
# Compiler doesn't support PPC, remove the related if status:
# '-arch' flags if not explicitly overridden by an # The compile failed for some reason. Because of differences
# environment variable # across Xcode and compiler versions, there is no reliable way
# to be sure why it failed. Assume here it was due to lack of
# PPC support and remove the related '-arch' flags from each
# config variables not explicitly overriden by an environment
# variable. If the error was for some other reason, we hope the
# failure will show up again when trying to compile an extension
# module.
for cv in _UNIVERSAL_CONFIG_VARS: for cv in _UNIVERSAL_CONFIG_VARS:
if cv in _config_vars and cv not in os.environ: if cv in _config_vars and cv not in os.environ:
flags = _config_vars[cv] flags = _config_vars[cv]

View File

@ -7,7 +7,7 @@ Python on Mac OS X README
Ronald Oussoren (2010-04), Ronald Oussoren (2010-04),
Ned Deily (2012-06) Ned Deily (2012-06)
:Version: 3.3.0 :Version: 3.4.0
This document provides a quick overview of some Mac OS X specific features in This document provides a quick overview of some Mac OS X specific features in
the Python distribution. the Python distribution.
@ -99,6 +99,8 @@ values are available:
* ``intel``: ``i386``, ``x86_64`` * ``intel``: ``i386``, ``x86_64``
* ``intel-32``: ``i386``
* ``32-bit``: ``ppc``, ``i386`` * ``32-bit``: ``ppc``, ``i386``
* ``3-way``: ``i386``, ``x86_64``, ``ppc`` * ``3-way``: ``i386``, ``x86_64``, ``ppc``
@ -125,7 +127,7 @@ following combinations of SDKs and universal-archs flavors are available:
* 10.7 and 10.8 SDKs with Xcode 4 support ``intel`` only * 10.7 and 10.8 SDKs with Xcode 4 support ``intel`` only
The makefile for a framework build will also install ``python3.3-32`` The makefile for a framework build will also install ``python3.4-32``
binaries when the universal architecture includes at least one 32-bit binaries when the universal architecture includes at least one 32-bit
architecture (that is, for all flavors but ``64-bit``). architecture (that is, for all flavors but ``64-bit``).
@ -149,7 +151,7 @@ Using ``arch`` is not a perfect solution as the selected architecture will
not automatically carry through to subprocesses launched by programs and tests not automatically carry through to subprocesses launched by programs and tests
under that Python. If you want to ensure that Python interpreters launched in under that Python. If you want to ensure that Python interpreters launched in
subprocesses also run in 32-bit-mode if the main interpreter does, use subprocesses also run in 32-bit-mode if the main interpreter does, use
a ``python3.3-32`` binary and use the value of ``sys.executable`` as the a ``python3.4-32`` binary and use the value of ``sys.executable`` as the
``subprocess`` ``Popen`` executable value. ``subprocess`` ``Popen`` executable value.
@ -169,7 +171,7 @@ will have to do the work yourself if you really want this.
A second reason for using frameworks is that they put Python-related items in A second reason for using frameworks is that they put Python-related items in
only two places: "/Library/Framework/Python.framework" and only two places: "/Library/Framework/Python.framework" and
"/Applications/Python <VERSION>" where ``<VERSION>`` can be e.g. "3.3", "/Applications/Python <VERSION>" where ``<VERSION>`` can be e.g. "3.4",
"2.7", etc. This simplifies matters for users installing "2.7", etc. This simplifies matters for users installing
Python from a binary distribution if they want to get rid of it again. Moreover, Python from a binary distribution if they want to get rid of it again. Moreover,
due to the way frameworks work, a user without admin privileges can install a due to the way frameworks work, a user without admin privileges can install a

View File

@ -190,6 +190,12 @@ Build
- Issue #15663: Update OS X 10.6+ installer to use Tcl/Tk 8.5.15. - Issue #15663: Update OS X 10.6+ installer to use Tcl/Tk 8.5.15.
- Issue #14499: Fix several problems with OS X universal build support:
1. ppc arch detection for extension module builds broke with Xcode 5
2. ppc arch detection in configure did not work on OS X 10.4
3. -sysroot and -arch flags were unnecessarily duplicated
4. there was no obvious way to configure an intel-32 only build.
What's New in Python 3.4.0 Alpha 3? What's New in Python 3.4.0 Alpha 3?
=================================== ===================================

121
configure vendored
View File

@ -1455,7 +1455,7 @@ Optional Packages:
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-universal-archs=ARCH --with-universal-archs=ARCH
select architectures for universal build ("32-bit", select architectures for universal build ("32-bit",
"64-bit", "3-way", "intel" or "all") "64-bit", "3-way", "intel", "intel-32", or "all")
--with-framework-name=FRAMEWORK --with-framework-name=FRAMEWORK
specify an alternate name of the framework built specify an alternate name of the framework built
with --enable-framework with --enable-framework
@ -3037,7 +3037,7 @@ if test "${enable_universalsdk+set}" = set; then :
# Locate the best usable SDK, see Mac/README.txt for more # Locate the best usable SDK, see Mac/README.txt for more
# information # information
enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`" enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
if test -z "${enableval}" if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null )
then then
enableval=/Developer/SDKs/MacOSX10.4u.sdk enableval=/Developer/SDKs/MacOSX10.4u.sdk
if test ! -d "${enableval}" if test ! -d "${enableval}"
@ -3080,6 +3080,7 @@ fi
ARCH_RUN_32BIT=""
# For backward compatibility reasons we prefer to select '32-bit' if available, # For backward compatibility reasons we prefer to select '32-bit' if available,
# otherwise use 'intel' # otherwise use 'intel'
@ -3088,7 +3089,7 @@ if test "`uname -s`" = "Darwin"
then then
if test -n "${UNIVERSALSDK}" if test -n "${UNIVERSALSDK}"
then then
if test -z "`/usr/bin/file "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`" if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
then then
UNIVERSAL_ARCHS="intel" UNIVERSAL_ARCHS="intel"
fi fi
@ -3102,19 +3103,18 @@ $as_echo_n "checking for --with-universal-archs... " >&6; }
# Check whether --with-universal-archs was given. # Check whether --with-universal-archs was given.
if test "${with_universal_archs+set}" = set; then : if test "${with_universal_archs+set}" = set; then :
withval=$with_universal_archs; withval=$with_universal_archs;
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
$as_echo "$withval" >&6; }
UNIVERSAL_ARCHS="$withval" UNIVERSAL_ARCHS="$withval"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSAL_ARCHS}" >&5
$as_echo "${UNIVERSAL_ARCHS}" >&6; }
fi fi
if test -n "${UNIVERSALSDK}"
then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSAL_ARCHS}" >&5
$as_echo "${UNIVERSAL_ARCHS}" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
# Check whether --with-framework-name was given. # Check whether --with-framework-name was given.
@ -6441,6 +6441,7 @@ $as_echo "$ac_cv_declaration_after_statement_warning" >&6; }
SCO_SV*) SCO_SV*)
BASECFLAGS="$BASECFLAGS -m486 -DSCO5" BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
;; ;;
# is there any other compiler on Darwin besides gcc? # is there any other compiler on Darwin besides gcc?
Darwin*) Darwin*)
# -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
@ -6462,77 +6463,84 @@ $as_echo_n "checking which compiler should be used... " >&6; }
$as_echo "$CC" >&6; } $as_echo "$CC" >&6; }
fi fi
if test "${enable_universalsdk}"
if test "${enable_universalsdk}"; then then
UNIVERSAL_ARCH_FLAGS="" case "$UNIVERSAL_ARCHS" in
if test "$UNIVERSAL_ARCHS" = "32-bit" ; then 32-bit)
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
ARCH_RUN_32BIT=""
LIPO_32BIT_FLAGS="" LIPO_32BIT_FLAGS=""
elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then ARCH_RUN_32BIT=""
;;
64-bit)
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
LIPO_32BIT_FLAGS="" LIPO_32BIT_FLAGS=""
ARCH_RUN_32BIT="true" ARCH_RUN_32BIT="true"
;;
elif test "$UNIVERSAL_ARCHS" = "all" ; then all)
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
;;
elif test "$UNIVERSAL_ARCHS" = "intel" ; then intel)
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
LIPO_32BIT_FLAGS="-extract i386" LIPO_32BIT_FLAGS="-extract i386"
ARCH_RUN_32BIT="/usr/bin/arch -i386" ARCH_RUN_32BIT="/usr/bin/arch -i386"
;;
elif test "$UNIVERSAL_ARCHS" = "3-way" ; then intel-32)
UNIVERSAL_ARCH_FLAGS="-arch i386"
LIPO_32BIT_FLAGS=""
ARCH_RUN_32BIT=""
;;
3-way)
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
;;
else *)
as_fn_error $? "proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way" "$LINENO" 5 as_fn_error $? "proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way" "$LINENO" 5
;;
fi esac
CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
if test "${UNIVERSALSDK}" != "/" if test "${UNIVERSALSDK}" != "/"
then then
CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}" CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
fi fi
fi fi
# Calculate the right deployment target for this build. # Calculate an appropriate deployment target for this build:
# The deployment target value is used explicitly to enable certain
# features are enabled (such as builtin libedit support for readline)
# through the use of Apple's Availabiliy Macros and is used as a
# component of the string returned by distutils.get_platform().
# #
# Use the value from:
# 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
# 2. the operating system version of the build machine if >= 10.6
# 3. If running on OS X 10.3 through 10.5, use the legacy tests
# below to pick either 10.3, 10.4, or 10.5 as the target.
# 4. If we are running on OS X 10.2 or earlier, good luck!
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which MACOSX_DEPLOYMENT_TARGET to use" >&5
$as_echo_n "checking which MACOSX_DEPLOYMENT_TARGET to use... " >&6; }
cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'` cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'`
if test ${cur_target} '>' 10.2 && \ if test ${cur_target} '>' 10.2 && \
test ${cur_target} '<' 10.6 test ${cur_target} '<' 10.6
then then
cur_target=10.3 cur_target=10.3
if test ${enable_universalsdk}; then if test ${enable_universalsdk}
if test "${UNIVERSAL_ARCHS}" = "all"; then then
# Ensure that the default platform for a case "$UNIVERSAL_ARCHS" in
# 4-way universal build is OSX 10.5, all|3-way|intel|64-bit)
# that's the first OS release where # These configurations were first supported in 10.5
# 4-way builds make sense.
cur_target='10.5' cur_target='10.5'
;;
elif test "${UNIVERSAL_ARCHS}" = "3-way"; then esac
cur_target='10.5'
elif test "${UNIVERSAL_ARCHS}" = "intel"; then
cur_target='10.5'
elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
cur_target='10.5'
fi
else else
if test `/usr/bin/arch` = "i386"; then if test `/usr/bin/arch` = "i386"
# On Intel macs default to a deployment then
# target of 10.4, that's the first OSX # 10.4 was the first release to support Intel archs
# release with Intel support.
cur_target="10.4" cur_target="10.4"
fi fi
fi fi
@ -6546,7 +6554,10 @@ $as_echo "$CC" >&6; }
MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
export MACOSX_DEPLOYMENT_TARGET export MACOSX_DEPLOYMENT_TARGET
EXPORT_MACOSX_DEPLOYMENT_TARGET='' EXPORT_MACOSX_DEPLOYMENT_TARGET=''
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACOSX_DEPLOYMENT_TARGET" >&5
$as_echo "$MACOSX_DEPLOYMENT_TARGET" >&6; }
# end of Darwin* tests
;; ;;
esac esac
;; ;;
@ -8285,7 +8296,6 @@ case $ac_sys_system/$ac_sys_release in
esac esac
ARCH_RUN_32BIT=""
case $ac_sys_system/$ac_sys_release in case $ac_sys_system/$ac_sys_release in
Darwin/[01567]\..*) Darwin/[01567]\..*)
@ -8357,14 +8367,12 @@ fi
;; ;;
esac esac
#ARCH_RUN_32BIT="true"
fi fi
LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}" LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
esac esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5
$as_echo_n "checking for --enable-framework... " >&6; } $as_echo_n "checking for --enable-framework... " >&6; }
if test "$enable_framework" if test "$enable_framework"
@ -8492,9 +8500,6 @@ then
if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
then then
if test "${enable_universalsdk}"; then
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
fi
LDSHARED='$(CC) -bundle -undefined dynamic_lookup' LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
BLDSHARED="$LDSHARED" BLDSHARED="$LDSHARED"

View File

@ -152,7 +152,7 @@ AC_ARG_ENABLE(universalsdk,
# Locate the best usable SDK, see Mac/README.txt for more # Locate the best usable SDK, see Mac/README.txt for more
# information # information
enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`" enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
if test -z "${enableval}" if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null )
then then
enableval=/Developer/SDKs/MacOSX10.4u.sdk enableval=/Developer/SDKs/MacOSX10.4u.sdk
if test ! -d "${enableval}" if test ! -d "${enableval}"
@ -189,6 +189,7 @@ fi
AC_SUBST(UNIVERSALSDK) AC_SUBST(UNIVERSALSDK)
AC_SUBST(ARCH_RUN_32BIT) AC_SUBST(ARCH_RUN_32BIT)
ARCH_RUN_32BIT=""
# For backward compatibility reasons we prefer to select '32-bit' if available, # For backward compatibility reasons we prefer to select '32-bit' if available,
# otherwise use 'intel' # otherwise use 'intel'
@ -197,7 +198,7 @@ if test "`uname -s`" = "Darwin"
then then
if test -n "${UNIVERSALSDK}" if test -n "${UNIVERSALSDK}"
then then
if test -z "`/usr/bin/file "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`" if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
then then
UNIVERSAL_ARCHS="intel" UNIVERSAL_ARCHS="intel"
fi fi
@ -207,16 +208,17 @@ fi
AC_SUBST(LIPO_32BIT_FLAGS) AC_SUBST(LIPO_32BIT_FLAGS)
AC_MSG_CHECKING(for --with-universal-archs) AC_MSG_CHECKING(for --with-universal-archs)
AC_ARG_WITH(universal-archs, AC_ARG_WITH(universal-archs,
AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")]), AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel", "intel-32", or "all")]),
[ [
AC_MSG_RESULT($withval)
UNIVERSAL_ARCHS="$withval" UNIVERSAL_ARCHS="$withval"
], ],
[ [])
if test -n "${UNIVERSALSDK}"
then
AC_MSG_RESULT(${UNIVERSAL_ARCHS}) AC_MSG_RESULT(${UNIVERSAL_ARCHS})
]) else
AC_MSG_RESULT(no)
fi
AC_ARG_WITH(framework-name, AC_ARG_WITH(framework-name,
AS_HELP_STRING([--with-framework-name=FRAMEWORK], AS_HELP_STRING([--with-framework-name=FRAMEWORK],
@ -1219,6 +1221,7 @@ yes)
SCO_SV*) SCO_SV*)
BASECFLAGS="$BASECFLAGS -m486 -DSCO5" BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
;; ;;
# is there any other compiler on Darwin besides gcc? # is there any other compiler on Darwin besides gcc?
Darwin*) Darwin*)
# -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
@ -1238,77 +1241,83 @@ yes)
AC_MSG_RESULT($CC) AC_MSG_RESULT($CC)
fi fi
if test "${enable_universalsdk}"
if test "${enable_universalsdk}"; then then
UNIVERSAL_ARCH_FLAGS="" case "$UNIVERSAL_ARCHS" in
if test "$UNIVERSAL_ARCHS" = "32-bit" ; then 32-bit)
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
ARCH_RUN_32BIT=""
LIPO_32BIT_FLAGS="" LIPO_32BIT_FLAGS=""
elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then ARCH_RUN_32BIT=""
;;
64-bit)
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
LIPO_32BIT_FLAGS="" LIPO_32BIT_FLAGS=""
ARCH_RUN_32BIT="true" ARCH_RUN_32BIT="true"
;;
elif test "$UNIVERSAL_ARCHS" = "all" ; then all)
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
;;
elif test "$UNIVERSAL_ARCHS" = "intel" ; then intel)
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
LIPO_32BIT_FLAGS="-extract i386" LIPO_32BIT_FLAGS="-extract i386"
ARCH_RUN_32BIT="/usr/bin/arch -i386" ARCH_RUN_32BIT="/usr/bin/arch -i386"
;;
elif test "$UNIVERSAL_ARCHS" = "3-way" ; then intel-32)
UNIVERSAL_ARCH_FLAGS="-arch i386"
LIPO_32BIT_FLAGS=""
ARCH_RUN_32BIT=""
;;
3-way)
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
;;
else *)
AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way]) AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
;;
fi esac
CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
if test "${UNIVERSALSDK}" != "/" if test "${UNIVERSALSDK}" != "/"
then then
CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}" CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
fi fi
fi fi
# Calculate the right deployment target for this build. # Calculate an appropriate deployment target for this build:
# The deployment target value is used explicitly to enable certain
# features are enabled (such as builtin libedit support for readline)
# through the use of Apple's Availabiliy Macros and is used as a
# component of the string returned by distutils.get_platform().
# #
# Use the value from:
# 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
# 2. the operating system version of the build machine if >= 10.6
# 3. If running on OS X 10.3 through 10.5, use the legacy tests
# below to pick either 10.3, 10.4, or 10.5 as the target.
# 4. If we are running on OS X 10.2 or earlier, good luck!
AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'` cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
if test ${cur_target} '>' 10.2 && \ if test ${cur_target} '>' 10.2 && \
test ${cur_target} '<' 10.6 test ${cur_target} '<' 10.6
then then
cur_target=10.3 cur_target=10.3
if test ${enable_universalsdk}; then if test ${enable_universalsdk}
if test "${UNIVERSAL_ARCHS}" = "all"; then then
# Ensure that the default platform for a case "$UNIVERSAL_ARCHS" in
# 4-way universal build is OSX 10.5, all|3-way|intel|64-bit)
# that's the first OS release where # These configurations were first supported in 10.5
# 4-way builds make sense.
cur_target='10.5' cur_target='10.5'
;;
elif test "${UNIVERSAL_ARCHS}" = "3-way"; then esac
cur_target='10.5'
elif test "${UNIVERSAL_ARCHS}" = "intel"; then
cur_target='10.5'
elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
cur_target='10.5'
fi
else else
if test `/usr/bin/arch` = "i386"; then if test `/usr/bin/arch` = "i386"
# On Intel macs default to a deployment then
# target of 10.4, that's the first OSX # 10.4 was the first release to support Intel archs
# release with Intel support.
cur_target="10.4" cur_target="10.4"
fi fi
fi fi
@ -1322,7 +1331,9 @@ yes)
MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
export MACOSX_DEPLOYMENT_TARGET export MACOSX_DEPLOYMENT_TARGET
EXPORT_MACOSX_DEPLOYMENT_TARGET='' EXPORT_MACOSX_DEPLOYMENT_TARGET=''
AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
# end of Darwin* tests
;; ;;
esac esac
;; ;;
@ -1804,7 +1815,6 @@ case $ac_sys_system/$ac_sys_release in
esac esac
ARCH_RUN_32BIT=""
AC_SUBST(LIBTOOL_CRUFT) AC_SUBST(LIBTOOL_CRUFT)
case $ac_sys_system/$ac_sys_release in case $ac_sys_system/$ac_sys_release in
Darwin/@<:@01567@:>@\..*) Darwin/@<:@01567@:>@\..*)
@ -1861,14 +1871,12 @@ case $ac_sys_system/$ac_sys_release in
;; ;;
esac esac
#ARCH_RUN_32BIT="true"
fi fi
LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}" LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
esac esac
AC_MSG_CHECKING(for --enable-framework) AC_MSG_CHECKING(for --enable-framework)
if test "$enable_framework" if test "$enable_framework"
then then
@ -1988,9 +1996,6 @@ then
if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
then then
if test "${enable_universalsdk}"; then
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
fi
LDSHARED='$(CC) -bundle -undefined dynamic_lookup' LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
BLDSHARED="$LDSHARED" BLDSHARED="$LDSHARED"