From 9ebd242fbbd2c52fcf314e22f6b5bf57954d52cd Mon Sep 17 00:00:00 2001 From: Ronald Oussoren Date: Tue, 29 Sep 2009 13:00:44 +0000 Subject: [PATCH] * Update the Mac/README file. Add the list of OSX-specific configure options to that README file with some explanation. * Be more strict in the configure script: complain loudly when the user has specified invalid combinations of OSX-specific configure arguments. The error message refers to the Mac/README file for more information. --- Mac/README | 83 +++++++++++++++++++++++++++++++++++++++++++--------- configure | 20 +++++++++++-- configure.in | 12 +++++++- 3 files changed, 97 insertions(+), 18 deletions(-) diff --git a/Mac/README b/Mac/README index 5e74d7bde37..c4f6b655fbe 100644 --- a/Mac/README +++ b/Mac/README @@ -5,6 +5,39 @@ MacOSX Notes This document provides a quick overview of some Mac OS X specific features in the Python distribution. +Mac-specific arguments to configure +=================================== + +* ``--enable-framework`` + + If this argument is specified the build will create a Python.framework rather + than a traditional Unix install. See the section + _`Building and using a framework-based Python on Mac OS X` for more + information on frameworks. + +* ``--with-framework-name=NAME`` + + Specify the name for the python framework, defaults to ``Python``. This option + is only valid when ``--enable-framework`` is specified. + +* ``--enable-universalsdk[=PATH]`` + + Create a universal binary build of of Python. This can be used with both + regular and framework builds. + + The optional argument specifies with OSX SDK should be used to perform the + build. This defaults to ``/Developer/SDKs/MacOSX.10.4u.sdk``, specify + ``/`` when building on a 10.5 system, especially when building 64-bit code. + + See the section _`Building and using a universal binary of Python on Mac OS X` + for more information. + +* ``--with-univeral-archs=VALUE`` + + Specify the kind of universal binary that should be created. This option is + only valid when ``--enable-universalsdk`` is specified. + + Building and using a universal binary of Python on Mac OS X =========================================================== @@ -31,6 +64,34 @@ unix build. Either way you will have to build python on Mac OS X 10.4 (or later) with Xcode 2.1 (or later). You also have to install the 10.4u SDK when installing Xcode. +The option ``--enable-universalsdk`` has an optional argument to specify an +SDK, which defaults to the 10.4u SDK. When you build on OSX 10.5 or later +you can use the system headers instead of an SDK:: + + $ ./configure --enable-universalsdk=/ + +2.1 Flavours of universal binaries +.................................. + +It is possible to build a number of flavours of the universal binary build, +the default is a 32-bit only binary (i386 and ppc). The flavour can be +specified using the option ``--with-universal-archs=VALUE``. The following +values are available: + + * ``32-bit``: ``ppc``, ``i386`` + + * ``64-bit``: ``ppc64``, ``x86_64`` + + * ``all``: ``ppc``, ``ppc64``, ``i386``, ``x86_64`` + + * ``3-way``: ``ppc``, ``i386`` and ``x86_64`` + + * ``intel``: ``i386``, ``x86_64`` + +To build a universal binary that includes a 64-bit architecture you must build +on a system running OSX 10.5 or later. The ``all`` flavour can only be build on +OSX 10.5. + Building and using a framework-based Python on Mac OS X. ======================================================== @@ -81,18 +142,20 @@ inside the Python.framework, and unix tools "python" and "pythonw" into the relevant portions of the Mac subtree into the Python.framework. It is normally invoked indirectly through the main Makefile, as the last step -in the sequence +in the sequence:: - 1. ./configure --enable-framework - - 2. make - - 3. make install + $ ./configure --enable-framework + $ make + $ make install This sequence will put the framework in /Library/Framework/Python.framework, the applications in "/Applications/MacPython 2.6" and the unix tools in /usr/local/bin. +It is possible to select a different name for the framework using the configure +option ``--with-framework-name=NAME``. This makes it possible to have several +parallel installs of a Python framework. + Installing in another place, for instance $HOME/Library/Frameworks if you have no admin privileges on your machine, has only been tested very lightly. This can be done by configuring with --enable-framework=$HOME/Library/Frameworks. @@ -101,14 +164,6 @@ will then also be deposited in $HOME. This is sub-optimal for the unix tools, which you would want in $HOME/bin, but there is no easy way to fix this right now. -If you want to install some part, but not all, read the main Makefile. The -frameworkinstall is composed of a couple of sub-targets that install the -framework itself, the Mac subtree, the applications and the unix tools. - -There is an extra target frameworkinstallextras that is not part of the -normal frameworkinstall which installs the Demo and Tools directories -into "/Applications/MacPython 2.6", this is useful for binary distributions. - What do all these programs do? =============================== diff --git a/configure b/configure index aeae2e74c31..82f60bec2f0 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 74715 . +# From configure.in Revision: 74978 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.7. # @@ -1923,6 +1923,13 @@ if test "${with_universal_archs+set}" = set; then { echo "$as_me:$LINENO: result: $withval" >&5 echo "${ECHO_T}$withval" >&6; } UNIVERSAL_ARCHS="$withval" + if test "${enable_universalsdk}" ; then + : + else + { { echo "$as_me:$LINENO: error: --with-universal-archs without --enable-universalsdk. See Mac/README" >&5 +echo "$as_me: error: --with-universal-archs without --enable-universalsdk. See Mac/README" >&2;} + { (exit 1); exit 1; }; } + fi else @@ -1938,6 +1945,13 @@ fi # Check whether --with-framework-name was given. if test "${with_framework_name+set}" = set; then withval=$with_framework_name; + if test "${enable_framework}"; then + : + else + { { echo "$as_me:$LINENO: error: --with-framework-name without --enable-framework. See Mac/README" >&5 +echo "$as_me: error: --with-framework-name without --enable-framework. See Mac/README" >&2;} + { (exit 1); exit 1; }; } + fi PYTHONFRAMEWORK=${withval} PYTHONFRAMEWORKDIR=${withval}.framework PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr 'A-Z' 'a-z'` @@ -14612,8 +14626,8 @@ _ACEOF echo "${ECHO_T}yes" >&6; } if test $enable_shared = "yes" then - { { echo "$as_me:$LINENO: error: Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead" >&5 -echo "$as_me: error: Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead" >&2;} + { { echo "$as_me:$LINENO: error: Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README." >&5 +echo "$as_me: error: Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README." >&2;} { (exit 1); exit 1; }; } fi else diff --git a/configure.in b/configure.in index 4c4731fcfeb..4713d573dbb 100644 --- a/configure.in +++ b/configure.in @@ -118,6 +118,11 @@ AC_ARG_WITH(universal-archs, [ AC_MSG_RESULT($withval) UNIVERSAL_ARCHS="$withval" + if test "${enable_universalsdk}" ; then + : + else + AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README]) + fi ], [ AC_MSG_RESULT(32-bit) @@ -129,6 +134,11 @@ AC_ARG_WITH(framework-name, AC_HELP_STRING(--with-framework-name=FRAMEWORK, specify an alternate name of the framework built with --enable-framework), [ + if test "${enable_framework}"; then + : + else + AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README]) + fi PYTHONFRAMEWORK=${withval} PYTHONFRAMEWORKDIR=${withval}.framework PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'` @@ -1615,7 +1625,7 @@ then AC_MSG_RESULT(yes) if test $enable_shared = "yes" then - AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead]) + AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.]) fi else AC_MSG_RESULT(no)