cmake_minimum_required(VERSION 3.24)

project(hunjing_lingtai VERSION 0.1.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 编译警告全开并视为错误（AGENTS.md 8.4）
if(MSVC)
  add_compile_options(/W4 /WX)
else()
  add_compile_options(-Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wsign-conversion -Werror)
endif()

# 符号默认隐藏，仅导出 hj_*（API 卫生；由 HJ_API 宏显式导出）
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)

add_library(hunjing SHARED src/lingtai.cpp)
target_include_directories(hunjing PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

# 单元测试（doctest，ADR-025）；单头直接引入，不用 FetchContent 拉网络
add_executable(lingtai_tests tests/test_core.cpp src/lingtai.cpp)
target_include_directories(lingtai_tests PRIVATE
  ${CMAKE_CURRENT_SOURCE_DIR}/include
  ${CMAKE_CURRENT_SOURCE_DIR}/third_party)

enable_testing()
add_test(NAME lingtai_tests COMMAND lingtai_tests)
