README.md 3.89 KB
Newer Older
Erwan Croze's avatar
Erwan Croze committed
1 2
[![pipeline status](https://gitlab.linphone.org/BC/public/linphone/badges/master/pipeline.svg)](https://gitlab.linphone.org/BC/public/linphone/commits/master)

jehan's avatar
jehan committed
3
liblinphone
François Grisez's avatar
François Grisez committed
4 5
========

jehan's avatar
jehan committed
6
This is liblinphone, a free (GPL) video voip library based on the SIP protocol.
smorlat's avatar
smorlat committed
7

jehan's avatar
jehan committed
8
This library is used by Linphone. It's source code is available at *linphone-desktop[1]*.
François Grisez's avatar
François Grisez committed
9

smorlat's avatar
smorlat committed
10

jehan's avatar
jehan committed
11
Building liblinphone
François Grisez's avatar
François Grisez committed
12
-----------------
13

François Grisez's avatar
François Grisez committed
14
### Required dependencies
15

16 17 18 19 20 21 22 23 24 25
* **BcToolbox[2]:** portability layer
* **BelleSIP[3]:** SIP stack
* **Mediastreamer2[4]:** multimedia engine
* **Belcard[5]:** VCard support
* **libxml2**
* **zlib**
* **libsqlite3:** user data storage (disablable)
* **gettext** and **libintl**: internationalization support (disablable)
* **python interpreter** and **pystache**, **six** python module (needed for C++ wrapper and API documentaiton)
* **doxygen** and **dot** (needed for C++ wrapper and API documentation)
26 27


François Grisez's avatar
François Grisez committed
28
### Opitonal dependencies
Gautier Pelloux-Prayer's avatar
Gautier Pelloux-Prayer committed
29

30 31
* **Bzrtp[6]**: zrtp stack used for Linphone Instant Messaging Encryption.
* For API documentatino generation: **sphinx**, **javasphinx**, **sphinx_csharp** python modules are needed.
Simon Morlat's avatar
Simon Morlat committed
32 33


François Grisez's avatar
François Grisez committed
34
### Build instructions
Simon Morlat's avatar
Simon Morlat committed
35

François Grisez's avatar
François Grisez committed
36 37 38 39
	cmake . -DCMAKE_INSTALL_PREFIX=<prefix> -DCMAKE_PREFIX_PATH=<search_prefixes>
	
	make
	make install
40

aymeric's avatar
aymeric committed
41

François Grisez's avatar
François Grisez committed
42
### Supported build opitons
43

44 45 46 47 48 49 50 51 52 53 54
* **`CMAKE_INSTALL_PREFIX=<string>`** : install prefix
* **`CMAKE_PREFIX_PATH=<string>`**    : column-separated list of prefixes where to search for dependencies
* **`ENABLE_SHARED=NO`**              : do not build the shared library
* **`ENABLE_STATIC=NO`**              : do not build the static library
* **`ENABLE_STRICT=NO`**              : build without strict compilation flags (-Wall -Werror)
* **`ENABLE_DOC=YES`**                : Make the reference documentation of liblinphone to generated
* **`ENABLE_UNIT_TESTS=NO`**          : do not build testing binaries
* **`ENABLE_VCARD=NO`**               : disable VCard support
* **`ENABLE_SQLITE_STORAGE=NO`**      : disable SQlite user data storage (message, history, contacts list)
* **`ENABLE_TOOLS=NO`**               : do not build tool binaries
* **`ENABLE_LIME=YES`**               : disable Linphone Instant Messaging Encryption
55

François Grisez's avatar
François Grisez committed
56
### Note for packagers
57

François Grisez's avatar
François Grisez committed
58 59 60
Our CMake scripts may automatically add some paths into research paths of generated binaries.
To ensure that the installed binaries are striped of any rpath, use `-DCMAKE_SKIP_INSTALL_RPATH=ON`
while you invoke cmake.
61

jehan's avatar
jehan committed
62 63 64 65 66 67 68
Rpm packaging
liblinphone can be generated with cmake3 using the following command:
mkdir WORK
cd WORK
cmake3 ../
make package_source
rpmbuild -ta --clean --rmsource --rmspec liblinphone-<version>-<release>.tar.gz
aymeric's avatar
aymeric committed
69 70


François Grisez's avatar
François Grisez committed
71 72
Notes for developers
--------------------
aymeric's avatar
aymeric committed
73 74 75 76

Here is a short description of the content of the source tree.


François Grisez's avatar
François Grisez committed
77 78
- **coreapi/** is the central point of linphone, which handles relationship between sip signalisation and media
               streaming. It contains an easy to use api to create a sip phone.
aymeric's avatar
aymeric committed
79 80


François Grisez's avatar
François Grisez committed
81
- **console/**
aymeric's avatar
aymeric committed
82
	* linphonec.c is the main file for the console version of linphone.
83 84
	* sipomatic.c / sipomatic.h contains the code for sipomatic, the test program that auto-answer to linphone calls.
	* shell.c (program name: linphonecsh) is a small utilities to send interactive commands to a running linphonec daemon.
Gautier Pelloux-Prayer's avatar
Gautier Pelloux-Prayer committed
85

François Grisez's avatar
François Grisez committed
86 87 88 89 90
- **share/** contains translation, documentation, rings and hello sound files.


------------------------------

aymeric's avatar
aymeric committed
91

François Grisez's avatar
François Grisez committed
92 93 94 95 96
- [1] linphone-desktop: git://git.linphone.org/linphone-desktop.git
- [2] bctoolbox: git://git.linphone.org/bctoolbox.git *or* <https://www.linphone.org/releases/sources/bctoolbox>
- [3] belle-sip: git://git.linphone.org/belle-sip.git *or* <https://www.linphone.org/releases/sources/belle-sip>
- [4] mediastreamer2: git://git.linphone.org/mediastreamer2.git *or* <https://www.linphone.org/releases/sources/mediastreamer>
- [5] belcard: git://git.linphone.org/belcard.git *or* <https://www.linphone.org/releases/sources/belcard>
97
- [6] bzrtp: git://git.linphone.org/bzrtp.git *or* <https://www.linphone.org/releases/sources/bzrtp>