File size: 4,994 Bytes
399b070 a781751 399b070 77e86c1 a781751 77e86c1 399b070 a781751 399b070 77e86c1 a781751 fdc4e41 a781751 77e86c1 399b070 77e86c1 399b070 a781751 399b070 77e86c1 a781751 77e86c1 a781751 77e86c1 a781751 77e86c1 a781751 77e86c1 a781751 77e86c1 2f1b494 77e86c1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | 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"
)
|