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

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# static runtime: the plugin needs nothing else installed on Noah's PC
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

set(JUCE_DIR "C:/Users/austo/Projects/JUCE" CACHE PATH "Where JUCE was cloned")
add_subdirectory(${JUCE_DIR} juce)

juce_add_binary_data(FlytuneFonts SOURCES
    fonts/Inter-ExtraBold.ttf fonts/Inter-SemiBold.ttf
    fonts/SpaceMono-Regular.ttf fonts/SpaceMono-Bold.ttf)

set(FLYTUNE_SOURCES src/PluginProcessor.cpp src/PluginEditor.cpp)
set(FLYTUNE_DEFS JUCE_WEB_BROWSER=0 JUCE_USE_CURL=0 JUCE_VST3_CAN_REPLACE_VST2=0 JUCE_DISPLAY_SPLASH_SCREEN=0)

juce_add_plugin(FLYTUNE
    COMPANY_NAME "FLYTRVP"
    PLUGIN_MANUFACTURER_CODE Flyt
    PLUGIN_CODE Fltn
    FORMATS VST3
    PRODUCT_NAME "FLYTUNE"
    IS_SYNTH FALSE
    NEEDS_MIDI_INPUT FALSE
    NEEDS_MIDI_OUTPUT FALSE
    VST3_CATEGORIES Fx "Pitch Shift"
    COPY_PLUGIN_AFTER_BUILD FALSE)
target_sources(FLYTUNE PRIVATE ${FLYTUNE_SOURCES})
target_compile_definitions(FLYTUNE PUBLIC ${FLYTUNE_DEFS})
target_link_libraries(FLYTUNE
    PRIVATE FlytuneFonts juce::juce_audio_utils
    PUBLIC juce::juce_recommended_config_flags juce::juce_recommended_lto_flags)

# the checker: loads the finished .vst3 like FL Studio would, and saves a picture of the window
juce_add_console_app(flytune_check PRODUCT_NAME "flytune_check")
target_sources(flytune_check PRIVATE check/Check.cpp ${FLYTUNE_SOURCES})
target_compile_definitions(flytune_check PRIVATE ${FLYTUNE_DEFS} JUCE_PLUGINHOST_VST3=1)
target_link_libraries(flytune_check
    PRIVATE FlytuneFonts juce::juce_audio_utils
    PUBLIC juce::juce_recommended_config_flags)
