2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# Build instructions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								There are essentially two ways to build `client-qt` :
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Use `build.py`  script which will build all of Jami (daemon and client)
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Build only this client.
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## Disclaimer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.6 is necessary.
							 
						 
					
						
							
								
									
										
										
										
											2022-12-01 16:37:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								This version is generally not packaged on a lot of platforms, and to control available plugins and such, we have our own Qt packaged (available on https://jami.net on the distributions we support).
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								So, you will need to get Qt 6.6 first. For this, there is 3 methods:
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### Qt from our repo (recommended)
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								If your distribution is supported, we provide a Qt package (libqt-jami) on our repo.
							 
						 
					
						
							
								
									
										
										
										
											2024-09-19 15:50:28 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								The files will be installed to `/usr/lib/libqt-jami`  on Debian-like distributions. For RPM based distributions the files will be installed to `/usr/lib64/qt-jami` .
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#### Install libqt-jami, Ubuntu based
 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								To install libqt-jami on Ubuntu, execute these commands replacing `ubuntu_<VERSION>`  by your distribution version. For example "ubuntu_22.04"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo apt install gnupg dirmngr ca-certificates curl --no-install-recommends
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								curl -s https://dl.jami.net/public-key.gpg | sudo tee /usr/share/keyrings/jami-archive-keyring.gpg > /dev/null
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/nightly/ubuntu_< VERSION > / jami main' > /etc/apt/sources.list.d/jami.list"
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 12:39:45 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo apt-get update & &  sudo apt-get install libqt-jami
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#### Install libqt-jami, Debian based
 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								To install libqt-jami on Debian, execute these commands replacing `debian_<VERSION>`  by your distribution version. For example "debian_11"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo apt install gnupg dirmngr ca-certificates curl --no-install-recommends
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								curl -s https://dl.jami.net/public-key.gpg | sudo tee /usr/share/keyrings/jami-archive-keyring.gpg > /dev/null
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/nightly/debian_< VERSION > / jami main' > /etc/apt/sources.list.d/jami.list"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sudo apt-get update & &  sudo apt-get install jami
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#### Install jami-libqt, Fedora based
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								To install libqt-jami on Fedora, execute these commands replacing `fedora_<VERSION>`  by your distribution version. For example "fedora_38"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 15:55:06 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo dnf config-manager --add-repo https://dl.jami.net/nightly/fedora_< VERSION > /jami-nightly.repo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sudo dnf update & &  sudo dnf install jami-libqt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### Qt from your distribution
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								If Qt 6.6 is available, you can use the packages from your distribution:
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								It should be (For now qt5 only is packaged by distributions, so names can change).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#### Dependencies, Debian based
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo apt-get install cmake make doxygen g++ gettext libnotify-dev pandoc nasm libqrencode-dev \
							 
						 
					
						
							
								
									
										
										
										
											2022-11-03 10:47:46 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                     libnotify-dev libnm-dev \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qt6-base-dev \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qtmultimedia5-dev libqt6svg6-dev qt6-webengine-dev \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qtdeclarative5-dev \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qtquickcontrols2-5-dev qml-module-qtquick2 qml-module-qtquick-controls \
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                     qml-module-qtquick-controls2 qml-module-qtquick-dialogs \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qml-module-qtquick-layouts qml-module-qtquick-privatewidgets \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qml-module-qtquick-shapes qml-module-qtquick-window2 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qml-module-qtquick-templates2 qml-module-qt-labs-platform \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qml-module-qtwebengine qml-module-qtwebchannel \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     qml-module-qt-labs-qmlmodels
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#### Dependencies, Fedora based
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo dnf install qt6-qtsvg-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel qt6-qtdeclarative-devel qt6-qtquickcontrols2-devel qt6-qtquickcontrols qrencode-devel NetworkManager-libnm-devel
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### Qt from sources
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								https://www.qt.io/product/qt6
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								## GNU/Linux
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Then, you can build the project
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								### With build.py
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-27 17:16:23 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								The build.py Jami installer uses **python3 (minimum v3.6)** . If it's not installed,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								please install it. Then run the following to initialize and update
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								the submodules to set them at the top of their latest commit (ideal
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								for getting the latest development versions; otherwise, you can use
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								`git submodule update --init`  then checkout specific commits for each
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								submodule).
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								If you're a developer you need to install clang-format separately before initializing with the command
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sudo apt install clang-format
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								./build.py --init [--qt=< path / to / qt >  (this is required for qmlformatting to work)]
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Then you will need to install dependencies:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  For GNU/Linux
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2023-05-30 16:43:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								sudo ./build.py --dependencies
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Then, you can build daemon and the client using:
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								./build.py --install
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								If you use a Qt version that is not system-wide installed, you need to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								specify its path using the `--qt`  flag, e.g.
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								`./build.py --install --qt=/home/<username>/Qt/6.6.1/gcc_64` .
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-29 14:02:49 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Now you will have the daemon in `daemon/bin/dbus/jamid`  and the client in
							 
						 
					
						
							
								
									
										
										
										
											2023-03-27 17:16:23 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								`build/jami` . You can now run Jami using:
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2023-03-01 16:18:07 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								./build/jami
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Notes:
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  `--global-install`  to install client-qt globally under /usr/local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  `--prefix`  to change the destination of the install.
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 09:39:03 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+ For developers:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    + `--asan`  add address sanitizer on the binary
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    + `--debug`  enable debug symbols
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    + `--testing`  will build the tests for both the daemon and client
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    + `--no-libwrap`  will build the DBUS version.
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Build only the client
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								In order to use the Qt Client it is necessary to have the Qt version 6.6 or higher. If your system does not have it you can install it [from sources or download the binary installer ](https://www.qt.io/download ).
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## Build only this repository
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-04 12:40:55 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Clone with common required submodule (platform specific submodules will be cloned during the configure step)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								git clone https://review.jami.net/jami-client-qt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cd jami-client-qt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								git submodule update --recursive --init
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Use CMake to build
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# In this repository
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								mkdir build
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cd build
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cmake ..
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								make -j
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								cmake can take some options:
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								e.g. (with Qt version from https://jami.net)
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=/usr/lib/libqt-jami
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-26 09:22:44 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								After the build has finished, you are finally ready to launch jami in your build directory.
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								If you want to install it to the path provided by `CMAKE_INSTALL_PREFIX`  you can run:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								make install
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 14:49:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## Building on native Windows
 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Only 64-bit MSVC build can be compiled.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								**Setup Before Building:**
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-17 14:02:41 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Enable Virtualization in the BIOS
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  Install WSL 2 and any package it might require during the Jami build process.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Download [Qt (Open Source) ](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5 )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Using the online installer, install the following Qt 6.6.1 components:
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-09 11:19:52 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  Git 2.10.2
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 14:49:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  -  MSVC 2019 64-bit
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  -  Qt 5 Compatibility Module
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  -  Additional Libraries
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  Qt Multimedia
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  Qt Network Authorization
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  Qt WebChannel
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  Qt WebEngine
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  Qt WebSockets
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    -  Qt WebView
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-09 11:19:52 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Download [Visual Studio ](https://visualstudio.microsoft.com/ ) (versions 2019 or 2022). _See the SDK notes below._ 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-27 17:16:23 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  |              | SDK          | Toolset                                             | MFC              |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  | ------------ | ------------ | --------------------------------------------------- | ---------------- |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  | Requirement: | 10.0.18362.0 | V142 (VisualStudio 2019) / V143 (VisualStudio 2022) | matching Toolset |
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Install Qt Vs Tools under extensions, and configure msvc2019\_64 path under Qt Options. *See the Qt notes below.* 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-17 14:02:41 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  |                      | Qt Version |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  | -------------------- | ---------- |
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 11:44:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  | Minimum requirement: | 6.6.2      |
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  Install [Python3 ](https://www.python.org/downloads/ ) for Windows
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  Using **Elevated Command Prompt** 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```sh
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 14:49:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    python build.py --dependencies
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  Note:
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								>
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								>  1. This command will install **chocolatey** which may require you to restart the Command Prompt to be able to use it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  2. This command will install **msys2 (64 bit)** by using chocolatey command which may cause issues below: <br>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>     a. Choco may require you to restart the Command Prompt after finishing installing msys2. <br>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>     b. Only if you have already installed msys2 (64 bit) under the default installation folder, we will use the existing one.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  3. This command will install **strawberry perl** by using chocolatey command which may fail if you have already installed it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  4. This command will install **cmake** by using chocolatey command which will not add cmake into PATH (environment variable). <br>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  The issue 1, 2(a), 3 can be solved by restarting the Command Prompt under Administrator right and re-run the command. <br>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  The issue 3 can be solved by uninstalling your current strawberry perl and re-run the command. <br>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  The issue 4 can be solved by adding the location of the cmake.exe into PATH. <br>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  Using a new **Non-Elevated Command Prompt** 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 11:44:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    python build.py --install --qt < path-to-qt-bin-folder >  (e.g. C:/Qt/6.6.2/msvc2019_64)
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-09 11:19:52 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								>  **SDK** Note:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  Jami can be build with more recent Windows SDK than the one specified in the table above. However, if your have another version than SDK 10.0.18362.0 installed, you need to identify it according to the example below. And you still need to have the required version in addition to the one you chose.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-17 14:02:41 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2023-04-11 12:30:28 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    python build.py --install --qt < path-to-qt-bin-folder >  --sdk < your-sdk-version > 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-17 14:02:41 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-11 12:30:28 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								>  **Qt** Note: If you omit the `--qt` option, the build script will try to find Qt in the default installation folder, and will take the latest version found. If you have appropriate Qt and SDK versions installed, you won't need to specify any additional options.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-11 12:30:28 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Once the build has finished, you should then be able to use the Visual Studio Solution file in client-qt **build**  folder ** (Configuration = Release, Platform = x64)**
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-16 17:18:09 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								### Build Module Individually
 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-26 09:22:44 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Jami also supports building each module (daemon, jami) separately
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								**Daemon**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Make sure that dependencies is built by build.py
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  On MSVC folder (daemon\MSVC):
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```sh
							 
						 
					
						
							
								
									
										
										
										
											2022-12-09 11:19:52 -03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    cmake -DCMAKE_CONFIGURATION_TYPES="ReleaseLib_win32" -DCMAKE_VS_PLATFORM_NAME="x64" -G "Visual Studio 17 2022" -A x64 -T '$(DefaultPlatformToolset)' ..
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    python winmake.py -b daemon
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  This will generate a `.lib`  file in the path of daemon\MSVC\x64\ReleaseLib_win32\bin
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  Note: each dependencies contrib for daemon can also be updated individually <br>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								>  For example:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    python winmake.py -b opendht
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-26 09:22:44 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								**Jami**
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-27 17:16:23 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Make sure that daemon is built first. Then,
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-27 17:16:23 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    python extras\scripts\build-windows.py --init
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 11:44:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    python extras\scripts\build-windows.py --qt < path-to-qt-bin-folder >  (e.g. C:/Qt/6.6.2/msvc2019_64)
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## Building On MacOS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								**Set up**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-30 08:43:03 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  macOS minimum version 11.0
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  install python3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  download xcode
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  install Qt 6.6
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-19 11:12:19 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Qt 6.6 can be installed via brew
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								brew install qt
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								or downloaded from [Qt (Open Source) ](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5 )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Then, you can build the project
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								**Build with build.py**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								./build.py --init
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								./build.py --dependencies
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								./build.py --install
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								If you use a Qt version that is installed in a different than standard location you need to specify its path
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								QT_ROOT_DIRECTORY=your_qt_directory ./build.py --install
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2022-07-28 12:10:15 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Built client could be find in `build/Jami` 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								## Packaging On Native Windows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  To be able to generate a msi package, first download and install [Wixtoolset ](https://wixtoolset.org/releases/ ).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  In Visual Studio, download WiX Toolset Visual Studio Extension.
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Build client-qt project first, then the JamiInstaller project, msi package should be stored in JamiInstaller\bin\Release
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-07 10:38:19 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## Testing for Client-qt on Windows
 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-16 17:18:09 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-  We currently use [GoogleTest ](https://github.com/google/googletest ) and [Qt Quick Test ](https://doc.qt.io/qt-5/qtquicktest-index.html#introduction ) in our product. To build and run tests, you could use the following command.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2023-04-11 12:30:28 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    python extras\scripts\build-windows.py --tests --qt < path-to-qt-bin-folder > 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-16 17:18:09 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-07 10:38:19 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  Note that, for tests, the path of local storage files for jami will be changed based on following environment variables.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    %JAMI_DATA_HOME% = %TEMP% + '\\jami_test\\jami'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    %JAMI_CONFIG_HOME% = %TEMP% + '\\jami_test\\.config'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    %JAMI_CACHE_HOME% = %TEMP% + '\\jami_test\\.cache'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-02 09:55:39 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-  These environment variables will be temporarily set when using build-windows.py to run tests.
							 
						 
					
						
							
								
									
										
										
										
											2021-05-07 10:38:19 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-22 09:31:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## Troubleshooting
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Build errors may occur if daemon dependencies have been updated since the last build, as the script may not fully detect or rebuild them in the correct order. For the same reason, you may also occasionally encounter linker errors.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								To resolve this, clean and restart the installation to ensure a fresh rebuild of all components (delete all temporary files generated by the build process):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								./build.py --clean
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								./build.py --install
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-16 17:18:09 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## Debugging
 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-20 17:02:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-22 09:31:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Compile the client with `-DCMAKE_BUILD_TYPE=Debug` . Then, if you want to enable logging when running `jami` , launch it with `-d`  or `--debug` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								To diagnose a crash, use GDB:
							 
						 
					
						
							
								
									
										
										
										
											2021-12-22 12:15:05 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-10-22 09:31:36 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```sh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								./build.py --install --debug
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								gdb -ex run --args ./jami --debug
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```