build for Linux: disable JUCE web browser (no gtk.h), vst3-only, linux install

This commit is contained in:
Armin 2026-10-01 00:36:37 +02:00
commit 20c999ef21
3 changed files with 60 additions and 13 deletions

View file

@ -68,6 +68,19 @@ endif()
add_subdirectory(${JUCE_ROOT} juce) add_subdirectory(${JUCE_ROOT} juce)
# RMX-19 has no web view. juce_audio_processors depends on juce_gui_extra, whose
# Linux source includes <gtk/gtk.h> and the WebKit headers unless the browser
# component is switched off. Disabling it keeps the Linux build free of GTK and
# WebKit (and of native file-chooser dialogs, which this plug-in never uses).
add_compile_definitions(JUCE_WEB_BROWSER=0)
# AU is only buildable on Apple; on Linux (and everywhere else) ship VST3.
if(APPLE)
set(RMX19_FORMATS AU VST3)
else()
set(RMX19_FORMATS VST3)
endif()
juce_add_plugin(RMX19 juce_add_plugin(RMX19
PRODUCT_NAME "RMX-19" PRODUCT_NAME "RMX-19"
PLUGIN_NAME "RMX-19" PLUGIN_NAME "RMX-19"
@ -79,7 +92,7 @@ juce_add_plugin(RMX19
DESCRIPTION "19 inch rack digital sound module" DESCRIPTION "19 inch rack digital sound module"
PLUGIN_MANUFACTURER_CODE "Rmlb" PLUGIN_MANUFACTURER_CODE "Rmlb"
PLUGIN_CODE "Rmx1" PLUGIN_CODE "Rmx1"
FORMATS AU VST3 FORMATS ${RMX19_FORMATS}
IS_SYNTH TRUE IS_SYNTH TRUE
NEEDS_MIDI_INPUT TRUE NEEDS_MIDI_INPUT TRUE
EDITOR_WANTS_KEYBOARD_FOCUS TRUE EDITOR_WANTS_KEYBOARD_FOCUS TRUE

View file

@ -1,13 +1,14 @@
# RMX-19 build & install Makefile (macOS arm64) # RMX-19 build & install Makefile (macOS arm64 and Linux)
# #
# make configure + build VST3 and AU (Release, arm64) # make configure + build (VST3 everywhere; AU additionally on macOS)
# make install build, codesign (ad-hoc), install into ~/Library/Audio/Plug-Ins, # make install build and install the VST3 (and AU on macOS). macOS bundles
# strip the quarantine attribute from the installed bundles # are ad-hoc codesigned and de-quarantined; on Linux the plug-in
# is copied to ~/.vst3
# make uninstall remove installed bundles # make uninstall remove installed bundles
# make clean delete the CMake build tree # make clean delete the CMake build tree
# #
# Note: after install, restart (or cold-start) the audio host so macOS rescans # Note (macOS): after install, restart (or cold-start) the audio host so it
# AudioComponents. A fresh AU/AUv3 may first appear after a host relaunch. # rescans AudioComponents. A fresh AU/AUv3 may first appear after a host relaunch.
BUILD_DIR ?= build BUILD_DIR ?= build
CONFIG ?= Release CONFIG ?= Release
@ -24,10 +25,18 @@ JUCE_TAG := 8.0.4
VST3_SRC := $(ARTEFACTS)/VST3/$(PLUGIN_BASE).vst3 VST3_SRC := $(ARTEFACTS)/VST3/$(PLUGIN_BASE).vst3
AU_SRC := $(ARTEFACTS)/AU/$(PLUGIN_BASE).component AU_SRC := $(ARTEFACTS)/AU/$(PLUGIN_BASE).component
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
VST3_DEST := $(HOME)/Library/Audio/Plug-Ins/VST3/$(PLUGIN_BASE).vst3 VST3_DEST := $(HOME)/Library/Audio/Plug-Ins/VST3/$(PLUGIN_BASE).vst3
AU_DEST := $(HOME)/Library/Audio/Plug-Ins/Components/$(PLUGIN_BASE).component AU_DEST := $(HOME)/Library/Audio/Plug-Ins/Components/$(PLUGIN_BASE).component
USER_PLUGIN_DIRS := $(HOME)/Library/Audio/Plug-Ins/VST3 $(HOME)/Library/Audio/Plug-Ins/Components USER_PLUGIN_DIRS := $(HOME)/Library/Audio/Plug-Ins/VST3 $(HOME)/Library/Audio/Plug-Ins/Components
else
# Linux/BSD: the VST3 SDK scans ~/.vst3 by default. No AU, no codesigning.
VST3_DEST := $(HOME)/.vst3/$(PLUGIN_BASE).vst3
AU_DEST :=
USER_PLUGIN_DIRS := $(HOME)/.vst3
endif
.EXPORT_ALL_VARIABLES: .EXPORT_ALL_VARIABLES:
CMAKE_BUILD_TYPE := $(CONFIG) CMAKE_BUILD_TYPE := $(CONFIG)
@ -52,6 +61,7 @@ juce:
configure: juce configure: juce
$(CMAKE) -S . -B $(BUILD_DIR) -DCMAKE_BUILD_TYPE=$(CONFIG) -DJUCE_ROOT=$(JUCE_DIR) $(CMAKE) -S . -B $(BUILD_DIR) -DCMAKE_BUILD_TYPE=$(CONFIG) -DJUCE_ROOT=$(JUCE_DIR)
ifeq ($(UNAME_S),Darwin)
install: build install: build
@codesign --force --deep --sign - "$(VST3_SRC)" >/dev/null 2>&1 || true @codesign --force --deep --sign - "$(VST3_SRC)" >/dev/null 2>&1 || true
@codesign --force --deep --sign - "$(AU_SRC)" >/dev/null 2>&1 || true @codesign --force --deep --sign - "$(AU_SRC)" >/dev/null 2>&1 || true
@ -68,10 +78,18 @@ install: build
@codesign -dv "$(VST3_DEST)" 2>&1 | head -1 @codesign -dv "$(VST3_DEST)" 2>&1 | head -1
@echo "" @echo ""
@echo "Restart your DAW / AudioHost to make the AU rescan." @echo "Restart your DAW / AudioHost to make the AU rescan."
else
install: build
@mkdir -p $(USER_PLUGIN_DIRS)
@rm -rf "$(VST3_DEST)"
@cp -Rf "$(VST3_SRC)" "$(USER_PLUGIN_DIRS)/"
@echo "installed:"
@echo " $(VST3_DEST)"
endif
uninstall: uninstall:
@rm -rf "$(VST3_DEST)" "$(AU_DEST)" @rm -rf "$(VST3_DEST)" "$(AU_DEST)"
@echo "removed RMX-19 from user Audio Plug-Ins." @echo "removed RMX-19 from user plug-in folder(s)."
clean: clean:
@rm -rf $(BUILD_DIR) @rm -rf $(BUILD_DIR)

View file

@ -206,24 +206,40 @@ the host map onto the factory bank.
### Prerequisites ### Prerequisites
- macOS on Apple Silicon (arm64), macOS 12.0 or later macOS on Apple Silicon (arm64), macOS 12.0 or later:
- CMake ≥ 3.22 - CMake ≥ 3.22
- A C++17 compiler (Apple Clang via Xcode / Command Line Tools) - A C++17 compiler (Apple Clang via Xcode / Command Line Tools)
- `git` (to fetch the JUCE framework) - `git` (to fetch the JUCE framework)
Linux:
- CMake ≥ 3.22, a C++17 compiler (GCC or Clang), `git`, `pkg-config`
- Development packages used by JUCE (Debian/Ubuntu):
`libasound2-dev libx11-dev libxext-dev libxinerama-dev libxrandr-dev`
`libxcursor-dev libxcomposite-dev libfreetype6-dev libfontconfig1-dev
libcurl4-openssl-dev libgl1-mesa-dev`
- No GTK/WebKit packages are needed: the plug-in does not use the web browser,
native file-chooser dialogs, or `<gtk/gtk.h>`.
The build fetches **JUCE 8.0.4** automatically into `build/JUCE` on first The build fetches **JUCE 8.0.4** automatically into `build/JUCE` on first
configure - no manual JUCE setup is required. configure - no manual JUCE setup is required.
### Commands ### Commands
```sh ```sh
make # configure + build VST3 and AU (Release, arm64) make # configure + build VST3 (and AU on macOS)
make install # build, ad-hoc codesign, and install into ~/Library/Audio/Plug-Ins make install # build + install (~/Library/Audio/Plug-Ins on macOS, ~/.vst3 on Linux)
make uninstall # remove installed bundles make uninstall # remove installed bundles
make clean # delete the build tree (and the fetched JUCE) make clean # delete the CMake build tree
make info # print build paths make info # print build paths
``` ```
On Linux the AU format is skipped automatically; only the VST3 is produced, and
`make install` copies it to `~/.vst3` (JUCE's default Linux VST3 scan path).
A plain `cmake -S . -B build -DJUCE_ROOT=<JUCE source> && cmake --build build`
works on Linux as well.
`make` (configure) is designed to be cheap when nothing changed and refreshes `make` (configure) is designed to be cheap when nothing changed and refreshes
the git branch/hash and timestamp embedded in the LCD footer on every the git branch/hash and timestamp embedded in the LCD footer on every
configure, so the About screen always reflects the current source state. configure, so the About screen always reflects the current source state.