# CMakeLists.txt

# -------------------------------
# 构建你的模块-一个目录下的源文件分为lib库和 pyd模块
# -------------------------------
set(BINDPYD flood)
set(SRCS bindings/binding.cpp)
set(LIB lib_flood)

# --- CUDA 可选检测（两步：先找 SDK，再测编译器兼容性）---
find_package(CUDAToolkit QUIET)
if(CUDAToolkit_FOUND)
    include(CheckLanguage)
    check_language(CUDA)
    if(CMAKE_CUDA_COMPILER)
        enable_language(CUDA)
        set(LIB_SRCS flood_solver.cu)
        message(STATUS "flood: CUDA ${CUDAToolkit_VERSION} — GPU acceleration enabled")
    else()
        set(LIB_SRCS fallback.cpp)
        message(WARNING "flood: CUDA SDK found but nvcc incompatible with host compiler — CPU fallback")
    endif()
else()
    set(LIB_SRCS fallback.cpp)
    message(STATUS "flood: CUDA not found — CPU fallback")
endif()

# 1. 静态库：计算核心（CUDA 或 fallback）
add_library(${LIB} STATIC ${LIB_SRCS})
target_link_libraries(${LIB} nlohmann_json::nlohmann_json)

# 2. Python 扩展模块（pybind11 推荐方式，自动处理命名/前缀/后缀）
pybind11_add_module(${BINDPYD} ${SRCS})
target_link_libraries(${BINDPYD} PRIVATE ${LIB})

# 3. 安装规则 —— scikit-build-core 通过 cmake --install 收集产物
#    安装到 miniflood/lib/flood/ ，在 wheel 中可通过 miniflood.lib.flood.flood 导入
install(
  TARGETS ${BINDPYD}
  LIBRARY DESTINATION miniflood/lib/flood
)
