cmake_minimum_required(VERSION 3.24)
project(aichat_client LANGUAGES CXX)
# Plugin-owned AI client: aichat loads it through vtour.native (ai_client.lua).
# Links the embedded AI core (aichat::core) and the shared HTTP client module.
# No vtour, Lua or ImGui dependency.
find_package(Threads REQUIRED)
function(aichat_client_configure target)
  target_compile_features(${target} PUBLIC cxx_std_17)
  target_include_directories(${target} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
  target_link_libraries(${target} PUBLIC aichat::core vtour_http_client)
  target_link_libraries(${target} PRIVATE nlohmann_json::nlohmann_json Threads::Threads ${CMAKE_DL_LIBS})
  if(WIN32)
    target_compile_definitions(${target} PRIVATE NOMINMAX WIN32_LEAN_AND_MEAN)
  endif()
endfunction()
add_library(vtour_aichat_client SHARED client.cpp ai_service.cpp)
aichat_client_configure(vtour_aichat_client)
set_target_properties(vtour_aichat_client PROPERTIES PREFIX "" OUTPUT_NAME "aichat-client"
  CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN YES)
# Tests use AiService and the same C ABI statically.
add_library(vtour_aichat_client_static STATIC client.cpp ai_service.cpp)
aichat_client_configure(vtour_aichat_client_static)
target_compile_definitions(vtour_aichat_client_static PUBLIC AICHAT_CLIENT_STATIC)
