Skip to content

Commit 8e700a0

Browse files
authored
Create COMPILING.md (#1446)
Move all client and server source compilation instructions to COMPILING.md. From now on, we assume binary installs. iOS instructions from @ngocdh
1 parent d894308 commit 8e700a0

2 files changed

Lines changed: 148 additions & 1 deletion

File tree

COMPILING.md

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
## Points to note
2+
3+
- Jamulus can be compiled for Linux, Windows and macOS. However, the preferred method of supporting these platforms is to use the binaries generated by the autobuild process in the Jamulus repository.
4+
- For unattended installs, see the contributed [installation scripts](https://github.com/jamulussoftware/installscripts)
5+
- There are reports from people who successfully compile and run Jamulus on BSDs.
6+
- Android and iOS are not officially supported.
7+
8+
---
9+
10+
11+
## Download sources
12+
13+
For .tar.gz [use this link](https://github.com/jamulussoftware/jamulus/archive/latest.tar.gz) to download the latest release
14+
15+
For .zip [use this link](https://github.com/jamulussoftware/jamulus/archive/master.zip)
16+
17+
## Linux
18+
19+
#### Install dependencies
20+
21+
On Ubuntu-based distributions 18.04+, Debian 9+, and Raspberry Pi OS:
22+
23+
* build-essential
24+
* qt5-qmake
25+
* qtdeclarative5-dev
26+
* qt5-default
27+
* qttools5-dev-tools
28+
* libjack-jackd2-dev
29+
30+
#### On Fedora 33+
31+
32+
* qt5-qtdeclarative-devel
33+
* jack-audio-connection-kit-dbus
34+
* qt5-qtbase
35+
* jack-audio-connection-kit-devel
36+
* qt5-linguist
37+
38+
#### For all desktop distributions
39+
40+
[QjackCtl](https://qjackctl.sourceforge.io/) is optional, but recommended to configure JACK.
41+
42+
43+
### Standard desktop build
44+
45+
```
46+
make distclean
47+
qmake # qmake-qt5 on Fedora 33
48+
make
49+
sudo make install
50+
```
51+
52+
`make distclean` is optional but ensures a clean build environment. `make install` is optional and puts the Jamulus binary into `/usr/local/bin`.
53+
54+
### “Headless” server build
55+
56+
Although not strictly necessary, we recommend using the headless flag to avoid having to install some of the dependent packages, save some disk space and/or speed up your build time.
57+
58+
Note that you don’t need to install the JACK package(s) for a headless build. If you plan to run headless on Gentoo, or are compiling under Ubuntu for use on another Ubuntu machine, the only packages you should need for a headless build are `qtcore`, `qtnetwork`, `qtconcurrent` and `qtxml` (both for building and running the server).
59+
60+
Compile the sources to ignore the JACK sound library:
61+
62+
```
63+
make distclean # recommended
64+
qmake "CONFIG+=nosound headless"
65+
make
66+
sudo make install # optional
67+
```
68+
69+
To control the server with systemd, see this [unit file example](https://github.com/jamulussoftware/jamulus/blob/master/distributions/jamulus-server.service). See also runtime [configuration options](/wiki/Command-Line-Options), and [this information](/wiki/Tips-Tricks-More#controlling-recording-on-linux-headless-servers) on controlling recordings on headless servers.
70+
71+
---
72+
73+
## Windows
74+
75+
76+
You will need [Qt](https://www.qt.io/download)
77+
78+
* Use the free GPLv2 license for Open Source development
79+
* To determine the Qt version you need, check [qt-installer-windows.qs](https://github.com/jamulussoftware/jamulus/blob/master/windows/qt-installer-windows.qs): under INSTALL_COMPONENTS you will see `qt.qt5.[version]`, e.g., 5123 means version 5.12.3.
80+
* Select Components during installation: Expand the Qt section, find the matching version, e.g., **Qt 5.12.3**, and add the compiler components for your compiler, e.g., `MSVC 2017 32-bit/64-bit` for Visual Studio 2019
81+
* [ASIO development files](https://www.steinberg.net/en/company/developer.html)
82+
83+
### Compiling and building installer
84+
85+
Most users will probably want to use this method:
86+
87+
1. Open PowerShell
88+
1. Navigate to the `jamulus` directory
89+
1. To allow unsigned scripts, right-click on the `windows\deploy_windows.ps1` script, select properties and allow the execution of this script. You can also run `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`. (You can revert this after having run this script. For more information see the [Microsoft PowerShell documentation page](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy)).
90+
1. Edit the $QtCompile32 and $QtCompile64 variables.
91+
1. Run the Jamulus compilation and installer script in PowerShell: `.\windows\deploy_windows.ps1`.
92+
1. You can now find the Jamulus installer in the `.\deploy` directory.
93+
94+
### Compiling only
95+
96+
1. Create a folder under `\windows` called ASIOSDK2
97+
1. Download the [ASIOSDK](https://www.steinberg.net/asiosdk), open the top level folder in the .zip file and copy the contents into `[\path\to\jamulus\source]\windows\ASIOSDK2` so that, e.g., the folder `[\path\to\jamulus\source]\windows\ASIOSDK2\common` exists
98+
1. Open Jamulus.pro in Qt Creator, configure the project with a default kit, then compile & run
99+
100+
---
101+
102+
## macOS
103+
You will need XCode and Qt as follows:
104+
105+
```
106+
brew install qt5
107+
brew link qt5 --force
108+
```
109+
110+
### Generate XCode Project file
111+
112+
`qmake -spec macx-xcode Jamulus.pro`
113+
114+
### Print build targets and configuration in console
115+
116+
`xcodebuild -list -project Jamulus.xcodeproj`
117+
118+
will prompt
119+
120+
```
121+
Targets:
122+
Jamulus
123+
Qt Preprocess
124+
125+
Build Configurations:
126+
Debug
127+
Release
128+
```
129+
130+
If no build configuration is specified and `-scheme` is not passed then "Release" is used.
131+
132+
```
133+
Schemes:
134+
Jamulus
135+
```
136+
137+
### Build the project
138+
139+
`xcodebuild build`
140+
141+
Will build the file and make it available in `./Release/Jamulus.app`
142+
143+
## iOS
144+
* Make sure to install qt5 with the Qt Installer (not homebrew), and explicitly select iOS when choosing the Qt version
145+
* Run `/path/to/qt/5.15.2/ios/bin/qmake -spec macx-xcode Jamulus.pro`
146+
* Open the generated .xcodeproject in XCode, check the Signing & Capabilities and configure a team
147+
* To run on a iOS device, build and run on the device, you'll have first trust your developer profile in device's Settings.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Bugs and feature requests can be [reported here](https://github.com/jamulussoftw
3535
Compilation
3636
-----------
3737

38-
[Please see these instructions](https://jamulus.io/wiki/Compiling)
38+
[Please see these instructions](COMPILING.md)
3939

4040

4141
Contributing

0 commit comments

Comments
 (0)