cmake_minimum_required(VERSION 3.22)

project(MixerHost VERSION 0.1.0)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(external/JUCE)

juce_add_gui_app(MixerHost
    PRODUCT_NAME "MixerHost"
)

juce_generate_juce_header(MixerHost)

target_sources(MixerHost PRIVATE
    Source/Main.cpp
    Source/MainComponent.cpp
    Source/Audio/AudioEngine.cpp
    Source/Audio/MixerTrack.cpp
    Source/Audio/PeakMeter.cpp
    Source/GUI/ChannelPageComponent.cpp
    Source/GUI/DevicePageComponent.cpp
    Source/GUI/OverviewPageComponent.cpp
    Source/GUI/RoutingPageComponent.cpp
    Source/GUI/SnapshotsPageComponent.cpp
    Source/GUI/MixerStripComponent.cpp
    Source/GUI/MasterStripComponent.cpp
)

target_include_directories(MixerHost PRIVATE
    Source
)

target_compile_definitions(MixerHost PRIVATE
    JUCE_ASIO=1
    JUCE_ASIO_USE_EXTERNAL_SDK=0
    JUCE_WEB_BROWSER=0
    JUCE_USE_CURL=0
)

target_link_libraries(MixerHost PRIVATE
    juce::juce_audio_utils
    juce::juce_audio_devices
    juce::juce_audio_basics
    juce::juce_audio_processors
    juce::juce_gui_extra
)