Difference between revisions of "BuildingMacOSX"
(Update the Mac OS X build instructions. (Note: work in progress :))) |
m (→Building Protocol Buffers: v bump) |
||
Line 153: | Line 153: | ||
=== Building Protocol Buffers === | === Building Protocol Buffers === | ||
− | Grab the latest version of Protocol Buffers from its Google Code project: http://code.google.com/p/protobuf/. As of this writing, that is version 2.0 | + | Grab the latest version of Protocol Buffers from its Google Code project: http://code.google.com/p/protobuf/. As of this writing, that is version 2.2.0. |
− | Direct link: http://protobuf.googlecode.com/files/protobuf-2.0 | + | Direct link: http://protobuf.googlecode.com/files/protobuf-2.2.0.tar.bz2 |
Build and install it: | Build and install it: |
Revision as of 14:18, 12 September 2009
Note: This guide is written for the current git HEAD (Mumble version 1.2.X). If you want instructions for 1.1.X, please check the history for this page.
Contents
- 1 Introduction
- 2 Dependencies
- 2.1 Setting up the build environment
- 2.2 Installing or building pkg-config
- 2.3 Installing or getting Git
- 2.4 Building DBus
- 2.5 Building Qt
- 2.6 Installing Boost
- 2.7 Building PortAudio
- 2.8 Building libsndfile
- 2.9 Building Protocol Buffers
- 2.10 Logitech LCD SDK (optional)
- 2.11 libmcpp
- 2.12 Berkeley DB
- 2.13 ZeroC Ice
- 3 Building Mumble
- 4 Distributing Mumble
Introduction
This guide describes the method to get a fully working and redistributable version of Mumble and Murmur that uses the Cocoa version of Qt 4. This build will work on both Intel and PowerPC Macs on Mac OS X 10.5 (Leopard).
If you don't want a universal build, you can achieve this by passing CONFIG+='no-universal' to qmake.
Dependencies
To build Mumble you will need:
- Mac OS X 10.5 (Leopard)
- XCode (http://developer.apple.com/tools/xcode/, or from your Mac OS X install disks)
- Git (http://www.git-scm.org/)
- pkg-config (http://pkg-config.freedesktop.org/)
- DBus (http://dbus.freedesktop.org/)
- Qt 4.5.2 (http://www.qtsoftware.com/developer/downloads/qt/mac)
- Boost (http://www.boost.org/)
- PortAudio (http://www.portaudio.com/)
- libsoundfile (http://www.mega-nerd.com/libsndfile/)
- Protocol Buffers (http://code.google.com/p/protobuf/)
- Berkeley DB (http://www.oracle.com/technology/products/berkeley-db/index.html) (Murmur only)
- mcpp (http://www.sourceforge.net/projects/mcpp/) (Murmur only)
- ZeroC Ice (http://www.zeroc.com) (Murmur only)
Setting up the build environment
#!/bin/bash # C compiler export CC="$(xcode-select -print-path)/usr/bin/gcc-4.2" export CXX="$(xcode-select -print-path)/usr/bin/g++-4.2" # Mac OS X SDK stuff export MACOSX_DEPLOYMENT_TARGET="10.5" export OSX_SDK="/Developer/SDKs/MacOSX10.5.sdk" # Autotools, etc. setup export OSX_CFLAGS="-isysroot $OSX_SDK -arch ppc -arch i386" export OSX_LDFLAGS="-Wl,-syslibroot,$OSX_SDK -arch ppc -arch i386" export CFLAGS=$OSX_CFLAGS export CXXFLAGS=$OSX_CFLAGS export LDFLAGS=$OSX_LDFLAGS # Mumble stuff export MUMBLE_PREFIX=/opt/mumble-1.2/ # pkgconfig, PATH, etc. export PKG_CONFIG_PATH=/usr/lib/pkgconfig/:$MUMBLE_PREFIX/lib/pkgconfig/:$PKG_CONFIG_PATH export PATH=$MUMBLE_PREFIX/qt-framework-4.5.2/bin/:$PATH export PATH=$MUMBLE_PREFIX/bin:$PATH # ice path ICE_PREFIX=$MUMBLE_PREFIX/ice-3.3.1/ export PATH=$ICE_PREFIX/bin/:$PATH echo Now in Mumble 1.2 build environment
Remember to source the above script before doing any of the steps listed below.
Installing or building pkg-config
This is just a build tool, so you do not have to build it as universal binary.
If you have MacPorts installed, you probably already have pkg-config as well. If not, you can install it by doing
sudo port install pkgconfig
In case you want to compile it yourself, you'll have to download and unpack pkg-config.
sudo mkdir /usr/lib/pkgconfig (choose a path you like) export PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure && make && sudo make install
To make the path permanent add the following line to your ~/.profile file:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
Also add a path entry to the pkg-config binary to this file:
export PATH=$PATH:/usr/local/bin
Installing or getting Git
To grab a copy of Mumble, you need Git.
You have three options:
- Build it yourself.
- Install it via MacPorts: port install git-core
- Fetch the git-osx-installer package from Google Code: http://code.google.com/p/git-osx-installer/downloads/list?can=3
Building DBus
Grab the latest release of DBus from http://dbus.freedesktop.org/. As of this writing that is version 1.2.12.
Unpack it, and build it:
./configure --prefix=/opt/mumble/dbus/ --without-x --with-xml=expat --disable-dependency-tracking make make install
Building Qt
Download an unpack Qt.
unset CFLAGS unset CXXFLAGS unset LDFLAGS ./configure -debug-and-release -no-exceptions -universal -cocoa -qt-sql-sqlite -system-zlib -qt-gif -qt-libpng -qt-libjpeg -qdbus -webkit -phonon -phonon-backend -no-qt3support -sdk $OSX_SDK -prefix $MUMBLE_PREFIX/qt- framework-4.5.2/ -opensource make sudo make install export CFLAGS=$OSX_CFLAGS export CXXFLAGS=$OSX_CFLAGS export LDFLAGS=$OSX_LDFLAGS
Installing Boost
As Mumble only uses some Boost headers you do not have to build Boost from scratch - you just need to unpack it.
It is advisible to unpack Boost to $MUMBLE_PREFIX/include/, so the Boost headers will be available in $MUMBLE_PREFIX/include/boost-1_39_1/, since Mumble will look for the headers in this place by default.
Building PortAudio
Download and extract the latest nightly PortAudio snapshot:
http://portaudio.com/archives/pa_snapshot.tar.gz
Build and install:
wget http://www.scorpius-project.org/mumble-stuff/portaudio-fix.patch patch -p1 < portaudio-fix.patch ./configure --disable-mac-universal --disable-dependency-tracking --prefix=$MUMBLE_PREFIX make sudo make install
Building libsndfile
Grab the latest version. Build:
export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch ppc" export CXXFLAGS=$CFLAGS export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -arch ppc" ./configure --prefix=$(pwd)/ppc-root/ make make install make distclean export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch i386" export CXXFLAGS=$CFLAGS export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -arch i386" ./configure --prefix=$MUMBLE_PREFIX make sudomake install lipo -create -arch ppc ppc-root/lib/libsndfile.1.dylib -arch i386 $MUMBLE_PREFIX/lib/libsndfile.1.dylib -output $MUMBLE_PREFIX/lib/libsndfile.1.dylib export CFLAGS=$OSX_CFLAGS export CXXFLAGS=$CFLAGS export LDFLAGS=$OSX_LDFLAGS
Building Protocol Buffers
Grab the latest version of Protocol Buffers from its Google Code project: http://code.google.com/p/protobuf/. As of this writing, that is version 2.2.0. Direct link: http://protobuf.googlecode.com/files/protobuf-2.2.0.tar.bz2
Build and install it:
./configure --disable-dependency-tracking --prefix=$MUMBLE_PREFIX make sudo make install
Logitech LCD SDK (optional)
Grab it, install it. Build it:
sudo mkdir -p $MUMBLE_PREFIX/lglcd-sdk/ sudo tar -zxvf /Applications/Logitech/GamePanel\ Software/LCD\ Manager/LCDSDK/LCDSDK.tgz -C $MUMBLE_PREFIX/lglcd-sdk/ sudo chmod -vR +r $MUMBLE_PREFIX/lglcd-sdk/
libmcpp
Grab it. Build it:
./configure --disable-dependency-tracking --prefix=$MUMBLE_PREFIX --enable-mcpplib make sudo make install
Berkeley DB
Grab it. Build it:
for i in 1 2 3 4; do wget http://www.oracle.com/technology/products/berkeley-db/db/update/4.7.25/patch.4.7.25.$i; done for i in 1 2 3; do patch -p0 < patch.4.7.25.$i; done patch -p1 < patch.4.7.25.4 cd build_unix ../dist/configure --disable-dependency-tracking --prefix=$MUMBLE_PREFIX --enable-cxx
ZeroC Ice
Grab it. Build it:
make prefix=$ICE_PREFIX embedded_runpath_prefix=$ICE_PREFIX OPTIMIZE=yes CXX="$CXX $OSX_CFLAGS" CC="$CC $OSX_CFLAGS" DB_HOME=$MUMBLE_PREFIX MCPP_HOME=$MUMBLE_PREFIX sudo make prefix=$ICE_PREFIX embedded_runpath_prefix=$ICE_PREFIX OPTIMIZE=yes CXX="$CXX $OSX_CFLAGS" CC="$CC $OSX_CFLAGS" DB_HOME=$MUMBLE_PREFIX MCPP_HOME=$MUMBLE_PREFIX install
Building Mumble
Fetch the Mumble source from Git:
git clone git://mumble.git.sourceforge.net/gitroot/mumble mumble.git cd mumble.git git submodule init git submodule update
To build the client, execute:
qmake main.pro CONFIG+='release' make
If everything went well, you should now have a Mumble.app application bundle in the release directory of the root of the source tree.
Distributing Mumble
If you wish to create a proper redistributable Mumble application bundle, please refer to the osxdist.sh script in the scripts directory. This will help you clean up your application bundle, include the needed dependencies, resources etc., and create a compressed disk image - ready to redistribute!
The script expects you to be in the root of the source tree. After executing, it will spit out a .dmg of your Mumble build in the release folder.
Please note that the script currently is tuned for creating real redistributable versions of Mumble, and as such only works on universal (x86, ppc) release builds!