mirror of
https://codeberg.org/armin/rmx-19.git
synced 2026-10-11 16:51:55 +02:00
build for Linux: disable JUCE web browser (no gtk.h), vst3-only, linux install
This commit is contained in:
parent
f469283178
commit
20c999ef21
3 changed files with 60 additions and 13 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
34
Makefile
34
Makefile
|
|
@ -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)
|
||||||
|
|
|
||||||
24
README.md
24
README.md
|
|
@ -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.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue