cmake_minimum_required(VERSION 3.28...3.30)

# Kennel Link: the thin OBS side of Kennel. The Kennel app detects, clips and draws overlays by
# itself; this plugin lets it drive OBS (replay buffer, overlay browser sources, POV swaps, stream
# state) and shows the app's UI as an OBS dock. Built from obs-plugintemplate.
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/common/bootstrap.cmake" NO_POLICY_SCOPE)

project(${_name} VERSION ${_version})

option(ENABLE_FRONTEND_API "Use obs-frontend-api for UI functionality" ON)
option(ENABLE_QT "Use Qt functionality" ON)

include(compilerconfig)
include(defaults)
include(helpers)

add_library(${CMAKE_PROJECT_NAME} MODULE)

find_package(libobs REQUIRED)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE OBS::libobs)

find_package(obs-frontend-api REQUIRED)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE OBS::obs-frontend-api)

find_package(Qt6 COMPONENTS Widgets Core Network)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Qt6::Core Qt6::Widgets Qt6::Network)
target_compile_options(
  ${CMAKE_PROJECT_NAME}
  PRIVATE $<$<C_COMPILER_ID:Clang,AppleClang>:-Wno-quoted-include-in-framework-header -Wno-comma>
)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES AUTOMOC ON AUTOUIC ON AUTORCC ON)

target_sources(
  ${CMAKE_PROJECT_NAME}
  PRIVATE src/plugin-main.cpp src/link-config.cpp src/link-server.cpp src/obs-actions.cpp src/link-dialog.cpp
          src/virtualcam.cpp src/audio-duck.cpp src/picture.cpp src/borders.cpp src/replay-pip.cpp src/replay-video.cpp
          src/stream-clips.cpp src/shown.cpp src/stream-mix.cpp src/vertical.cpp src/stream-format.cpp src/director.cpp src/rec-quality.cpp
)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE src third_party)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON)

set_target_properties_plugin(${CMAKE_PROJECT_NAME} PROPERTIES OUTPUT_NAME ${_name})
