====== PREFACE ======
This page contains instructions on compiling EMAN for OS X for use on a single machine. Instructions for a distributable build, that includes all dependencies inside a single package, are here: [[EMAN_COMPILE_MacOS_X_for_Distribution]]
Building on 10.5 is highly recommended over 10.4 because of compilation problems, old version of built-in python, and less included dependencies. These instructions will only cover 10.5. Building on x86 and ppc should both be supported. For 64 bit support, either use one of the prebuilt packages or follow the instructions for distribution; getting all dependencies working correctly on 64 bit requires patches in many cases.
------
====== DEPENDENCIES TO INSTALL ======
* boost (1.34.1)
* cmake (2.4.8)
* fftw (2.1.5)
* gsl (1.8)
* hdf5 (1.6.6)
* jpeg (6b)
* Qt/X11 (3.3.8)
* szip (2.1)
* tiff (3.8.2)
* zlib (1.2.1)
(verisons I have used in my own builds. I have placed copies of all srcs in [[MacOSXBuildFiles]])
Building manually is recommended over using a package manager such as fink or macports, which cause significant difficulties by compiling and linking against their own python distributions. It is preferred to use the system built-in python.
------
====== BUILDING DEPENDENCIES ======
===== CMAKE =====
./configure --disable-dependency-tracking --disable-static --enable-shared
make
sudo make install
===== SZIP =====
./configure --disable-dependency-tracking --disable-static --enable-shared
make
sudo make install
===== GSL =====
./configure --disable-dependency-tracking --disable-static --enable-shared
make
sudo make install
===== BOOST =====
./configure --with-toolset=darwin --with-libraries=python
make
sudo make install
===== JPEG =====
libjpeg is very old (1998) and needs much work to compile properly on a modern system. Patches from MacPorts (http://trac.macports.org/browser/trunk/dports/graphics/jpeg/files
) or download from [[MacOSXBuildFiles]] page.
for i in patch-*;do patch < $i;done
./configure --prefix=$PREFIX --disable-dependency-tracking --disable-static --enable-shared
make
make install
===== TIFF =====
./configure --prefix=$PREFIX --disable-dependency-tracking --disable-static --enable-shared CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS"
make
make install
===== HDF5 =====
./configure --disable-dependency-tracking --disable-static --enable-shared
make
sudo make install
===== FFTW2 =====
./configure --enable-float --disable-fortran --disable-dependency-tracking --disable-static --enable-shared --prefix=/usr/local
make
sudo make install
EMAN expects srfftw.h, sfftw.h. After install, go to the include directory ( /usr/local/include ) and make these links:
ln -s fftw.h sfftw.h
ln -s rfftw.h srfftw.h
===== Qt3/X11 =====
This is a major pain to install... I'll finish these instructions real soon once I actually get Qt3/X11 to compile again on Mac. :)
If you want to skip Qt3/X11, you can turn the GUI to off in the cmake options.
-----
====== BUILD EMAN ======
Run cmake with the EMAN source directory as the argument. Press "c" to do an initial configuration. Use default options except those below. You may need to enter advanced mode ('t' key) to set some. Note: set EMAN_INSTALL_PREFIX to your home directory, or /usr/local/EMAN, or similar. When done, press "c" again, then "g" to generate Makefiles.
BOOST_INCLUDE_PATH /usr/local/include/boost-1_34_1
BOOST_LIBRARY /usr/local/lib/libboost_python-1_34_1.dylib
CMAKE_BACKWARDS_COMPATIBILITY 2.4
CMAKE_CXX_FLAGS -mmacosx-version-min=10.5
CMAKE_C_FLAGS -mmacosx-version-min=10.5
CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk
CMAKE_VERBOSE_MAKEFILE ON
EMAN_INSTALL_PREFIX /Users/irees/EMAN
FFTW_INCLUDE_PATH /usr/local/include
FFTW_LIBRARY /usr/local/lib/libfftw.dylib
GSL_CBLAS_LIBRARY /usr/local/lib/libgslcblas.dylib
GSL_INCLUDE_PATH /usr/local/include
GSL_LIBRARY /usr/local/lib/libgsl.dylib
HDF_INCLUDE_PATH /usr/local/include
HDF_LIBRARY /usr/local/lib/libhdf5.dylib
JPEG_LIBRARY /usr/local/lib/libjpeg.dylib
PNG_INCLUDE_PATH /Developer/SDKs/MacOSX10.5.sdk/usr/X11/include/
PNG_LIBRARY /Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/libpng.dylib
PYTHON_INCLUDE_PATH /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Python.framework/Versions/2.5/Headers
PYTHON_LIBRARY /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libpython.dylib
QT_INCLUDE_DIR /usr/local/qt3/include
QT_MOC_EXECUTABLE /usr/local/qt3/bin/moc
QT_QT_LIBRARY /usr/local/lib/libqt.dylib
QT_UIC_EXECUTABLE /usr/local/qt3/bin/uic
RFFTW_LIBRARY /usr/local/lib/librfftw.dylib
TIF_INCLUDE_PATH /usr/local/include
TIF_LIBRARY /usr/local/lib/libtiff.dylib
X11_X11_INCLUDE_PATH /Developer/SDKs/MacOSX10.5.sdk/usr/X11/include/
X11_X11_LIB /Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/libX11.dylib
X11_Xext_LIB /Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/libXext.dylib
X11_Xlib_INCLUDE_PATH /Developer/SDKs/MacOSX10.5.sdk/usr/X11/include/
X11_Xutil_INCLUDE_PATH /Developer/SDKs/MacOSX10.5.sdk/usr/X11/include/
Z_LIBRARY /Developer/SDKs/MacOSX10.5.sdk/usr/lib/libz.dylib
Compile and install EMAN
make
make install
------
====== EMAN POST-INSTALL ======
===== Python dylib links =====
The python dylib loader seems to only look for .so files instead of .dylib files.
cd /Users/irees/EMAN; \
for i in *.dylib; do \
test=`echo $i | sed s/dylib/so/`; \
ln -sv $i $test; \
done;
===== EMAN environment variables script =====
Add the following to your .bashrc to add EMAN to your PATH and PYTHONPATH:
export EMANDIR=/Users/irees/EMAN
export PATH=$PATH:$EMANDIR/bin
export PYTHONPATH=$PYTHONPATH:$EMANDIR/lib
And .cshrc if you are a tcsh user:
setenv EMANDIR /Users/irees/EMAN
set path=($path ${EMANDIR}/bin)
if ( $?PYTHONPATH ) then
else
setenv PYTHONPATH
endif
setenv PYTHONPATH ${PYTHONPATH}:${EMANDIR}/lib
------
====== Contact Information ======
If you have any difficulties, you may email me: Ian Rees, ian.rees at bcm edu.
Enjoy. :)