forked from mirrors/linphone-iphone
146 lines
6 KiB
Text
146 lines
6 KiB
Text
**********************************
|
|
* Compiling linphone on macos X *
|
|
**********************************
|
|
|
|
You need:
|
|
- Xcode (download from apple or using appstore application)
|
|
- Java SE
|
|
- Macports: http://www.macports.org/
|
|
Download and install macports using its user friendly installer.
|
|
|
|
- In order to enable generation of bundle for multiple macos version and 32 bit processors, it is recommended to:
|
|
1) edit /opt/local/etc/macports/macports.conf to add the following line:
|
|
macosx_deployment_target 10.6
|
|
2) edit /opt/local/etc/macports/variants.conf to add the following line:
|
|
+universal
|
|
|
|
- Install build time dependencies
|
|
$ sudo port install automake autoconf libtool intltool wget cunit
|
|
|
|
- Install some linphone dependencies with macports
|
|
$ sudo port install antlr3 speex libvpx readline sqlite3 libsoup openldap libupnp
|
|
$ sudo port install ffmpeg-devel -gpl2
|
|
|
|
- Install gtk. It is recommended to use the quartz backend for better integration.
|
|
$ sudo port install gtk2 +quartz +no_x11
|
|
$ sudo port install gtk-osx-application -python27
|
|
$ sudo port install hicolor-icon-theme
|
|
|
|
The next pieces need to be compiled manually. To ensure compatibility with multiple mac os version it is recommended to do:
|
|
$ export MACOSX_DEPLOYMENT_TARGET=10.6
|
|
$ export CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5"
|
|
$ export OBJCFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5"
|
|
$ export CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5"
|
|
$ export LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5 -Wl,-headerpad_max_install_names -Wl,-read_only_relocs -Wl,suppress"
|
|
|
|
- (Optional) libvpx-1.2 has a bug on macos resulting in ugly video. It is recommended to upgrade it manually to 1.3 from source.
|
|
The libvpx build isn't able to produce dual architecture files. To workaround this, configure libvpx twice and use lipo to create a dual architecture
|
|
libvpx.a .
|
|
|
|
- Install libantlr3c (library used by belle-sip for parsing)
|
|
$ git clone -b linphone git://git.linphone.org/antlr3.git
|
|
$ cd antlr3/runtime/C
|
|
$ ./autogen.sh
|
|
$ ./configure --disable-static --prefix=/opt/local && make
|
|
$ sudo make install
|
|
|
|
- Install polarssl (encryption library used by belle-sip)
|
|
$ git clone git://git.linphone.org/polarssl.git -b linphone
|
|
$ cd polarssl
|
|
$ ./autogen.sh && ./configure --prefix=/opt/local && make
|
|
$ sudo make install
|
|
|
|
- Install belle-sip (sip stack)
|
|
$ git clone git://git.linphone.org/belle-sip.git
|
|
$ cd belle-sip
|
|
$ ./autogen.sh && ./configure --prefix=/opt/local && make
|
|
$ sudo make install
|
|
|
|
- Install srtp (optional) for call encryption
|
|
$ git clone git://git.linphone.org/srtp.git
|
|
$ cd srtp && autoconf && ./configure --prefix=/opt/local && make libsrtp.a
|
|
$ sudo make install
|
|
|
|
- Install zrtpcpp (optional), for unbreakable call encryption
|
|
$ sudo port install cmake
|
|
$ git clone https://github.com/wernerd/ZRTPCPP.git
|
|
$ cd ZRTPCPP
|
|
$ cmake -DCORE_LIB=true -DSDES=false CMAKE_INSTALL_NAME_DIR=/usr/local/lib/ -DCMAKE_C_FLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" -DCMAKE_CXX_FLAGS="-arch i386 -arch x86_64 --stdlib=libstdc++ -std=c++11 -lstdc++ -mmacosx-version-min=10.5" -DCMAKE_C_COMPILER=`xcrun --find clang` -DCMAKE_CXX_COMPILER=`xcrun --find clang` .
|
|
$ sudo make install
|
|
|
|
|
|
- Install gsm codec (optional)
|
|
$ git clone git://git.linphone.org/gsm.git
|
|
$ cd gsm
|
|
$ make CCFLAGS="$CFLAGS -c -O2 -DNeedFunctionPrototypes=1"
|
|
$ sudo make install INSTALL_ROOT=/opt/local GSM_INSTALL_INC=/opt/local/include
|
|
|
|
- Compile and install the tunnel library (optional, proprietary extension only)
|
|
|
|
If you got the source code from git, run ./autogen.sh first.
|
|
Then or otherwise, do:
|
|
|
|
$ ./configure --prefix=/opt/local && make && sudo make install
|
|
|
|
- Compile linphone
|
|
|
|
If you got the source code from git, run ./autogen.sh first.
|
|
|
|
Then or otherwise, do:
|
|
|
|
$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/opt/local --with-readline=/opt/local --disable-x11 --with-srtp=/opt/local --with-gsm=/opt/local --enable-zrtp --disable-strict && make
|
|
|
|
Install to /opt/local
|
|
|
|
$ sudo make install
|
|
|
|
Done.
|
|
|
|
If you want to generate a portable bundle, then install gtk-mac-bundler.
|
|
Use git:
|
|
$ git clone https://github.com/jralls/gtk-mac-bundler.git
|
|
$ cd gtk-mac-bundler && make install
|
|
$ export PATH=$PATH:~/.local/bin
|
|
#make this dummy charset.alias file for the bundler to be happy:
|
|
$ sudo touch /opt/local/lib/charset.alias
|
|
|
|
The bundler file in build/macos/linphone.bundle expects some plugins to be installed in /opt/local/lib/mediastreamer/plugins .
|
|
If you don't need plugins, remove or comment out this line from the bundler file:
|
|
<binary >
|
|
${prefix:ms2plugins}/lib/mediastreamer/plugins/*.*.so
|
|
</binary>
|
|
|
|
Then run, inside linphone source tree:
|
|
Run configure as told before but with "--enable-relativeprefix" appended.
|
|
$ make
|
|
$ make bundle
|
|
|
|
The resulting bundle is located in linphone build directory, together with a zipped version.
|
|
|
|
For a better appearance, you can install the gtk-quartz-engine (a gtk theme) that make gtk application more similar to other mac applications (but not perfect).
|
|
|
|
$ git clone https://github.com/jralls/gtk-quartz-engine.git
|
|
$ cd gtk-quartz-engine
|
|
$ autoreconf -i
|
|
$ ./configure --prefix=/opt/local CFLAGS="$CFLAGS -Wno-error" && make
|
|
$ sudo make install
|
|
|
|
Generate a new bundle to have it included.
|
|
|
|
libiconv hack
|
|
*************
|
|
|
|
The Makefile.am rules used to generate the bundle fetch a libiconv.2.dylib from a linphone download page.
|
|
This library adds some additional symbols so that dependencies requiring the iconv from /usr/lib and the ones requiring from the bundle are both satisfied.
|
|
In case this library needs to generated, here are the commands:
|
|
$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
|
|
$ cd libiconv-1.14
|
|
$ patch -p1 < ../linphone/build/macos/libiconv-macos.patch
|
|
$ ./configure --prefix=/opt/local --disable-static 'CFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' 'LDFLAGS=-arch i386 -arch x86_64 -mmacosx-version-min=10.5' CXXFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" && make
|
|
$ make install DESTDIR=/tmp
|
|
|
|
The resulted library can be found in /tmp/opt/local/lib
|
|
|
|
|
|
|
|
|