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:
parent
ea41d5f27c
commit
87adb6ef38
|
@ -235,13 +235,19 @@ def _remove_unsupported_archs(_config_vars):
|
|||
if re.search('-arch\s+ppc', _config_vars['CFLAGS']) is not None:
|
||||
# NOTE: Cannot use subprocess here because of bootstrap
|
||||
# issues when building Python itself
|
||||
status = os.system("'%s' -arch ppc -x c /dev/null 2>/dev/null"%(
|
||||
_config_vars['CC'].replace("'", "'\"'\"'"),))
|
||||
# The Apple compiler drivers return status 255 if no PPC
|
||||
if (status >> 8) == 255:
|
||||
# Compiler doesn't support PPC, remove the related
|
||||
# '-arch' flags if not explicitly overridden by an
|
||||
# environment variable
|
||||
status = os.system(
|
||||
"""echo 'int main{};' | """
|
||||
"""'%s' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/null"""
|
||||
%(_config_vars['CC'].replace("'", "'\"'\"'"),))
|
||||
if status:
|
||||
# The compile failed for some reason. Because of differences
|
||||
# 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:
|
||||
if cv in _config_vars and cv not in os.environ:
|
||||
flags = _config_vars[cv]
|
||||
|
|
10
Mac/README
10
Mac/README
|
@ -7,7 +7,7 @@ Python on Mac OS X README
|
|||
Ronald Oussoren (2010-04),
|
||||
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
|
||||
the Python distribution.
|
||||
|
@ -99,6 +99,8 @@ values are available:
|
|||
|
||||
* ``intel``: ``i386``, ``x86_64``
|
||||
|
||||
* ``intel-32``: ``i386``
|
||||
|
||||
* ``32-bit``: ``ppc``, ``i386``
|
||||
|
||||
* ``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
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
|
@ -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
|
||||
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
|
||||
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
|
||||
|
|
|
@ -190,6 +190,12 @@ Build
|
|||
|
||||
- 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?
|
||||
===================================
|
||||
|
||||
|
|
|
@ -1455,7 +1455,7 @@ Optional Packages:
|
|||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||
--with-universal-archs=ARCH
|
||||
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
|
||||
specify an alternate name of the framework built
|
||||
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
|
||||
# information
|
||||
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
|
||||
enableval=/Developer/SDKs/MacOSX10.4u.sdk
|
||||
if test ! -d "${enableval}"
|
||||
|
@ -3080,6 +3080,7 @@ fi
|
|||
|
||||
|
||||
|
||||
ARCH_RUN_32BIT=""
|
||||
|
||||
# For backward compatibility reasons we prefer to select '32-bit' if available,
|
||||
# otherwise use 'intel'
|
||||
|
@ -3088,7 +3089,7 @@ if test "`uname -s`" = "Darwin"
|
|||
then
|
||||
if test -n "${UNIVERSALSDK}"
|
||||
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
|
||||
UNIVERSAL_ARCHS="intel"
|
||||
fi
|
||||
|
@ -3102,19 +3103,18 @@ $as_echo_n "checking for --with-universal-archs... " >&6; }
|
|||
# Check whether --with-universal-archs was given.
|
||||
if test "${with_universal_archs+set}" = set; then :
|
||||
withval=$with_universal_archs;
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
|
||||
$as_echo "$withval" >&6; }
|
||||
UNIVERSAL_ARCHS="$withval"
|
||||
|
||||
else
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSAL_ARCHS}" >&5
|
||||
$as_echo "${UNIVERSAL_ARCHS}" >&6; }
|
||||
|
||||
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.
|
||||
|
@ -6441,113 +6441,124 @@ $as_echo "$ac_cv_declaration_after_statement_warning" >&6; }
|
|||
SCO_SV*)
|
||||
BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
|
||||
;;
|
||||
# is there any other compiler on Darwin besides gcc?
|
||||
Darwin*)
|
||||
# -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
|
||||
# used to be here, but non-Apple gcc doesn't accept them.
|
||||
if test "${CC}" = gcc
|
||||
then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which compiler should be used" >&5
|
||||
|
||||
# is there any other compiler on Darwin besides gcc?
|
||||
Darwin*)
|
||||
# -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
|
||||
# used to be here, but non-Apple gcc doesn't accept them.
|
||||
if test "${CC}" = gcc
|
||||
then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which compiler should be used" >&5
|
||||
$as_echo_n "checking which compiler should be used... " >&6; }
|
||||
case "${UNIVERSALSDK}" in
|
||||
*/MacOSX10.4u.sdk)
|
||||
# Build using 10.4 SDK, force usage of gcc when the
|
||||
# compiler is gcc, otherwise the user will get very
|
||||
# confusing error messages when building on OSX 10.6
|
||||
CC=gcc-4.0
|
||||
CPP=cpp-4.0
|
||||
;;
|
||||
esac
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
|
||||
case "${UNIVERSALSDK}" in
|
||||
*/MacOSX10.4u.sdk)
|
||||
# Build using 10.4 SDK, force usage of gcc when the
|
||||
# compiler is gcc, otherwise the user will get very
|
||||
# confusing error messages when building on OSX 10.6
|
||||
CC=gcc-4.0
|
||||
CPP=cpp-4.0
|
||||
;;
|
||||
esac
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
|
||||
$as_echo "$CC" >&6; }
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "${enable_universalsdk}"
|
||||
then
|
||||
case "$UNIVERSAL_ARCHS" in
|
||||
32-bit)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
|
||||
LIPO_32BIT_FLAGS=""
|
||||
ARCH_RUN_32BIT=""
|
||||
;;
|
||||
64-bit)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS=""
|
||||
ARCH_RUN_32BIT="true"
|
||||
;;
|
||||
all)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
;;
|
||||
intel)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386"
|
||||
;;
|
||||
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"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
;;
|
||||
*)
|
||||
as_fn_error $? "proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way" "$LINENO" 5
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "${enable_universalsdk}"; then
|
||||
UNIVERSAL_ARCH_FLAGS=""
|
||||
if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
|
||||
ARCH_RUN_32BIT=""
|
||||
LIPO_32BIT_FLAGS=""
|
||||
elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS=""
|
||||
ARCH_RUN_32BIT="true"
|
||||
CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
|
||||
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
|
||||
if test "${UNIVERSALSDK}" != "/"
|
||||
then
|
||||
CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
|
||||
fi
|
||||
fi
|
||||
|
||||
elif test "$UNIVERSAL_ARCHS" = "all" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
# 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!
|
||||
|
||||
elif test "$UNIVERSAL_ARCHS" = "intel" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386"
|
||||
{ $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/'`
|
||||
if test ${cur_target} '>' 10.2 && \
|
||||
test ${cur_target} '<' 10.6
|
||||
then
|
||||
cur_target=10.3
|
||||
if test ${enable_universalsdk}
|
||||
then
|
||||
case "$UNIVERSAL_ARCHS" in
|
||||
all|3-way|intel|64-bit)
|
||||
# These configurations were first supported in 10.5
|
||||
cur_target='10.5'
|
||||
;;
|
||||
esac
|
||||
else
|
||||
if test `/usr/bin/arch` = "i386"
|
||||
then
|
||||
# 10.4 was the first release to support Intel archs
|
||||
cur_target="10.4"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
|
||||
|
||||
elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
# Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
|
||||
# environment with a value that is the same as what we'll use
|
||||
# in the Makefile to ensure that we'll get the same compiler
|
||||
# environment during configure and build time.
|
||||
MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_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; }
|
||||
|
||||
else
|
||||
as_fn_error $? "proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way" "$LINENO" 5
|
||||
|
||||
fi
|
||||
|
||||
|
||||
CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
|
||||
if test "${UNIVERSALSDK}" != "/"
|
||||
then
|
||||
CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
|
||||
LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
|
||||
CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Calculate the right deployment target for this build.
|
||||
#
|
||||
cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'`
|
||||
if test ${cur_target} '>' 10.2 && \
|
||||
test ${cur_target} '<' 10.6
|
||||
then
|
||||
cur_target=10.3
|
||||
if test ${enable_universalsdk}; then
|
||||
if test "${UNIVERSAL_ARCHS}" = "all"; then
|
||||
# Ensure that the default platform for a
|
||||
# 4-way universal build is OSX 10.5,
|
||||
# that's the first OS release where
|
||||
# 4-way builds make sense.
|
||||
cur_target='10.5'
|
||||
|
||||
elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
|
||||
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
|
||||
if test `/usr/bin/arch` = "i386"; then
|
||||
# On Intel macs default to a deployment
|
||||
# target of 10.4, that's the first OSX
|
||||
# release with Intel support.
|
||||
cur_target="10.4"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
|
||||
|
||||
# Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
|
||||
# environment with a value that is the same as what we'll use
|
||||
# in the Makefile to ensure that we'll get the same compiler
|
||||
# environment during configure and build time.
|
||||
MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
|
||||
export MACOSX_DEPLOYMENT_TARGET
|
||||
EXPORT_MACOSX_DEPLOYMENT_TARGET=''
|
||||
|
||||
;;
|
||||
# end of Darwin* tests
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
|
@ -8285,7 +8296,6 @@ case $ac_sys_system/$ac_sys_release in
|
|||
esac
|
||||
|
||||
|
||||
ARCH_RUN_32BIT=""
|
||||
|
||||
case $ac_sys_system/$ac_sys_release in
|
||||
Darwin/[01567]\..*)
|
||||
|
@ -8357,14 +8367,12 @@ fi
|
|||
;;
|
||||
esac
|
||||
|
||||
#ARCH_RUN_32BIT="true"
|
||||
fi
|
||||
|
||||
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' -compatibility_version $(VERSION) -current_version $(VERSION)';;
|
||||
esac
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5
|
||||
$as_echo_n "checking for --enable-framework... " >&6; }
|
||||
if test "$enable_framework"
|
||||
|
@ -8492,9 +8500,6 @@ then
|
|||
|
||||
if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
|
||||
then
|
||||
if test "${enable_universalsdk}"; then
|
||||
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
|
||||
fi
|
||||
LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
|
||||
LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
|
||||
BLDSHARED="$LDSHARED"
|
||||
|
|
231
configure.ac
231
configure.ac
|
@ -152,7 +152,7 @@ AC_ARG_ENABLE(universalsdk,
|
|||
# Locate the best usable SDK, see Mac/README.txt for more
|
||||
# information
|
||||
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
|
||||
enableval=/Developer/SDKs/MacOSX10.4u.sdk
|
||||
if test ! -d "${enableval}"
|
||||
|
@ -189,6 +189,7 @@ fi
|
|||
AC_SUBST(UNIVERSALSDK)
|
||||
|
||||
AC_SUBST(ARCH_RUN_32BIT)
|
||||
ARCH_RUN_32BIT=""
|
||||
|
||||
# For backward compatibility reasons we prefer to select '32-bit' if available,
|
||||
# otherwise use 'intel'
|
||||
|
@ -197,7 +198,7 @@ if test "`uname -s`" = "Darwin"
|
|||
then
|
||||
if test -n "${UNIVERSALSDK}"
|
||||
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
|
||||
UNIVERSAL_ARCHS="intel"
|
||||
fi
|
||||
|
@ -207,16 +208,17 @@ fi
|
|||
AC_SUBST(LIPO_32BIT_FLAGS)
|
||||
AC_MSG_CHECKING(for --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"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(${UNIVERSAL_ARCHS})
|
||||
])
|
||||
|
||||
|
||||
[])
|
||||
if test -n "${UNIVERSALSDK}"
|
||||
then
|
||||
AC_MSG_RESULT(${UNIVERSAL_ARCHS})
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(framework-name,
|
||||
AS_HELP_STRING([--with-framework-name=FRAMEWORK],
|
||||
|
@ -1219,111 +1221,120 @@ yes)
|
|||
SCO_SV*)
|
||||
BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
|
||||
;;
|
||||
# is there any other compiler on Darwin besides gcc?
|
||||
Darwin*)
|
||||
# -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
|
||||
# used to be here, but non-Apple gcc doesn't accept them.
|
||||
if test "${CC}" = gcc
|
||||
then
|
||||
AC_MSG_CHECKING(which compiler should be used)
|
||||
case "${UNIVERSALSDK}" in
|
||||
*/MacOSX10.4u.sdk)
|
||||
# Build using 10.4 SDK, force usage of gcc when the
|
||||
# compiler is gcc, otherwise the user will get very
|
||||
# confusing error messages when building on OSX 10.6
|
||||
CC=gcc-4.0
|
||||
CPP=cpp-4.0
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT($CC)
|
||||
fi
|
||||
|
||||
# is there any other compiler on Darwin besides gcc?
|
||||
Darwin*)
|
||||
# -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
|
||||
# used to be here, but non-Apple gcc doesn't accept them.
|
||||
if test "${CC}" = gcc
|
||||
then
|
||||
AC_MSG_CHECKING(which compiler should be used)
|
||||
case "${UNIVERSALSDK}" in
|
||||
*/MacOSX10.4u.sdk)
|
||||
# Build using 10.4 SDK, force usage of gcc when the
|
||||
# compiler is gcc, otherwise the user will get very
|
||||
# confusing error messages when building on OSX 10.6
|
||||
CC=gcc-4.0
|
||||
CPP=cpp-4.0
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT($CC)
|
||||
fi
|
||||
|
||||
if test "${enable_universalsdk}"; then
|
||||
UNIVERSAL_ARCH_FLAGS=""
|
||||
if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
|
||||
ARCH_RUN_32BIT=""
|
||||
LIPO_32BIT_FLAGS=""
|
||||
elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS=""
|
||||
ARCH_RUN_32BIT="true"
|
||||
if test "${enable_universalsdk}"
|
||||
then
|
||||
case "$UNIVERSAL_ARCHS" in
|
||||
32-bit)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
|
||||
LIPO_32BIT_FLAGS=""
|
||||
ARCH_RUN_32BIT=""
|
||||
;;
|
||||
64-bit)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS=""
|
||||
ARCH_RUN_32BIT="true"
|
||||
;;
|
||||
all)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
;;
|
||||
intel)
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386"
|
||||
;;
|
||||
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"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
|
||||
;;
|
||||
esac
|
||||
|
||||
elif test "$UNIVERSAL_ARCHS" = "all" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
|
||||
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
|
||||
if test "${UNIVERSALSDK}" != "/"
|
||||
then
|
||||
CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
|
||||
fi
|
||||
fi
|
||||
|
||||
elif test "$UNIVERSAL_ARCHS" = "intel" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386"
|
||||
# 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!
|
||||
|
||||
elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
|
||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
|
||||
LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
|
||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||
AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
|
||||
cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
|
||||
if test ${cur_target} '>' 10.2 && \
|
||||
test ${cur_target} '<' 10.6
|
||||
then
|
||||
cur_target=10.3
|
||||
if test ${enable_universalsdk}
|
||||
then
|
||||
case "$UNIVERSAL_ARCHS" in
|
||||
all|3-way|intel|64-bit)
|
||||
# These configurations were first supported in 10.5
|
||||
cur_target='10.5'
|
||||
;;
|
||||
esac
|
||||
else
|
||||
if test `/usr/bin/arch` = "i386"
|
||||
then
|
||||
# 10.4 was the first release to support Intel archs
|
||||
cur_target="10.4"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
|
||||
|
||||
else
|
||||
AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
|
||||
# Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
|
||||
# environment with a value that is the same as what we'll use
|
||||
# in the Makefile to ensure that we'll get the same compiler
|
||||
# environment during configure and build time.
|
||||
MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
|
||||
export MACOSX_DEPLOYMENT_TARGET
|
||||
EXPORT_MACOSX_DEPLOYMENT_TARGET=''
|
||||
AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
|
||||
|
||||
fi
|
||||
|
||||
|
||||
CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
|
||||
if test "${UNIVERSALSDK}" != "/"
|
||||
then
|
||||
CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
|
||||
LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
|
||||
CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Calculate the right deployment target for this build.
|
||||
#
|
||||
cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
|
||||
if test ${cur_target} '>' 10.2 && \
|
||||
test ${cur_target} '<' 10.6
|
||||
then
|
||||
cur_target=10.3
|
||||
if test ${enable_universalsdk}; then
|
||||
if test "${UNIVERSAL_ARCHS}" = "all"; then
|
||||
# Ensure that the default platform for a
|
||||
# 4-way universal build is OSX 10.5,
|
||||
# that's the first OS release where
|
||||
# 4-way builds make sense.
|
||||
cur_target='10.5'
|
||||
|
||||
elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
|
||||
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
|
||||
if test `/usr/bin/arch` = "i386"; then
|
||||
# On Intel macs default to a deployment
|
||||
# target of 10.4, that's the first OSX
|
||||
# release with Intel support.
|
||||
cur_target="10.4"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
|
||||
|
||||
# Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
|
||||
# environment with a value that is the same as what we'll use
|
||||
# in the Makefile to ensure that we'll get the same compiler
|
||||
# environment during configure and build time.
|
||||
MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
|
||||
export MACOSX_DEPLOYMENT_TARGET
|
||||
EXPORT_MACOSX_DEPLOYMENT_TARGET=''
|
||||
|
||||
;;
|
||||
# end of Darwin* tests
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
|
@ -1804,7 +1815,6 @@ case $ac_sys_system/$ac_sys_release in
|
|||
esac
|
||||
|
||||
|
||||
ARCH_RUN_32BIT=""
|
||||
AC_SUBST(LIBTOOL_CRUFT)
|
||||
case $ac_sys_system/$ac_sys_release in
|
||||
Darwin/@<:@01567@:>@\..*)
|
||||
|
@ -1861,14 +1871,12 @@ case $ac_sys_system/$ac_sys_release in
|
|||
;;
|
||||
esac
|
||||
|
||||
#ARCH_RUN_32BIT="true"
|
||||
fi
|
||||
|
||||
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' -compatibility_version $(VERSION) -current_version $(VERSION)';;
|
||||
esac
|
||||
|
||||
AC_MSG_CHECKING(for --enable-framework)
|
||||
if test "$enable_framework"
|
||||
then
|
||||
|
@ -1988,9 +1996,6 @@ then
|
|||
|
||||
if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
|
||||
then
|
||||
if test "${enable_universalsdk}"; then
|
||||
LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
|
||||
fi
|
||||
LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
|
||||
LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
|
||||
BLDSHARED="$LDSHARED"
|
||||
|
|
Loading…
Reference in New Issue