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

Ronan's avatar
Ronan committed
3
# Linphone Desktop
4

5
![screenshot](readme_screen.png)
6

Ronan's avatar
Ronan committed
7 8
Linphone is a free VoIP and video softphone based on the SIP protocol.

9
## Getting started
10 11 12

Here are the general instructions to build linphone for desktop. The specific instructions for each build platform is described just below.

13
1. Install some build tools: `CMake`, `Python` and `Qt5` (_5.9 or newer_). `C++11` support is required!
14 15 16 17
   It's necessary to install the `pip` command and to execute:

        pip install pystache

Ronan's avatar
Ronan committed
18
2. It's necessary to set the environment variable `Qt5_DIR` to point to the path containing the cmake folders of Qt5. Example:
19

20
        Qt5_DIR="~/Qt/5.9/gcc_64/lib/cmake"
Ronan's avatar
Ronan committed
21 22 23

3. The `PATH` environment variable must point to the Qt5 directory `bin`. Example:

Ronan's avatar
Ronan committed
24
        PATH="~/Qt/5.9/gcc_64/bin/:$PATH"
Ronan's avatar
Ronan committed
25

Ronan's avatar
Ronan committed
26
4. Prepare the build by running the `prepare.py` script.
Ronan's avatar
Ronan committed
27 28
5. Build the project using the appropriate build tool (`make`, `ninja`, `Xcode`, `Visual Studio (2013 or 2015 version)`).

29
### Specific instructions for the GNU/Linux and Mac OS X platforms
30 31

1. Prepare the build in a terminal by running the following command in the current directory:
Ronan's avatar
Ronan committed
32

33
        ./prepare.py -DENABLE_DOC=OFF
Ronan's avatar
Ronan committed
34

35
2. Build the project in a terminal with:
Ronan's avatar
Ronan committed
36

37 38
        make

39 40 41 42
#### Mac OS X Troubleshooting
To install the required dependencies on Mac OS X, you can use [Homebrew](https://brew.sh/).
Before you install packages with Brew, you may have to change directories permissions (if you can't change permissions with sudo on a MacOS >= High Sierra, get a look at [this StackOverflow answer](https://stackoverflow.com/questions/16432071/how-to-fix-homebrew-permissions#46844441)).

43
1. First ensure you have installed pip. You can get it for python 2.7 [there](https://stackoverflow.com/questions/34886101/how-to-install-pip-to-python-2-7-10-on-mac#34886254).
44

45
2. Then, you can install a pip package with the following command:
46 47 48

        pip install [package]

49
    For instance, if you don't have pystache and the dot package (contained in graphviz), enter the following commands:
50 51 52 53

        pip install pystache
        pip install graphviz

54
3. Finish the pre-build by cleaning the obsolete files and then run prepare.py and make again:
55 56 57 58 59

        ./prepare.py -c
        ./prepare.py -DENABLE_DOC=OFF
        make

60
### Specific instructions for the Windows platform
61

62
1. Ensure that you have downloaded the `Qt msvc2015 version` (32-bit). (64-bit version is not supported at this moment by Linphone Desktop.) `MinGW` must be installed too.
63

64 65 66
2. Define the `Qt5_DIR` and `PATH` environment variable to the Qt5 installation path:

        Qt5_DIR="C:\Qt\5.9\msvc2015\lib\cmake"
67
        PATH="C:\Qt\5.9\msvc2015\bin;%PATH%"
68 69

3. Open a Windows command line (cmd.exe) in the current directory and run:
70

71
        python prepare.py -G "Visual Studio 14 2015" -DENABLE_DOC=OFF
72

73 74 75
4. Run the following command in the root directory of linphone-desktop:

        cmake --build WORK\desktop\cmake --config Release
76

77
    Or Open the generated Visual Studio solution `Project.sln.lnk` and build it. Check if the `Release` option is selected in Visual Studio. (With `Win32`!)
78

79
## Known bugs and issues
80

81
* __4K (High DPI Displays)__ If you encounter troubles with high DPI displays on Windows, please to see this link: https://bugreports.qt.io/browse/QTBUG-53022
82

83
## Customizing your build
84 85 86 87 88 89 90

Some options can be given during the `prepare.py` step to customize the build. The basic usage of the `prepare.py` script is:

        ./prepare.py [options]

Here are the main options you can use.

91
### Building with debug symbols
92 93 94 95 96

Building with debug symbols is necessary if you want to be able to debug the application using some tools like GDB or the Visual Studio debugger. To do so, pass the `--debug` option to `prepare.py`:

        ./prepare.py --debug [other options]

97
### Generating an installation package (on Windows and Mac OS X platforms)
98 99 100 101 102

You might want to generate an installation package to ease the distribution of the application. To add the package generation step to the build just run:

        ./prepare.py --package [other options]

103
### Activate the build of all codecs
104 105 106

        ./prepare.py --all-codecs

107
### Using more advanced options
108 109 110 111 112 113

The `prepare.py` script is wrapper around CMake. Therefore you can give any CMake option to the `prepare.py` script.
To get a list of the options you can pass, you can run:

        ./prepare.py --list-cmake-variables

Ronan's avatar
Ronan committed
114
The options that enable you to configure what will be built are the ones beginning with `ENABLE_`. So for example, you might want to build linphone without the opus codec support. To do so use:
115 116 117

        ./prepare.py -DENABLE_OPUS=NO

118
## Updating your build
119

120 121 122 123 124 125
You need to update the project:

      git pull --rebase
      git submodule sync && git submodule update --init --recursive

Then simply re-building using the appropriate tool corresponding to your platform (make, Visual Studio...) should be sufficient to update the build (after having updated the source code via git).
126 127
However if the compilation fails, you may need to rebuild everything from scratch using:

Ronan's avatar
Ronan committed
128
        ./prepare.py -c && ./prepare.py [options]
129 130

Then you re-build as usual.
131

132 133 134 135 136 137 138
## Contributing

### Languages

Linphone is getting a full internationalization support, using Transifex platform.
If you want you can contribute at: https://www.transifex.com/belledonne-communications/linphone-desktop/languages/

139 140 141
## License

GPLv2 © [Linphone](https://linphone.org)