For reference and possible critique, I wrote up notes on how I built a
Universal matplotlib dist.
# Build instructions for a matplotlib distribution on OSX
# Using python-2.5 package from python.org
# Getting starting
quaternion:mpl-build cmoad$ pwd
/usr/local/src/mpl-build
quaternion:mpl-build cmoad$ ll
total 11408
-rw-r--r--@ 1 cmoad staff 1.2M Jul 2 18:06 freetype-2.3.5.tar.bz2
-rw-r--r--@ 1 cmoad staff 600K Nov 9 07:31 libpng-1.2.23.tar.bz2
-rw-r--r-- 1 cmoad wheel 3.8M Nov 29 21:47 matplotlib-0.91.1.tar.gz
# Setup environment for Universal builds of libpng and freetype
quaternion:mpl-build cmoad$ export MACOSX_DEPLOYMENT_TARGET=10.4
quaternion:mpl-build cmoad$ export CFLAGS="-arch i386 -arch ppc -
isysroot /Developer/SDKs/MacOSX10.4u.sdk"
quaternion:mpl-build cmoad$ export LDFLAGS="-arch i386 -arch ppc -
syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
# Starting with libpng
quaternion:mpl-build cmoad$ tar -xjf libpng-1.2.23.tar.bz2
quaternion:mpl-build cmoad$ cd libpng-1.2.23
# To avoid errors with "-M" flags and Universal builds, pass "--
disable-dependency-tracking" to configure
quaternion:libpng-1.2.23 cmoad$ ./configure --disable-dependency-
tracking
quaternion:libpng-1.2.23 cmoad$ make -j3
# To make sure we don't link against the dynamic libs, copy the static
library to the libpng source root
quaternion:libpng-1.2.23 cmoad$ cp .libs/libpng.a ./
# To prove we have a Universal binary
quaternion:libpng-1.2.23 cmoad$ file libpng.a
libpng.a: Mach-O universal binary with 2 architectures
libpng.a (for architecture i386): current ar archive random
library
libpng.a (for architecture ppc): current ar archive random
library
# Next to freetype
quaternion:libpng-1.2.23 cmoad$ cd ../
quaternion:mpl-build cmoad$ tar -xjf freetype-2.3.5.tar.bz2
quaternion:mpl-build cmoad$ cd freetype-2.3.5
quaternion:freetype-2.3.5 cmoad$ ./configure
quaternion:freetype-2.3.5 cmoad$ make -j3
# Copy the freetype static lib to its source root as well
quaternion:freetype-2.3.5 cmoad$ cp objs/.libs/libfreetype.a ./
# To prove we have a Universal binary
quaternion:freetype-2.3.5 cmoad$ file libfreetype.a
libfreetype.a: Mach-O universal binary with 2 architectures
libfreetype.a (for architecture i386): current ar archive random
library
libfreetype.a (for architecture ppc): current ar archive random
library
# Finally to matplotlib
quaternion:freetype-2.3.5 cmoad$ cd ../
# This OSX package from python.org will build Universal python
extensions without our help
quaternion:mpl-build cmoad$ unset MACOSX_DEPLOYMENT_TARGET
quaternion:mpl-build cmoad$ unset CFLAGS
quaternion:mpl-build cmoad$ unset LDFLAGS
# Point gcc to our new Universal builds of libpng and freetype
quaternion:mpl-build cmoad$ export CFLAGS="-arch ppc -arch i386 -I/usr/
local/src/mpl-build/libpng-1.2.23 -I/usr/local/src/mpl-build/
freetype-2.3.5/include"
quaternion:mpl-build cmoad$ export LDFLAGS="-arch ppc -arch i386 -L/
usr/local/src/mpl-build/libpng-1.2.23 -L/usr/local/src/mpl-build/
freetype-2.3.5"
# Now we are ready to build matplotlib
quaternion:mpl-build cmoad$ tar -xzf matplotlib-0.91.1.tar.gz
quaternion:mpl-build cmoad$ cd matplotlib-0.91.1
# Matplotlib's detected environment for those interested (I already
installed numpy)
quaternion:matplotlib-0.91.1 cmoad$ python setupegg.py
=
=
=
=
========================================================================
BUILDING MATPLOTLIB
matplotlib: 0.91.1
python: 2.5.1 (r251:54869, Apr 18 2007, 22:08:04) [GCC
4.0.1 (Apple Computer, Inc. build 5367)]
platform: darwin
REQUIRED DEPENDENCIES
numpy: 1.0.4
freetype2: found, but unknown version (no pkg-config)
OPTIONAL BACKEND DEPENDENCIES
libpng: found, but unknown version (no pkg-config)
Tkinter: Tkinter: 50704, Tk: 8.4, Tcl: 8.4
wxPython: no
* wxPython not found
Gtk+: no
* Building for Gtk+ requires pygtk; you must
be able
* to "import gtk" in your build/install
environment
Qt: no
Qt4: no
Cairo: no
OPTIONAL DATE/TIMEZONE DEPENDENCIES
datetime: present, version unknown
dateutil: matplotlib will provide
pytz: matplotlib will provide
OPTIONAL USETEX DEPENDENCIES
dvipng: no
ghostscript: /bin/sh: gs: command not found
latex: no
EXPERIMENTAL CONFIG PACKAGE DEPENDENCIES
configobj: matplotlib will provide
enthought.traits: matplotlib will provide
# Finally build the matplotlib egg
quaternion:matplotlib-0.91.1 cmoad$ python setupegg.py bdist_egg
# The resulting eggs which should be **cross fingers** 10.3+ compatible
quaternion:matplotlib-0.91.1 cmoad$ ll dist/
total 12184
-rw-r--r-- 1 cmoad wheel 5.9M Nov 29 23:03 matplotlib-0.91.1-py2.5-
macosx-10.3-fat.egg
# END
Attached as well in case line breaks destroy the readability.