# KT_KickEM - desktop simulator for the Kick (BE 0700-AAM).
#
# Replacement written for the public kickem-build: the released simulator sources
# (Main.cpp + simulator/*) target a much older Kick UI/hardware protocol (AppHome,
# mt::Kick::HwControlCommands, sig::Signal) that no longer exists in this release.
# This target instead runs the current monolithic Kick app (same wiring as
# apps/kick/Main.cpp) and adds an on-screen hardware panel (kickem_HardwarePanel.h)
# that injects CPktMgr::HWMsg_t messages the same way the keyboard emulation does.
cmake_minimum_required(VERSION 3.15)

file(READ "${CMAKE_SOURCE_DIR}/apps/kick/version.txt" ver)
string(REGEX MATCH "VERSION_MAJOR ([0-9]*)" _ ${ver})
set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "VERSION_MINOR ([0-9]*)" _ ${ver})
set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "VERSION_PATCH ([0-9]*)" _ ${ver})
set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_1})

set(TargetName     KT_KickEM)
set(TargetCompany  MUSICTribe)
set(TargetVersion  ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
project(${TargetName} VERSION ${TargetVersion})

set(TargetSrc_DIR ".")
configure_file(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

juce_add_gui_app(${TargetName}
        PRODUCT_NAME ${TargetName}
        COMPANY_NAME ${TargetCompany})

target_include_directories(${TargetName} PRIVATE
        ${CMAKE_CURRENT_BINARY_DIR}
        ${CMAKE_SOURCE_DIR}/apps/kick)   # reuse the monolith's adapters

target_sources(${TargetName} PRIVATE kickem_Main.cpp kickem_HardwarePanel.h)

target_compile_definitions(${TargetName} PRIVATE
        KICKEM_SIMULATOR=1
        JUCE_WEB_BROWSER=0
        JUCE_USE_CURL=0
        JUCE_APPLICATION_NAME_STRING="$<TARGET_PROPERTY:${TargetName},JUCE_PROJECT_NAME>"
        JUCE_APPLICATION_VERSION_STRING="$<TARGET_PROPERTY:${TargetName},JUCE_VERSION>"
        JUCER_ENABLE_GPL_MODE=0
        JUCE_DISPLAY_SPLASH_SCREEN=0
        JUCE_REPORT_APP_USAGE=0
        JUCE_MODAL_LOOPS_PERMITTED=0
        JUCE_STRICT_REFCOUNTEDPOINTER=1
        JUCE_ASIO=0
        JUCE_JACK=1
        JUCE_ALSA=1
        JUCE_PLUGINHOST_LADSPA=0
        JUCE_PLUGINHOST_VST=0
        JUCE_PLUGINHOST_VST3=${USE_VST}
        JUCE_PLUGINHOST_AU=${USE_AU}
        JUCE_ENABLE_REPAINT_DEBUGGING=0
        THPAR_SQLITE=1
        USE_OPTICK=${USE_OPTICK_VAL})

if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
  target_link_libraries(${TargetName} PRIVATE "-latomic")
endif()

target_link_libraries(${TargetName}
    PUBLIC
        juce::juce_recommended_config_flags
        juce::juce_recommended_warning_flags
    PRIVATE
        audio_engine
        kick_ui
        program_edit_ui
        juce::juce_gui_extra
        juce::juce_audio_devices
        juce::juce_audio_processors
        juce::juce_audio_utils
        contracts
        ipc)
