Difference between revisions of "BuildingMacOSX"

From Mumble Wiki
Jump to: navigation, search
(Building Mumble)
m (Changed the cd line under "Simply clone the repo..." and the qmake line under "To build the client, execute:")
(46 intermediate revisions by 2 users not shown)
Line 1: Line 1:
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.
+
{{Building}}
  
== Introduction ==
+
=== 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 only on x86_64-capable machines.
+
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.
 
 
== The Easy Way ==
 
 
 
The easiest way to get going is to grab the pre-built build environment for Mac OS X:
 
http://www.scorpius-project.org/mumble-osx-dev/MumbleDeveloper.tar.bz2
 
 
 
Unarchive it to your / filesystem.
 
 
 
To set up your environment for a build, execute
 
 
 
/MumbleDeveloper/bin/mumble-x86-64-build-env
 
 
 
The rest of this guide can be skipped, down to the 'Building Mumble' part.
 
 
 
== Dependencies ==
 
  
 
To build Mumble you will need:
 
To build Mumble you will need:
* Mac OS X 10.5 (Leopard)
+
* Mac OS X 10.8 (Mountain Lion)
* XCode (http://developer.apple.com/tools/xcode/, or from your Mac OS X install disks)
+
* Xcode 4.4
* Git (http://www.git-scm.org/)
 
* pkg-config (http://pkg-config.freedesktop.org/)
 
* DBus (http://dbus.freedesktop.org/)
 
* Qt 4.6.0 (http://qt.gitorious.org/+mumble-developers/qt/mumble-developers-qt)
 
* Boost (http://www.boost.org/)
 
* PortAudio (http://www.portaudio.com/)
 
* libogg (http://www.xiph.org)
 
* libvorbis (http://www.xiph.org/)
 
* 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 ===
+
=== Creating a build environment ===
  
#!/bin/bash
+
The git repository at https://github.com/mumble-voip/mumble-releng contains pre-made scripts that build the current canonical Mumble OS X build environment.
 
# 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 x86_64"
 
export OSX_LDFLAGS="-Wl,-syslibroot,$OSX_SDK -arch x86_64"
 
export CFLAGS=$OSX_CFLAGS
 
export CXXFLAGS=$OSX_CFLAGS
 
export LDFLAGS=$OSX_LDFLAGS
 
 
# Mumble stuff
 
export MUMBLE_PREFIX=/opt/mumble-x86-64/
 
 
# pkgconfig, PATH, etc.
 
export PKG_CONFIG_PATH=/usr/lib/pkgconfig/:$MUMBLE_PREFIX/lib/pkgconfig/:$PKG_CONFIG_PATH
 
export PATH=$MUMBLE_PREFIX/qt-framework-4.6-mumble/bin/:$PATH
 
export PATH=$MUMBLE_PREFIX/bin:$PATH
 
 
# ice path
 
ICE_PREFIX=$MUMBLE_PREFIX/ice-3.4.1/
 
export PATH=$ICE_PREFIX/bin/:$PATH
 
 
echo Now in Mumble 1.2 x86-64 build environment
 
  
 +
Simply clone the repo, and cd into it:
  
Remember to source the above script before doing any of the steps listed below.
+
  $ git clone https://github.com/mumble-voip/mumble-releng
 +
  $ cd mumble-releng/buildenv/1.3.x/osx
  
=== Installing or building pkg-config ===
+
Create a MumbleBuild directory in your home dir:
  
This is just a build tool, so you do not have to build it as universal binary.
+
  $ mkdir -p ~/MumbleBuild
  
If you have MacPorts installed, you probably already have pkg-config as well. If not, you can install it by doing
+
Copy the 'env' script to the directory you created in the previous step:
sudo port install pkgconfig
 
  
In case you want to compile it yourself, you'll have to download and unpack pkg-config.
+
  $ cp env ~/MumbleBuild/env
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:
+
Source the env script to set up the proper environment variables for the Mumble build environment:
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 ===
+
  $ source ~/MumbleBuild/env
  
To grab a copy of Mumble, you need Git.
+
Build the enviroment:
  
You have three options:
+
  $ ./build-all.bash
* 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 ===
+
Once this is done, you should have a fully functional installation of Mumble's dependencies (tools and libs) in a self-contained MumbleBuild directory in your home directory.
  
Grab the latest release of DBus from http://dbus.freedesktop.org/. As of this writing that is version 1.2.24.
+
=== Building Mumble ===
  
Unpack it, and build it:
+
Make sure you've sourced ~/MumbleBuild/env into your current shell session:
  
  ./configure --prefix=$MUMBLE_PREFIX --without-x --with-xml=expat --disable-dependency-tracking
+
  $ source ~/MumbleBuild/env
make
 
sudo make install
 
  
=== Building OpenSSL ===
+
Fetch the Mumble source from Git into a directory of your choosing:
  
Grab it from http://www.openssl.org/. The latest version we use is 0.9.8o.
+
git clone --recursive https://github.com/mumble-voip/mumble
  
Unpack and build:
+
To build the client, execute:
  
  ./Configure darwin64-x86_64-cc -shared --prefix=$MUMBLE_PREFIX --openssldir=$MUMBLE_PREFIX/openssl
+
  cd mumble
 +
qmake -recursive -Wall main.pro CONFIG+="release static"
 
  make
 
  make
sudo make install
 
  
=== Building Qt ===
+
If everything went well, you should now have a Mumble.app application bundle in the release directory of the root of the source tree.
 
 
Download and unpack Qt:
 
 
 
git clone git://gitorious.org/+mumble-developers/qt/mumble-developers-qt.git
 
cd mumble-developers-qt
 
git branch -t 4.6-mumble origin/4.6-mumble
 
git checkout 4.6-mumble
 
 
 
Then build it:
 
  
unset CFLAGS
+
=== Building Murmur ===
unset CXXFLAGS
 
unset LDFLAGS
 
OPENSSL_LIBS="-L$MUMBLE_PREFIX/lib -lssl -lcrypto" ./configure -pch -debug-and-release -arch x86_64 -cocoa -qt-sql-sqlite -system-zlib -qt-gif -qt-libpng -qt-libjpeg -qdbus -webkit -no-phonon -no-phonon-backend -no-qt3support -openssl-linked -sdk $OSX_SDK -prefix $MUMBLE_PREFIX/qt-framework-4.6-mumble -opensource -confirm-license
 
make
 
sudo make install
 
export CFLAGS=$OSX_CFLAGS
 
export CXXFLAGS=$OSX_CFLAGS
 
export LDFLAGS=$OSX_LDFLAGS
 
  
=== Installing Boost ===
+
Make sure you've sourced ~/MumbleBuild/env into your current shell session:
  
Grab the latest version of Boost from http://www.boost.org/, as of current writing, that is 1.43.0.
+
$ source ~/MumbleBuild/env
  
It is advisible to unpack Boost to $MUMBLE_PREFIX/include/, so the Boost headers will be available in $MUMBLE_PREFIX/include/boost-1_43_0/, since Mumble will look for the headers in this place by default.
+
Fetch the Mumble and Murmur source from Git into a directory of your choosing:
  
=== Building libogg ===
+
git clone --recursive https://github.com/mumble-voip/mumble
  
Grab the latest version (current 1.2.0). Build:
+
To build the server, execute:
  
  ./configure --disable-dependency-tracking --prefix=$MUMBLE_PREFIX
+
  cd mumble
 +
qmake -spec unsupported/macx-clang -recursive CONFIG+="release static no-client no-dbus"
 
  make
 
  make
sudo make install
 
 
=== Building libvorbis ===
 
  
Grab the latest version (current 1.3.1). Build:
+
If everything went well, you should now have a murmur binary in the release directory of the root of the source tree.
  
./configure --disable-dependency-tracking --prefix=$MUMBLE_PREFIX
+
=== Distributing Mumble ===
make
 
sudo make install
 
  
=== Building libsndfile ===
+
If you wish to create a proper redistributable Mumble application bundle, please refer to the osxdist.py script in
 +
the macx/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!
  
Grab the latest version (currently 1.0.21). Build:
+
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.
 
 
./configure --prefix=$MUMBLE_PREFIX --disable-sqlite
 
make
 
sudo make install
 
 
 
=== 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.3.0.
 
Direct link: http://protobuf.googlecode.com/files/protobuf-2.3.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 (current version is 2.7.2). Build it:
 
 
 
./configure --disable-dependency-tracking --prefix=$MUMBLE_PREFIX --enable-mcpplib
 
make
 
sudo make install
 
 
 
=== Berkeley DB ===
 
 
 
Grab it (current version is 5.0.21). Build it:
 
 
 
cd build_unix
 
../dist/configure --disable-dependency-tracking --prefix=$MUMBLE_PREFIX --enable-cxx
 
sudo make install
 
 
 
=== ZeroC Ice ===
 
 
 
Grab it (current version is 3.4.1). Apply patch: http://gist.github.com/459204
 
 
 
patch -p1 < Ice-3.4.1-db5.patch
 
 
 
Build it:
 
 
 
cd cpp
 
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.
+
If you only have a Mumble.app, and have not built Murmur, you should also pass the
  
== Distributing Mumble ==
+
--no-server
  
If you wish to create a proper redistributable Mumble application bundle, please refer to the osxdist.sh script in
+
parameter to the osxdist.py script. This will not attempt to package Murmur-specific files in the generated .dmg.
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.
+
The script supports code signing, and among other things, allow you to build a copy of Mumble signed with your Developer ID certificates from Apple.
 +
To build with code signing enabled, use the following three parameters to the osxdist.py script:
  
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!
+
* --developer-id='<Name or Organization>'
 +
* --keychain=<keychain> (optional, defaults to 'login.keychain')
  
 
[[Category:Development]]
 
[[Category:Development]]

Revision as of 00:39, 25 April 2017

Building Guides

This page is one of a set of Building pages/guides for the different OSes with information on building Mumble/Murmur.

BuildingLinux BuildingFreeBSD BuildingOpenBSD BuildingMacOSX BuildingWindows


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.

To build Mumble you will need:

  • Mac OS X 10.8 (Mountain Lion)
  • Xcode 4.4

Creating a build environment

The git repository at https://github.com/mumble-voip/mumble-releng contains pre-made scripts that build the current canonical Mumble OS X build environment.

Simply clone the repo, and cd into it:

 $ git clone https://github.com/mumble-voip/mumble-releng
 $ cd mumble-releng/buildenv/1.3.x/osx

Create a MumbleBuild directory in your home dir:

 $ mkdir -p ~/MumbleBuild

Copy the 'env' script to the directory you created in the previous step:

 $ cp env ~/MumbleBuild/env

Source the env script to set up the proper environment variables for the Mumble build environment:

 $ source ~/MumbleBuild/env

Build the enviroment:

 $ ./build-all.bash

Once this is done, you should have a fully functional installation of Mumble's dependencies (tools and libs) in a self-contained MumbleBuild directory in your home directory.

Building Mumble

Make sure you've sourced ~/MumbleBuild/env into your current shell session:

$ source ~/MumbleBuild/env

Fetch the Mumble source from Git into a directory of your choosing:

git clone --recursive https://github.com/mumble-voip/mumble

To build the client, execute:

cd mumble
qmake -recursive -Wall main.pro CONFIG+="release static"
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.

Building Murmur

Make sure you've sourced ~/MumbleBuild/env into your current shell session:

$ source ~/MumbleBuild/env

Fetch the Mumble and Murmur source from Git into a directory of your choosing:

git clone --recursive https://github.com/mumble-voip/mumble

To build the server, execute:

cd mumble
qmake -spec unsupported/macx-clang -recursive CONFIG+="release static no-client no-dbus"
make

If everything went well, you should now have a murmur binary 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.py script in the macx/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.

If you only have a Mumble.app, and have not built Murmur, you should also pass the

--no-server

parameter to the osxdist.py script. This will not attempt to package Murmur-specific files in the generated .dmg.

The script supports code signing, and among other things, allow you to build a copy of Mumble signed with your Developer ID certificates from Apple. To build with code signing enabled, use the following three parameters to the osxdist.py script:

  • --developer-id='<Name or Organization>'
  • --keychain=<keychain> (optional, defaults to 'login.keychain')