cmake_minimum_required(VERSION 3.18)
project(pyondsel LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# OndselSolver (vendored under extern/) builds as a static lib we link into the extension. Building
# it here (rather than depending on a system install) keeps pyondsel self-contained for `pip install`.
set(ONDSEL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extern/OndselSolver/OndselSolver)
file(GLOB ONDSEL_SOURCES ${ONDSEL_DIR}/*.cpp)

find_package(pybind11 CONFIG REQUIRED)

pybind11_add_module(_pyondsel
    bindings/pyondsel_ext.cpp
    ${ONDSEL_SOURCES})
target_include_directories(_pyondsel PRIVATE ${ONDSEL_DIR})
# OndselSolver uses _USE_MATH_DEFINES on Windows; harmless elsewhere.
target_compile_definitions(_pyondsel PRIVATE $<$<PLATFORM_ID:Windows>:_USE_MATH_DEFINES>)

install(TARGETS _pyondsel DESTINATION pyondsel)
