cmake_minimum_required(VERSION 3.22)
project(24FP_FrequencyPanner VERSION 0.1.1 LANGUAGES C CXX)

if(NOT DEFINED JUCE_DIR)
  message(FATAL_ERROR "Set JUCE_DIR to a JUCE checkout")
endif()

add_subdirectory("${JUCE_DIR}" JUCE)

juce_add_binary_data(FPAssets SOURCES assets/24KD_knob.png assets/24SCD_background_flat_v034.png)

juce_add_plugin(FrequencyPanner24FP
  COMPANY_NAME "24REC Studio"
  BUNDLE_ID "com.24rec.24fp"
  PLUGIN_MANUFACTURER_CODE R24F
  PLUGIN_CODE F24P
  FORMATS VST3 Standalone
  PRODUCT_NAME "24FP FrequencyPanner"
  IS_SYNTH FALSE
  NEEDS_MIDI_INPUT FALSE
  NEEDS_MIDI_OUTPUT FALSE
  IS_MIDI_EFFECT FALSE
  COPY_PLUGIN_AFTER_BUILD FALSE)

target_sources(FrequencyPanner24FP PRIVATE
  src/PluginProcessor.cpp
  src/PluginEditor.cpp)

target_compile_features(FrequencyPanner24FP PRIVATE cxx_std_20)
target_link_libraries(FrequencyPanner24FP PRIVATE FPAssets juce::juce_audio_utils juce::juce_dsp)
target_compile_definitions(FrequencyPanner24FP PRIVATE
  JUCE_WEB_BROWSER=0 JUCE_USE_CURL=0 JUCE_VST3_CAN_REPLACE_VST2=0)

juce_generate_juce_header(FrequencyPanner24FP)

add_executable(fp24_smoke tests/SmokeTest.cpp)
target_compile_features(fp24_smoke PRIVATE cxx_std_20)
target_link_libraries(fp24_smoke PRIVATE FrequencyPanner24FP juce::juce_audio_utils)
target_include_directories(fp24_smoke PRIVATE src)
