From 4f4e5b6c042ae03cea1236391d12dd79b6d7b1a9 Mon Sep 17 00:00:00 2001 From: attila Date: Wed, 4 May 2022 15:29:31 +0200 Subject: [PATCH] CMake: Add support for ARA plugin PIPs --- CMakeLists.txt | 1 + extras/Build/CMake/JUCEUtils.cmake | 45 +++++++++++++------ .../CMake/PIPAudioProcessorWithARA.cpp.in | 23 ++++++++++ 3 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 extras/Build/CMake/PIPAudioProcessorWithARA.cpp.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f2201f82f..c43664e7e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,6 +149,7 @@ install(FILES "${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake" "${JUCE_CMAKE_UTILS_DIR}/JuceLV2Defines.h.in" "${JUCE_CMAKE_UTILS_DIR}/LaunchScreen.storyboard" "${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessor.cpp.in" + "${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessorWithARA.cpp.in" "${JUCE_CMAKE_UTILS_DIR}/PIPComponent.cpp.in" "${JUCE_CMAKE_UTILS_DIR}/PIPConsole.cpp.in" "${JUCE_CMAKE_UTILS_DIR}/RecentFilesMenuTemplate.nib" diff --git a/extras/Build/CMake/JUCEUtils.cmake b/extras/Build/CMake/JUCEUtils.cmake index 94f80e4ded..8f8065fff3 100644 --- a/extras/Build/CMake/JUCEUtils.cmake +++ b/extras/Build/CMake/JUCEUtils.cmake @@ -1888,26 +1888,43 @@ function(juce_add_pip header) endif() if(pip_kind STREQUAL "AudioProcessor") - set(source_main "${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessor.cpp.in") + _juce_get_metadata("${metadata_dict}" documentControllerClass JUCE_PIP_DOCUMENTCONTROLLER_CLASS) + + if(JUCE_PIP_DOCUMENTCONTROLLER_CLASS) + if(NOT TARGET juce_ara_sdk) + message(WARNING + "${header} specifies a documentControllerClass, but the ARA SDK could not be located. " + "Use juce_set_ara_sdk_path to specify the ARA SDK location. " + "This PIP will not be configured.") + endif() - # We add AAX/VST2 targets too, if the user has set up those SDKs + set(source_main "${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessorWithARA.cpp.in") - set(extra_formats) + juce_add_plugin(${JUCE_PIP_NAME} + FORMATS AU VST3 + IS_ARA_EFFECT TRUE) + else() + set(source_main "${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessor.cpp.in") - if(TARGET juce_aax_sdk) - list(APPEND extra_formats AAX) - endif() + # We add AAX/VST2 targets too, if the user has set up those SDKs - if(TARGET juce_vst2_sdk) - list(APPEND extra_formats VST) - endif() + set(extra_formats) - # Standalone plugins might want to access the mic - list(APPEND extra_target_args MICROPHONE_PERMISSION_ENABLED TRUE) + if(TARGET juce_aax_sdk) + list(APPEND extra_formats AAX) + endif() - juce_add_plugin(${JUCE_PIP_NAME} - FORMATS AU AUv3 LV2 Standalone Unity VST3 ${extra_formats} - ${extra_target_args}) + if(TARGET juce_vst2_sdk) + list(APPEND extra_formats VST) + endif() + + # Standalone plugins might want to access the mic + list(APPEND extra_target_args MICROPHONE_PERMISSION_ENABLED TRUE) + + juce_add_plugin(${JUCE_PIP_NAME} + FORMATS AU AUv3 LV2 Standalone Unity VST3 ${extra_formats} + ${extra_target_args}) + endif() elseif(pip_kind STREQUAL "Component") set(source_main "${JUCE_CMAKE_UTILS_DIR}/PIPComponent.cpp.in") juce_add_gui_app(${JUCE_PIP_NAME} ${extra_target_args}) diff --git a/extras/Build/CMake/PIPAudioProcessorWithARA.cpp.in b/extras/Build/CMake/PIPAudioProcessorWithARA.cpp.in new file mode 100644 index 0000000000..522d049af2 --- /dev/null +++ b/extras/Build/CMake/PIPAudioProcessorWithARA.cpp.in @@ -0,0 +1,23 @@ +/* + ============================================================================== + + This file was auto-generated and contains the startup code for a PIP. + + ============================================================================== +*/ + +#include +#include "${JUCE_PIP_HEADER}" + +//============================================================================== +juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new ${JUCE_PIP_MAIN_CLASS}(); +} + +#if JucePlugin_Enable_ARA +const ARA::ARAFactory* JUCE_CALLTYPE createARAFactory() +{ + return juce::ARADocumentControllerSpecialisation::createARAFactory<${JUCE_PIP_DOCUMENTCONTROLLER_CLASS}>(); +} +#endif