cmake_minimum_required(VERSION 3.22)

project(SATTARI_ROYAL_CHAIN_PLUGIN VERSION 0.1.0)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(NOT TARGET juce::juce_audio_utils)
    add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../../third_party/JUCE ${CMAKE_BINARY_DIR}/third_party/JUCE)
endif()

juce_add_plugin(SattariRoyalChain
    COMPANY_NAME "Sattari"
    IS_SYNTH FALSE
    NEEDS_MIDI_INPUT FALSE
    NEEDS_MIDI_OUTPUT FALSE
    IS_MIDI_EFFECT FALSE
    EDITOR_WANTS_KEYBOARD_FOCUS FALSE
    COPY_PLUGIN_AFTER_BUILD TRUE
    PLUGIN_MANUFACTURER_CODE Satr
    PLUGIN_CODE Rc01
    FORMATS AU VST3 Standalone
    PRODUCT_NAME "Sattari Royal Chain")

juce_generate_juce_header(SattariRoyalChain)

target_sources(SattariRoyalChain
    PRIVATE
        src/RoyalChainProcessor.cpp
        src/RoyalChainEditor.cpp
        src/CleanModule.cpp
        src/TuneModule.cpp
        src/ControlModule.cpp
        src/ToneModule.cpp
        src/DeEsserModule.cpp
        src/ColorModule.cpp
        src/WidthModule.cpp
        src/SpaceModule.cpp
        src/FinishModule.cpp
        src/VocalCrownCompass.cpp
        src/MacroController.cpp)

target_compile_definitions(SattariRoyalChain
    PUBLIC
        JUCE_WEB_BROWSER=0
        JUCE_USE_CURL=0
        JUCE_VST3_CAN_REPLACE_VST2=0)

target_link_libraries(SattariRoyalChain
    PRIVATE
        juce::juce_audio_utils
    PUBLIC
        juce::juce_recommended_config_flags
        juce::juce_recommended_lto_flags
        juce::juce_recommended_warning_flags)
