cmake_minimum_required(VERSION 3.22)
project(MonoSlicer VERSION 1.0.0 LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(lib/JUCE)

juce_add_plugin(MonoSlicer
    COMPANY_NAME           "MonoSlicer"
    PLUGIN_MANUFACTURER_CODE RcSp
    PLUGIN_CODE            MsP1
    FORMATS                AU VST3 Standalone
    PRODUCT_NAME           "MonoSlicer"
    IS_SYNTH               TRUE
    NEEDS_MIDI_INPUT       TRUE
    NEEDS_MIDI_OUTPUT      FALSE
    IS_MIDI_EFFECT         FALSE
    EDITOR_WANTS_KEYBOARD_FOCUS TRUE
    COPY_PLUGIN_AFTER_BUILD FALSE
    VST3_CATEGORIES        Instrument Sampler
)

target_sources(MonoSlicer PRIVATE
    Source/PluginProcessor.cpp
    Source/PluginEditor.cpp
    Source/SliceManager.cpp
    Source/WaveformDisplay.cpp
    Source/PianoRollDisplay.cpp
)

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

target_link_libraries(MonoSlicer
    PRIVATE
        juce::juce_audio_utils
        juce::juce_audio_processors
        juce::juce_audio_formats
        juce::juce_dsp
    PUBLIC
        juce::juce_recommended_config_flags
        juce::juce_recommended_lto_flags
        juce::juce_recommended_warning_flags
)
