cmake_minimum_required(VERSION 3.22)

# Statically linked runtime: PluginHost.exe runs without the Visual C++ redistributable.
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

project(PluginHost VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(FetchContent)
FetchContent_Declare(JUCE
  GIT_REPOSITORY https://github.com/juce-framework/JUCE.git
  GIT_TAG 8.0.8
  GIT_SHALLOW ON)
FetchContent_MakeAvailable(JUCE)

juce_add_gui_app(PluginHost
  PRODUCT_NAME "PluginHost"
  COMPANY_NAME "Masher"
  BUNDLE_ID "com.fabian.masher.pluginhost")

target_sources(PluginHost PRIVATE
  src/Main.cpp
  src/stdio_win.cpp)

target_compile_definitions(PluginHost PRIVATE
  JUCE_PLUGINHOST_VST3=1
  JUCE_PLUGINHOST_VST=0
  JUCE_PLUGINHOST_AU=0
  JUCE_USE_CURL=0
  JUCE_WEB_BROWSER=0
  JUCE_WASAPI=1
  JUCE_ASIO=0
  JUCE_DIRECTSOUND=0
  JUCE_MODAL_LOOPS_PERMITTED=0
  JUCE_APPLICATION_NAME_STRING="PluginHost"
  JUCE_APPLICATION_VERSION_STRING="1.0.0")

target_link_libraries(PluginHost PRIVATE
  juce::juce_audio_utils
  juce::juce_audio_processors
  juce::juce_audio_devices
  juce::juce_gui_basics
  juce::juce_recommended_config_flags
  juce::juce_recommended_warning_flags)
