cmake_minimum_required(VERSION 3.22)
project(PatchworkNativeLab VERSION 0.1.0 LANGUAGES C CXX OBJCXX)
set(CMAKE_CXX_STANDARD 17)
# Keep each plugin/host JUCE runtime private across dynamic module boundaries.
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0" CACHE STRING "Minimum macOS")
set(JUCE_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(JUCE_BUILD_EXTRAS OFF CACHE BOOL "" FORCE)
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/../.deps/JUCE" JUCE)
juce_add_plugin(PatchworkDelay
    COMPANY_NAME "Patchwork Native Lab"
    BUNDLE_ID "org.patchwork.nativelab.delay"
    PLUGIN_MANUFACTURER_CODE Ptch
    PLUGIN_CODE PwDl
    PRODUCT_NAME "Patchwork Tape Delay"
    FORMATS VST3
    IS_SYNTH FALSE
    NEEDS_MIDI_INPUT FALSE
    NEEDS_MIDI_OUTPUT FALSE
    COPY_PLUGIN_AFTER_BUILD FALSE)
target_sources(PatchworkDelay PRIVATE Delay.cpp)
target_compile_definitions(PatchworkDelay PUBLIC JUCE_WEB_BROWSER=0 JUCE_USE_CURL=0 JUCE_VST3_CAN_REPLACE_VST2=0)
target_link_libraries(PatchworkDelay PRIVATE juce::juce_audio_processors PUBLIC juce::juce_recommended_config_flags)
juce_add_console_app(PatchworkNativeHost PRODUCT_NAME "Patchwork Native Host")
target_sources(PatchworkNativeHost PRIVATE NativeHost.mm)
target_compile_definitions(PatchworkNativeHost PRIVATE JUCE_PLUGINHOST_VST3=1 JUCE_PLUGINHOST_AU=0 JUCE_WEB_BROWSER=0 JUCE_USE_CURL=0 JUCE_MODAL_LOOPS_PERMITTED=1)
target_link_libraries(PatchworkNativeHost PRIVATE juce::juce_audio_processors juce::juce_recommended_config_flags "-framework Cocoa")
