mirror of https://github.com/python/cpython.git
port r78813 from trunk fixing #8089
This commit is contained in:
parent
081a38d678
commit
5a0a85e838
|
@ -144,12 +144,14 @@ pythonw: $(srcdir)/Tools/pythonw.c Makefile
|
||||||
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"'
|
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"'
|
||||||
|
|
||||||
pythonw-32: $(srcdir)/Tools/pythonw.c Makefile
|
pythonw-32: $(srcdir)/Tools/pythonw.c Makefile
|
||||||
$(CC) $(LDFLAGS) -o $@ -arch i386 -arch ppc $(srcdir)/Tools/pythonw.c \
|
$(CC) $(LDFLAGS) -o pythonw-tmp.o $(srcdir)/Tools/pythonw.c \
|
||||||
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32"'
|
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32"' ;\
|
||||||
|
lipo @LIPO_32BIT_FLAGS@ -output $@ pythonw-tmp.o ; rm pythonw-tmp.o
|
||||||
|
|
||||||
pythonw-64: $(srcdir)/Tools/pythonw.c Makefile
|
pythonw-64: $(srcdir)/Tools/pythonw.c Makefile
|
||||||
$(CC) $(LDFLAGS) -o $@ -arch x86_64 -arch ppc64 $(srcdir)/Tools/pythonw.c \
|
$(CC) $(LDFLAGS) -o pythonw-tmp.o $(srcdir)/Tools/pythonw.c \
|
||||||
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64"'
|
-DPYTHONWEXECUTABLE='"$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64"' ;\
|
||||||
|
lipo @LIPO_64BIT_FLAGS@ -output $@ pythonw-tmp.o ; rm pythonw-tmp.o
|
||||||
|
|
||||||
install_PythonLauncher:
|
install_PythonLauncher:
|
||||||
cd PythonLauncher && make install DESTDIR=$(DESTDIR)
|
cd PythonLauncher && make install DESTDIR=$(DESTDIR)
|
||||||
|
@ -206,8 +208,8 @@ install_Python:
|
||||||
rm "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist.in"
|
rm "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist.in"
|
||||||
|
|
||||||
install_Python4way: install_Python
|
install_Python4way: install_Python
|
||||||
lipo -extract i386 -extract ppc7400 -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
|
lipo @LIPO_32BIT_FLAGS@ -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-32" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
|
||||||
lipo -extract x86_64 -extract ppc64 -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
|
lipo @LIPO_64BIT_FLAGS@ -output "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)-64" "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
96
Mac/README
96
Mac/README
|
@ -5,6 +5,39 @@ MacOSX Notes
|
||||||
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.
|
||||||
|
|
||||||
|
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-universal-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
|
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
|
with Xcode 2.1 (or later). You also have to install the 10.4u SDK when
|
||||||
installing Xcode.
|
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.
|
Building and using a framework-based Python on Mac OS X.
|
||||||
========================================================
|
========================================================
|
||||||
|
@ -48,7 +109,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/MacPython 2.6". This simplifies matters for users installing
|
"/Applications/MacPython m.n". 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
|
||||||
binary distribution in his or her home directory without recompilation.
|
binary distribution in his or her home directory without recompilation.
|
||||||
|
@ -75,40 +136,34 @@ PyObjC.
|
||||||
|
|
||||||
This directory contains a Makefile that will create a couple of python-related
|
This directory contains a Makefile that will create a couple of python-related
|
||||||
applications (fullblown OSX .app applications, that is) in
|
applications (fullblown OSX .app applications, that is) in
|
||||||
"/Applications/MacPython 2.6", and a hidden helper application Python.app
|
"/Applications/MacPython m.n", and a hidden helper application Python.app
|
||||||
inside the Python.framework, and unix tools "python" and "pythonw" into
|
inside the Python.framework, and unix tools "python" and "pythonw" into
|
||||||
/usr/local/bin. In addition it has a target "installmacsubtree" that installs
|
/usr/local/bin. In addition it has a target "installmacsubtree" that installs
|
||||||
the relevant portions of the Mac subtree into the Python.framework.
|
the relevant portions of the Mac subtree into the Python.framework.
|
||||||
|
|
||||||
It is normally invoked indirectly through the main Makefile, as the last step
|
It is normally invoked indirectly through the main Makefile, as the last step
|
||||||
in the sequence
|
in the sequence::
|
||||||
|
|
||||||
1. ./configure --enable-framework
|
$ ./configure --enable-framework
|
||||||
|
$ make
|
||||||
2. make
|
$ make install
|
||||||
|
|
||||||
3. make install
|
|
||||||
|
|
||||||
This sequence will put the framework in /Library/Framework/Python.framework,
|
This sequence will put the framework in /Library/Framework/Python.framework,
|
||||||
the applications in "/Applications/MacPython 2.6" and the unix tools in
|
the applications in "/Applications/MacPython m.n" and the unix tools in
|
||||||
/usr/local/bin.
|
/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
|
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
|
no admin privileges on your machine, has only been tested very lightly. This
|
||||||
can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
|
can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
|
||||||
The other two directories, "/Applications/MacPython-2.6" and /usr/local/bin,
|
The other two directories, "/Applications/MacPython-m.n" and /usr/local/bin,
|
||||||
will then also be deposited in $HOME. This is sub-optimal for the unix tools,
|
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
|
which you would want in $HOME/bin, but there is no easy way to fix this right
|
||||||
now.
|
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?
|
What do all these programs do?
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
|
@ -123,6 +178,11 @@ GUI-things. Keep the "alt" key depressed while dragging or double-clicking a
|
||||||
script to set runtime options. These options can be set once and for all
|
script to set runtime options. These options can be set once and for all
|
||||||
through PythonLauncher's preferences dialog.
|
through PythonLauncher's preferences dialog.
|
||||||
|
|
||||||
|
"BuildApplet.app" creates an applet from a Python script. Drop the script on it
|
||||||
|
and out comes a full-featured MacOS application. There is much more to this,
|
||||||
|
to be supplied later. Some useful (but outdated) info can be found in
|
||||||
|
Mac/Demo.
|
||||||
|
|
||||||
The commandline scripts /usr/local/bin/python and pythonw can be used to run
|
The commandline scripts /usr/local/bin/python and pythonw can be used to run
|
||||||
non-GUI and GUI python scripts from the command line, respectively.
|
non-GUI and GUI python scripts from the command line, respectively.
|
||||||
|
|
||||||
|
|
28
configure.in
28
configure.in
|
@ -120,6 +120,8 @@ AC_SUBST(UNIVERSALSDK)
|
||||||
AC_SUBST(ARCH_RUN_32BIT)
|
AC_SUBST(ARCH_RUN_32BIT)
|
||||||
|
|
||||||
UNIVERSAL_ARCHS="32-bit"
|
UNIVERSAL_ARCHS="32-bit"
|
||||||
|
AC_SUBST(LIPO_32BIT_FLAGS)
|
||||||
|
AC_SUBST(LIPO_64BIT_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,
|
||||||
AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
|
AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
|
||||||
|
@ -175,14 +177,16 @@ AC_ARG_ENABLE(framework,
|
||||||
PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
|
PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
|
||||||
FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
|
FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
|
||||||
FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
|
FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
|
||||||
if test "$UNIVERSAL_ARCHS" = "all"
|
case "${UNIVERSAL_ARCHS}" in
|
||||||
then
|
all|3-way|intel)
|
||||||
FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
|
FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
|
||||||
FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
|
FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
|
||||||
else
|
;;
|
||||||
|
*)
|
||||||
FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
|
FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
|
||||||
FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
|
FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
|
||||||
fi
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
if test "x${prefix}" = "xNONE" ; then
|
if test "x${prefix}" = "xNONE" ; then
|
||||||
FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
|
FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
|
||||||
|
@ -913,24 +917,30 @@ yes)
|
||||||
if test "${enable_universalsdk}"; then
|
if test "${enable_universalsdk}"; then
|
||||||
UNIVERSAL_ARCH_FLAGS=""
|
UNIVERSAL_ARCH_FLAGS=""
|
||||||
if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
|
if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
|
||||||
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
|
|
||||||
ARCH_RUN_32BIT=""
|
ARCH_RUN_32BIT=""
|
||||||
|
UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
|
||||||
|
|
||||||
elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
|
elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
|
||||||
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
|
|
||||||
ARCH_RUN_32BIT="true"
|
ARCH_RUN_32BIT="true"
|
||||||
|
UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
|
||||||
|
|
||||||
elif test "$UNIVERSAL_ARCHS" = "all" ; then
|
elif test "$UNIVERSAL_ARCHS" = "all" ; then
|
||||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
|
|
||||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||||
|
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
|
||||||
|
LIPO_32BIT_FLAGS="-extract i386 -extract ppc7400"
|
||||||
|
LIPO_64BIT_FLAGS="-extract x86_64 -extract ppc64"
|
||||||
|
|
||||||
elif test "$UNIVERSAL_ARCHS" = "intel" ; then
|
elif test "$UNIVERSAL_ARCHS" = "intel" ; then
|
||||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
|
|
||||||
ARCH_RUN_32BIT="/usr/bin/arch -i386"
|
ARCH_RUN_32BIT="/usr/bin/arch -i386"
|
||||||
|
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
|
||||||
|
LIPO_32BIT_FLAGS="-extract i386"
|
||||||
|
LIPO_64BIT_FLAGS="-extract x86_64"
|
||||||
|
|
||||||
elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
|
elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
|
||||||
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
|
|
||||||
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
|
||||||
|
UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
|
||||||
|
LIPO_32BIT_FLAGS="-extract i386 -extract ppc7400"
|
||||||
|
LIPO_64BIT_FLAGS="-extract x86_64"
|
||||||
|
|
||||||
else
|
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])
|
||||||
|
|
Loading…
Reference in New Issue