Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e750230
Create COMPILING.md
gilgongo Apr 4, 2021
a946ef7
Update COMPILING.md
gilgongo Apr 4, 2021
fbc9187
Update README.md
gilgongo Apr 4, 2021
0f791e6
Fix typo
ann0see Apr 5, 2021
0cb6375
Update COMPILING.md
gilgongo Apr 5, 2021
0ba3c32
Update COMPILING.md
gilgongo Apr 5, 2021
0d067b6
Update COMPILING.md
gilgongo Apr 5, 2021
b8f991d
Update COMPILING.md
gilgongo Apr 5, 2021
b12be75
Update COMPILING.md
gilgongo Apr 5, 2021
9e9cca0
Update COMPILING.md
gilgongo Apr 5, 2021
b13b249
Update COMPILING.md
gilgongo Apr 5, 2021
34e2c5a
Update COMPILING.md
gilgongo Apr 5, 2021
7843d1a
Update COMPILING.md
gilgongo Apr 6, 2021
9e67be6
Update COMPILING.md
gilgongo Apr 6, 2021
ea02f89
Update COMPILING.md
gilgongo Apr 6, 2021
546b0a9
Update COMPILING.md
gilgongo Apr 8, 2021
368d16a
Update COMPILING.md
gilgongo Apr 8, 2021
5afba72
Update COMPILING.md
gilgongo Apr 10, 2021
da2daab
Update COMPILING.md
gilgongo Apr 10, 2021
c558a62
Update COMPILING.md
gilgongo Apr 10, 2021
952011b
Update COMPILING.md
gilgongo Apr 13, 2021
5e61500
Update COMPILING.md
gilgongo Apr 17, 2021
4605154
Update COMPILING.md
gilgongo Apr 24, 2021
f563262
Update COMPILING.md
gilgongo Apr 24, 2021
0c6c40e
Update COMPILING.md
gilgongo Apr 24, 2021
91ba5db
Update COMPILING.md
gilgongo Apr 24, 2021
f197d9f
Update COMPILING.md
gilgongo Apr 24, 2021
4aba57a
Update COMPILING.md
gilgongo Apr 25, 2021
7d95abd
Update COMPILING.md
gilgongo Apr 26, 2021
e3531ac
Update COMPILING.md
gilgongo May 12, 2021
a7b880e
Update COMPILING.md
gilgongo May 27, 2021
5432ce8
Update COMPILING.md
gilgongo May 29, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions COMPILING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
## Points to note

- 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.
- For unattended installs, see the contributed [installation scripts](https://github.com/jamulussoftware/installscripts)
- There are reports from people who successfully compile and run Jamulus on BSDs.
- Android and iOS are not officially supported.

---


## Download sources

For .tar.gz [use this link](https://github.com/jamulussoftware/jamulus/archive/latest.tar.gz) to download the latest release

For .zip [use this link](https://github.com/jamulussoftware/jamulus/archive/master.zip)

## Linux

#### Install dependencies

On Ubuntu-based distributions 18.04+, Debian 9+, and Raspberry Pi OS:

Comment thread
gilgongo marked this conversation as resolved.
* build-essential
* qt5-qmake
* qtdeclarative5-dev
* qt5-default
* qttools5-dev-tools
* libjack-jackd2-dev

#### On Fedora 33+

* qt5-qtdeclarative-devel
* jack-audio-connection-kit-dbus
* qt5-qtbase
* jack-audio-connection-kit-devel
* qt5-linguist

#### For all desktop distributions

[QjackCtl](https://qjackctl.sourceforge.io/) is optional, but recommended to configure JACK.

Comment thread
gilgongo marked this conversation as resolved.

### Standard desktop build

```
Comment thread
gilgongo marked this conversation as resolved.
make distclean
qmake # qmake-qt5 on Fedora 33
make
sudo make install
```

`make distclean` is optional but ensures a clean build environment. `make install` is optional and puts the Jamulus binary into `/usr/local/bin`.

### “Headless” server build
Comment thread
gilgongo marked this conversation as resolved.

Comment thread
gilgongo marked this conversation as resolved.
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.

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).

Compile the sources to ignore the JACK sound library:

```
make distclean # recommended
qmake "CONFIG+=nosound headless"
make
sudo make install # optional
```

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.

---

## Windows
Comment thread
gilgongo marked this conversation as resolved.


You will need [Qt](https://www.qt.io/download)

* Use the free GPLv2 license for Open Source development
* 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.
* 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
* [ASIO development files](https://www.steinberg.net/en/company/developer.html)

### Compiling and building installer

Most users will probably want to use this method:

1. Open PowerShell
1. Navigate to the `jamulus` directory
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)).
Comment thread
gilgongo marked this conversation as resolved.
1. Edit the $QtCompile32 and $QtCompile64 variables.
1. Run the Jamulus compilation and installer script in PowerShell: `.\windows\deploy_windows.ps1`.
1. You can now find the Jamulus installer in the `.\deploy` directory.

### Compiling only

1. Create a folder under `\windows` called ASIOSDK2
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
1. Open Jamulus.pro in Qt Creator, configure the project with a default kit, then compile & run

---

## macOS
Comment thread
gilgongo marked this conversation as resolved.
You will need XCode and Qt as follows:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry to be a pain on this... :) If we're moving off brew for the automation, should we move off it here, too? @softins

(I was also thinking if we should recommend aqtinstall generally for installing Qt, so these instructions mirror the autobuild more closely.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, probably. We ought also work out how the user can get the correct SDK for compatibility with Qt5, as mentioned in #1655. I'm not an expert in Mac compiling - just feeling my way.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slightly out on a limb with this I realise, since I've moved all the compilation stuff into this file and out of the website, but the website links to this file - which isn't merged yet. What would happen if we merged this now? Would dat be a breaker?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. I don't think so. We could leave it as is.

```
brew install qt5
brew link qt5 --force
```

### Generate XCode Project file

`qmake -spec macx-xcode Jamulus.pro`

### Print build targets and configuration in console

`xcodebuild -list -project Jamulus.xcodeproj`

will prompt

```
Targets:
Jamulus
Qt Preprocess

Build Configurations:
Debug
Release
```

If no build configuration is specified and `-scheme` is not passed then "Release" is used.

```
Schemes:
Jamulus
```

### Build the project

`xcodebuild build`

Will build the file and make it available in `./Release/Jamulus.app`
Comment thread
gilgongo marked this conversation as resolved.

## iOS
* Make sure to install qt5 with the Qt Installer (not homebrew), and explicitly select iOS when choosing the Qt version
* Run `/path/to/qt/5.15.2/ios/bin/qmake -spec macx-xcode Jamulus.pro`
* Open the generated .xcodeproject in XCode, check the Signing & Capabilities and configure a team
* To run on a iOS device, build and run on the device, you'll have first trust your developer profile in device's Settings.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Bugs and feature requests can be [reported here](https://github.com/jamulussoftw
Compilation
-----------

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


Contributing
Expand Down