Skip to content

Commit 861da23

Browse files
jkseppanefiring
authored andcommitted
Simplify make.osx, add targets. Closes pull request matplotlib#30.
Slightly modified version of a71414d from the maintenance branch.
1 parent 112aeb5 commit 861da23

File tree

2 files changed

+97
-73
lines changed

2 files changed

+97
-73
lines changed

README.osx

+21-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,30 @@
1-
Build mpl on OSX has proven to be a nightmare because of all the
1+
Building mpl on OSX has proven to be a nightmare because of all the
22
different types of zlib, png and freetype that may be on your system.
33
The recommended and supported way to build is to use the make.osx file
44
in this directory. This script requires you to set a PREFIX
5-
environment variable where you want to the install to go. It will
6-
fetch the dependencies from a remove server and install them into your
5+
environment variable where you want the install to go. It will
6+
fetch the dependencies from a remote server and install them into your
77
PREFIX dir, and then build mpl against them. It should ignore any
88
lib, png or freetype on your system
99

1010
Example usage::
1111

12-
PREFIX=/Users/jdhunter/dev make -f make.osx fetch deps mpl_install
12+
make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 \
13+
fetch deps mpl_install_std
1314

15+
Variables:
16+
PREFIX (required): where to install the dependencies
17+
PYVERSION (optional): which python version to use
18+
(default=python, e.g. PYVERSION=2.6 uses python2.6)
19+
20+
Targets:
21+
22+
clean: remove compiled files
23+
fetch: download dependencies
24+
deps: build all dependencies (zlib, png, freetype)
25+
mpl_build: compile matplotlib
26+
mpl_install: install matplotlib in $PREFIX/lib/pythonX.Y/site-packages
27+
mpl_install_std: install matplotlib in standard site-packages directory
28+
mpl_install_egg: install matplotlib as an egg
29+
mpl_install_develop: set up egg link to working directory (for developers)
30+
binaries: create the dmg file for distribution

make.osx

+76-69
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,116 @@
1+
# -*- makefile -*-
12
# build mpl into a local install dir with
2-
# PREFIX=/Users/jdhunter/dev make -f make.osx fetch deps mpl_install
3-
MPLVERSION=1.0rc1
3+
# make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 fetch deps mpl_install
4+
# (see README.osx for more details)
5+
6+
MPLVERSION=1.1.0
47
PYVERSION=2.6
58
PYTHON=python${PYVERSION}
6-
ZLIBVERSION=1.2.3
7-
PNGVERSION=1.2.39
8-
FREETYPEVERSION=2.3.11
99
MACOSX_DEPLOYMENT_TARGET=10.6
1010
OSX_SDK_VER=10.6
11-
ARCH_FLAGS="-arch i386-arch x86_64"
11+
ARCH_FLAGS=-arch i386 -arch x86_64
12+
13+
# Dependency versions and URLs
14+
#
15+
# Adjusting these version numbers should be enough most of the time,
16+
# but the download URLs are subject to change.
17+
18+
ZLIBVERSION=1.2.5
19+
PNGVERSION=1.5.1
20+
FREETYPEVERSION=2.4.4
21+
22+
ZLIBFILE=zlib-${ZLIBVERSION}.tar.gz
23+
ZLIBDIR=$(basename $(basename ${ZLIBFILE}))
24+
ZLIBURL=http://sourceforge.net/projects/libpng/files/zlib/${ZLIBVERSION}/${ZLIBFILE}/download
25+
26+
PNGFILE=libpng-${PNGVERSION}.tar.gz
27+
PNGDIR=$(basename $(basename ${PNGFILE}))
28+
PNGURL=http://sourceforge.net/projects/libpng/files/libpng15/${PNGVERSION}/${PNGFILE}/download
29+
30+
FREETYPEFILE=freetype-${FREETYPEVERSION}.tar.bz2
31+
FREETYPEDIR=$(basename $(basename ${FREETYPEFILE}))
32+
FREETYPEURL=http://download.savannah.gnu.org/releases/freetype/${FREETYPEFILE}
1233

1334
## You shouldn't need to configure past this point
1435

15-
#PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
16-
#CFLAGS="${ARCH_FLAGS} -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
17-
#LDFLAGS="${ARCH_FLAGS} -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
36+
export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig
37+
export CFLAGS=${ARCH_FLAGS} -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk
38+
export LDFLAGS=${ARCH_FLAGS} -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk
39+
export MACOSX_DEPLOYMENT_TARGET
1840

19-
PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
20-
CFLAGS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
21-
LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
22-
FFLAGS="-arch i386 -arch x86_64"
41+
help:
42+
@echo "Interesting targets: clean, fetch, deps, mpl_build, mpl_install_std"
43+
@echo "See README.osx for details"
2344

2445
check-prefix:
2546
@if [ ! -d "$(PREFIX)" ]; then echo Set PREFIX to a directory - see README.osx; exit 1; fi
2647

2748
clean:
28-
rm -rf zlib-${ZLIBVERSION}.tar.gz libpng-${PNGVERSION}.tar.bz2 \
29-
freetype-${FREETYPEVERSION}.tar.bz2 bdist_mpkg-${BDISTMPKGVERSION}.tar.gz \
30-
bdist_mpkg-${BDISTMPKGVERSION} \
49+
rm -rf ${ZLIBFILE} ${PNGFILE} ${FREETYPEFILE} \
50+
bdist_mpkg-${BDISTMPKGVERSION}.tar.gz \
51+
bdist_mpkg-${BDISTMPKGVERSION} setupext.pyc \
52+
lib/matplotlib/mpl-data/matplotlib.conf lib/matplotlib/mpl-data/matplotlibrc \
3153
zlib-${ZLIBVERSION} libpng-${PNGVERSION} freetype-${FREETYPEVERSION} \
3254
build
3355

3456

3557

3658
fetch:
37-
${PYTHON} -c 'import urllib; urllib.urlretrieve("http://superb-sea2.dl.sourceforge.net/project/libpng/zlib/${ZLIBVERSION}/zlib-${ZLIBVERSION}.tar.gz", "zlib-${ZLIBVERSION}.tar.gz")' &&\
38-
${PYTHON} -c 'import urllib; urllib.urlretrieve("http://sourceforge.net/projects/libpng/files/libpng-stable/${PNGVERSION}/libpng-${PNGVERSION}.tar.gz/download", "libpng-${PNGVERSION}.tar.gz")' &&\
39-
${PYTHON} -c 'import urllib; urllib.urlretrieve("http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPEVERSION}.tar.bz2", "freetype-${FREETYPEVERSION}.tar.bz2")'
40-
41-
42-
59+
${PYTHON} -c 'import urllib; urllib.urlretrieve("${ZLIBURL}", "${ZLIBFILE}")' &&\
60+
${PYTHON} -c 'import urllib; urllib.urlretrieve("${PNGURL}", "${PNGFILE}")' &&\
61+
${PYTHON} -c 'import urllib; urllib.urlretrieve("${FREETYPEURL}", "${FREETYPEFILE}")'
4362

4463
zlib: check-prefix
45-
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\
46-
rm -rf zlib-${ZLIBVERSION} &&\
47-
tar xvfz zlib-${ZLIBVERSION}.tar.gz &&\
48-
cd zlib-${ZLIBVERSION} &&\
49-
export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\
50-
export CFLAGS=${CFLAGS} &&\
51-
export LDFLAGS=${LDFLAGS} &&\
52-
./configure --prefix=${PREFIX}&&\
53-
MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} make -j3 install&& \
54-
unset MACOSX_DEPLOYMENT_TARGET
55-
56-
png: zlib check-prefix
57-
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\
58-
rm -rf libpng-${PNGVERSION} &&\
59-
tar xvfz libpng-${PNGVERSION}.tar.gz && \
60-
cd libpng-${PNGVERSION} &&\
61-
export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\
62-
export CFLAGS=${CFLAGS} &&\
63-
export LDFLAGS=${LDFLAGS} &&\
64+
rm -rf ${ZLIBDIR} &&\
65+
tar xvfz ${ZLIBFILE} &&\
66+
cd ${ZLIBDIR} &&\
67+
./configure --prefix=${PREFIX} &&\
68+
${MAKE} -j3 install
69+
70+
png: check-prefix zlib
71+
rm -rf ${PNGDIR} &&\
72+
tar xvfz ${PNGFILE} && \
73+
cd ${PNGDIR} &&\
6474
./configure --disable-dependency-tracking --prefix=${PREFIX} &&\
65-
make -j3 install&&\
66-
cp .libs/libpng.a . &&\
67-
unset MACOSX_DEPLOYMENT_TARGET
68-
69-
70-
freetype: zlib check-prefix
71-
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\
72-
rm -rf ${FREETYPEVERSION} &&\
73-
tar xvfj freetype-${FREETYPEVERSION}.tar.bz2 &&\
74-
cd freetype-${FREETYPEVERSION} &&\
75-
export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\
76-
export CFLAGS=${CFLAGS} &&\
77-
export LDFLAGS=${LDFLAGS} &&\
78-
./configure --prefix=${PREFIX} &&\
79-
make -j3 install &&\
80-
cp objs/.libs/libfreetype.a . &&\
81-
unset MACOSX_DEPLOYMENT_TARGET
75+
${MAKE} -j3 install
8276

77+
freetype: check-prefix zlib
78+
rm -rf ${FREETYPEDIR} &&\
79+
tar xvfj ${FREETYPEFILE} &&\
80+
cd ${FREETYPEDIR} &&\
81+
./configure --prefix=${PREFIX} &&\
82+
${MAKE} -j3 install &&\
83+
cp objs/.libs/libfreetype.a .
8384

8485
deps: zlib png freetype
8586
echo 'all done'
8687

87-
mpl_build:
88-
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\
89-
export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\
90-
export CFLAGS=${CFLAGS} &&\
91-
export LDFLAGS=${LDFLAGS} &&\
88+
# Various build and install targets
89+
#
90+
# The values of PKG_CONFIG_PATH, MACOSX_DEPLOYMENT_TARGET, CFLAGS,
91+
# LDFLAGS affect the compilation; note that variables are
92+
# automatically put into the environment by make.
93+
94+
mpl_build: check-prefix
9295
${PYTHON} setup.py build
9396

9497
mpl_install: check-prefix
95-
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\
96-
export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\
97-
export CFLAGS=${CFLAGS} &&\
98-
export LDFLAGS=${LDFLAGS} &&\
9998
${PYTHON} setup.py install --prefix=${PREFIX}
10099

100+
mpl_install_std: check-prefix
101+
${PYTHON} setup.py install
102+
103+
mpl_install_egg: check-prefix
104+
${PYTHON} setupegg.py install
105+
106+
mpl_install_develop: check-prefix
107+
${PYTHON} setupegg.py develop
108+
101109

102110
binaries: check-prefix
111+
@if [ -z "$(PYVERSION)" ]; then echo Must set PYVERSION; exit 1; fi
103112
unset PKG_CONFIG_PATH &&\
104113
cp release/osx/data/setup.cfg release/osx/data/ReadMe.txt . &&\
105-
export CFLAGS=${CFLAGS} &&\
106-
export LDFLAGS=${LDFLAGS} &&\
107114
rm -f ${PREFIX}/lib/*.dylib &&\
108115
VERSIONER_PYTHON_PREFER_32_BIT=yes bdist_mpkg --readme=ReadMe.txt &&\
109116
hdiutil create -srcdir dist/matplotlib-${MPLVERSION}-py${PYVERSION}-macosx${OSX_SDK_VER}.mpkg dist/matplotlib-${MPLVERSION}-py${PYVERSION}-macosx${OSX_SDK_VER}.dmg &&\

0 commit comments

Comments
 (0)