# ============================================================
# dstalk_core — 核心 DLL (插件宿主)
# 包含: 插件管理 / 服务注册 / 事件总线 / 配置存储
# ============================================================

find_package(Boost REQUIRED CONFIG)
find_package(OpenSSL REQUIRED CONFIG)

# 统一的 Boost 编译宏 (header-only 模式)
add_library(dstalk_boost_config INTERFACE)
target_compile_definitions(dstalk_boost_config INTERFACE
    BOOST_ALL_NO_LIB
    BOOST_ERROR_CODE_HEADER_ONLY
    BOOST_JSON_HEADER_ONLY
)

add_library(dstalk SHARED
    src/host.cpp
    src/config_store.cpp
    src/event_bus.cpp
    src/service_registry.cpp
    src/plugin_loader.cpp
    src/boost_json.cpp
)

target_include_directories(dstalk
    PUBLIC include
    PRIVATE src
)

target_compile_features(dstalk PUBLIC cxx_std_20)

target_link_libraries(dstalk
    PRIVATE
        dstalk_boost_config
        boost::boost
        openssl::openssl
)

# dlopen / dlclose / dlsym on Linux and macOS
if(NOT WIN32)
    target_link_libraries(dstalk PRIVATE ${CMAKE_DL_LIBS})
endif()

# 导出 DLL 符号宏
target_compile_definitions(dstalk
    PRIVATE
        DSTALK_BUILD_DLL
    INTERFACE
        DSTALK_USE_DLL
)
