pluginbridge / CMakeLists.txt
Sitar118
fix: restore v0.5.2 architecture + wire AudioAnalyser correctly
fdc4e41
Raw
History Blame Contribute Delete
4.99 kB
cmake_minimum_required(VERSION 3.22)
project(PluginBridge VERSION 0.4.0 LANGUAGES C CXX OBJCXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_subdirectory(JUCE)
# ─────────────────────────────────────────────────────────────
# Target 1: PluginBridge VST3/AU (loaded in DAW)
# Thin shell: shared memory audio bridge + MCP server
# GUI via CARemoteLayerClient (receives remote layer from Helper)
# ─────────────────────────────────────────────────────────────
juce_add_plugin(PluginBridge
COMPANY_NAME "PluginBridge"
BUNDLE_ID "com.pluginbridge.pluginbridge"
PLUGIN_MANUFACTURER_CODE Plbr
PLUGIN_CODE Plbr
FORMATS VST3 AU
PRODUCT_NAME "PluginBridge"
IS_SYNTH FALSE
NEEDS_MIDI_INPUT TRUE
NEEDS_MIDI_OUTPUT TRUE
IS_MIDI_EFFECT FALSE
EDITOR_WANTS_KEYBOARD_FOCUS TRUE
COPY_PLUGIN_AFTER_BUILD TRUE
VST3_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/VST3"
AU_COPY_DIR "$ENV{HOME}/Library/Audio/Plug-Ins/Components"
)
target_sources(PluginBridge
PRIVATE
Source/Plugin/PluginBridgeProcessor.cpp
Source/Plugin/PluginBridgeEditor.mm
Source/Plugin/PluginPickerComponent.mm
Source/Plugin/HelperConnection.cpp
Source/Plugin/McpServer.cpp
)
target_include_directories(PluginBridge
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/libs
${CMAKE_CURRENT_SOURCE_DIR}/Source/Plugin
${CMAKE_CURRENT_SOURCE_DIR}/Source/Shared
)
target_compile_definitions(PluginBridge
PUBLIC
JUCE_PLUGINHOST_VST3=1
JUCE_PLUGINHOST_AU=1
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0
JUCE_VST3_CAN_REPLACE_VST2=0
JUCE_DISPLAY_SPLASH_SCREEN=0
JUCE_REPORT_APP_USAGE=0
)
target_link_libraries(PluginBridge
PRIVATE
juce::juce_audio_utils
juce::juce_audio_processors
juce::juce_dsp
juce::juce_gui_basics
"-framework QuartzCore"
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags
)
# ─────────────────────────────────────────────────────────────
# Target 2: PluginBridgeHelper (separate process)
# Hosts the actual plugin: audio processing + GUI rendering
# GUI served via CARemoteLayerServer
# ─────────────────────────────────────────────────────────────
juce_add_gui_app(PluginBridgeHelper
PRODUCT_NAME "PluginBridgeHelper"
BUNDLE_ID "com.pluginbridge.helper"
COMPANY_NAME "PluginBridge"
)
target_sources(PluginBridgeHelper
PRIVATE
Source/Helper/main.cpp
Source/Helper/HelperPluginHost.mm
Source/Helper/HelperIPC.cpp
)
target_include_directories(PluginBridgeHelper
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/libs
${CMAKE_CURRENT_SOURCE_DIR}/Source/Helper
${CMAKE_CURRENT_SOURCE_DIR}/Source/Shared
)
target_compile_definitions(PluginBridgeHelper
PRIVATE
JUCE_PLUGINHOST_VST3=1
JUCE_PLUGINHOST_AU=1
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0
JUCE_DISPLAY_SPLASH_SCREEN=0
JUCE_REPORT_APP_USAGE=0
)
target_link_libraries(PluginBridgeHelper
PRIVATE
juce::juce_audio_utils
juce::juce_audio_processors
juce::juce_dsp
juce::juce_gui_basics
juce::juce_events
"-framework QuartzCore"
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags
)
# ─────────────────────────────────────────────────────────────
# Post-build: Copy full PluginBridgeHelper.app into .vst3 bundle
# ─────────────────────────────────────────────────────────────
add_dependencies(PluginBridge PluginBridgeHelper)
add_custom_command(TARGET PluginBridge POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
"$<TARGET_BUNDLE_DIR:PluginBridge_VST3>/Contents/Resources"
COMMAND ${CMAKE_COMMAND} -E rm -rf
"$<TARGET_BUNDLE_DIR:PluginBridge_VST3>/Contents/Resources/PluginBridgeHelper.app"
COMMAND ${CMAKE_COMMAND} -E copy_directory
"$<TARGET_BUNDLE_DIR:PluginBridgeHelper>"
"$<TARGET_BUNDLE_DIR:PluginBridge_VST3>/Contents/Resources/PluginBridgeHelper.app"
COMMENT "Bundling PluginBridgeHelper.app inside PluginBridge.vst3"
)