cmake_minimum_required(VERSION 3.18)
project(repsim LANGUAGES CXX)

# ---- Build options
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# ---- pybind11 & Python
find_package(pybind11 CONFIG REQUIRED)

# ---- Vendored Eigen
set(EIGEN3_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/third_party/eigen")
if (NOT EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/Core")
  message(FATAL_ERROR "Vendored Eigen headers not found at ${EIGEN3_INCLUDE_DIR}")
endif()
include_directories("${EIGEN3_INCLUDE_DIR}")

# ---- Extension module
pybind11_add_module(_repsim
  src/repsim_bindings.cpp
)

target_include_directories(_repsim PRIVATE
  ${CMAKE_SOURCE_DIR}/src
)

# Keep Eigen in MPL2-only mode (optional safety define)
target_compile_definitions(_repsim PRIVATE EIGEN_MPL2_ONLY=1)

# Install to Python package directory
install(TARGETS _repsim DESTINATION repsim)
