No description
Find a file
2014-10-27 11:21:27 +01:00
Classes Fixes for 64 bits compilation in subprojects (XMLRPC). 2014-10-23 16:49:34 +02:00
liblinphone-tutorials/hello-world Update hello world project to use the correct libs 2014-08-13 11:07:12 +02:00
linphone.ldb Merge remote-tracking branch 'public/master' into tunnel 2013-11-05 10:54:23 +01:00
linphone.xcodeproj Fix provisioning 2014-10-23 11:45:39 +02:00
LinphoneTester Add signal handler in linphone tester to get backtrace in logs 2014-09-12 11:57:19 +02:00
LinphoneTester Tests Add signal handler in linphone tester to get backtrace in logs 2014-09-12 11:57:19 +02:00
Resources Hide voice mail icon on "1" button if it is not configured yet 2014-10-23 11:16:31 +02:00
Settings/InAppSettings.bundle Add possibility to send logs using enable_log_collect in linphonerc [app] section 2014-10-20 15:46:35 +02:00
submodules Fix 9c9a7f: .git file is within gsm subdirectory 2014-10-27 10:35:25 +01:00
Tools Add iTunesArtwork and some logs to the script 2014-10-22 14:42:07 +02:00
.gitignore Update submodules 2014-07-29 14:54:17 +02:00
.gitmodules Ignore changes in external submodules 2014-09-24 12:03:22 +02:00
COPYING add GPL license 2011-08-12 17:55:48 +02:00
disable-security.patch apple sore version 1.1 2011-11-29 11:43:55 +01:00
ImageOptim.sh Do not hardcode convert path but use which instead (bis) 2014-10-24 15:43:54 +02:00
iTunesArtwork iTunesArtwork must be at the root directory level 2012-12-14 08:17:51 +01:00
linphone-Info.plist Bump version 2014-10-03 15:25:32 +02:00
Linphone.clr Add linphone palette 2012-09-28 12:13:31 +02:00
linphone_Prefix.pch initial commit with basic ui 2010-01-22 11:44:23 +01:00
main.m Use a storyboard to launch the main UI. This is needed for iOS 8 because otherwise, the main window will have bad dimensions in landscape. 2014-09-30 15:57:39 +02:00
NEWS Add NEWS file 2012-10-04 11:01:45 +02:00
README Update README: use Markdown and add HomeBrew installation 2014-10-27 11:21:27 +01:00
UI.md Dynamically change the root view controller, so that when we transition from a portrait-only to a landscape-friendly view. 2014-10-02 16:27:23 +02:00

# LINPHONE ON IPHONE

## BUILD PREQUISITES

Linphone for iPhone depends on liblinphone SDK. This SDK is generated from makefiles and shell scripts.

You must first install both Xcode with iPhone OS SDK and [HomeBrew](brew.sh) or [MacPorts](www.macports.org) for these scripts to work.

### Install dependencies

* Using HomeBrew:

```sh
brew install automake intltool libtool pkg-config coreutils yasm nasm wget imagemagick
```

* Using MacPorts:

```sh
sudo port install coreutils automake autoconf libtool intltool wget pkgconfig cmake gmake yasm nasm grep doxygen ImageMagick optipng antlr3
```

### System linking

* For this part, we assume that `LOCAL_BIN_DIR` is set as following depending on which tool you use:

 For MacPorts: `LOCAL_BIN_DIR=/opt/local/bin`

 For HomeBrew: `LOCAL_BIN_DIR=/usr/local/bin`

* Modify your `PATH` so that the tools are taken in place of the versions brought by Apple in `/usr/bin`. Otherwise the build will fail with obscure errors:

 `export PATH=$LOCAL_BIN_DIR:$PATH`

* Install [gas-preprosessor.pl](http://github.com/yuvi/gas-preprocessor/) (version above July 2013) into your `LOCAL_BIN_DIR` directory

 ```sh
 wget --no-check-certificate https://raw.github.com/yuvi/gas-preprocessor/master/gas-preprocessor.pl
 chmod +x gas-preprocessor.pl
 sudo mv gas-preprocessor.pl $LOCAL_BIN_DIR
 ```

* Link `libtoolize` to `glibtoolize`

 `sudo ln -s $LOCAL_BIN_DIR/glibtoolize $LOCAL_BIN_DIR/libtoolize`

* Link host's `strings` to simulator SDK

 `sudo ln -s /usr/bin/strings /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings`


## BUILDING THE SDK

* GPL third parties versus non GPL third parties

 This SDK can be generated in 2 flavors. First is with GPL third parties, it means liblinphone includes GPL third parties like FFMPEG or X264.
 If you choose this flavor, your final application must comply with GPL in any case. This is the default mode.

 To generate the liblinphone multi arch sdk in GPL mode, do:

 `cd submodules/build && make all`

 ALTERNATIVELY, you can force liblinphone to use only non GPL code except for liblinphone, mediastreamer2, oRTP, belle-sip.
 If you choose this flavor, your final application  is still subject to GPL except if you have a commercial license for liblinphone, mediastreamer2, oRTP, belle-sip.

 To generate the liblinphone multi arch sdk in non GPL mode, do:

 `cd submodules/build && make all enable_gpl_third_parties=no`

* For Xcode prior to 4.5, use:

 `make -f Makefile.xcode4.4`

* ZRTP support

 You can disable ZRTP support with:

 `make all enable_zrtp=no`

* In case you upgrade your IOS SDK, you may force rebuilding everything, by doing

 `make veryclean && make all`

**The resulting sdk is in `liblinphone-sdk/` root directory.**

## BUILDING THE APPLICATION

After the SDK is built, just open the Linphone Xcode project with Xcode, and press `Run`.

* Note regarding third party components subject to license:

 The liblinphone-sdk is compiled with third parties code that are subject to patent license, specially: AMR, SILK G729 and H264 codecs.
 Linphone controls the embedding of these codecs thanks to the preprocessor macros HAVE_SILK, HAVE_AMR, HAVE_G729 HAVE_OPENH264 positioned in Xcode project.
 Before embedding these 4 codecs in the final application, make sure to have the right to do so.

## LIMITATIONS, KNOWN BUGS

* Video capture does not work in simulator (not implemented by simulator?).

## DEBUGING THE SDK

Sometime it can be useful to step into liblinphone SDK functions. To allow Xcode to enable breakpoint within liblinphone, SDK must be built with debug symbols.
To add debug symbol to liblinphone SDK, add make option `enable_debug=yes`:

`make all enable_gpl_third_parties=no enable_debug=yes`

## DEBUGING MEDIASTREAMER2

For iOS specific media development like audio video capture/playback it may be interesting to use `mediastream` test tool.
The project `submodule/liblinphone.xcodeproj` can be used for this purpose.