cmake_minimum_required(VERSION 3.22)
project(InstaGrain VERSION 1.0.0)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../JUCE ${CMAKE_CURRENT_BINARY_DIR}/JUCE)

juce_add_plugin(InstaGrain
    COMPANY_NAME "InstaGrain"
    IS_SYNTH TRUE
    NEEDS_MIDI_INPUT TRUE
    NEEDS_MIDI_OUTPUT FALSE
    PLUGIN_MANUFACTURER_CODE Inst
    PLUGIN_CODE Igrn
    FORMATS VST3 AU LV2
    LV2URI "https://github.com/hariel1985/InstaGrain"
    PRODUCT_NAME "InstaGrain"
    COPY_PLUGIN_AFTER_BUILD FALSE
)

juce_generate_juce_header(InstaGrain)

juce_add_binary_data(InstaGrainData SOURCES
    Resources/Rajdhani-Regular.ttf
    Resources/Rajdhani-Medium.ttf
    Resources/Rajdhani-Bold.ttf
)

target_sources(InstaGrain
    PRIVATE
        Source/PluginProcessor.cpp
        Source/PluginEditor.cpp
        Source/LookAndFeel.cpp
        Source/GrainCloud.cpp
        Source/GrainVoice.cpp
        Source/GrainEngine.cpp
        Source/WaveformDisplay.cpp
        Source/GrainControlPanel.cpp
        Source/ScatterPanel.cpp
        Source/EnvelopePanel.cpp
        Source/EffectsPanel.cpp
        Source/MasterPanel.cpp
)

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

target_link_libraries(InstaGrain
    PRIVATE
        InstaGrainData
        juce::juce_audio_basics
        juce::juce_audio_devices
        juce::juce_audio_formats
        juce::juce_audio_processors
        juce::juce_audio_utils
        juce::juce_dsp
    PUBLIC
        juce::juce_recommended_config_flags
        juce::juce_recommended_warning_flags
)
