cmake_minimum_required(VERSION 3.15)
project(rch_python LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# ---- pybind11 ----
find_package(pybind11 REQUIRED)

# ---- Collect solver sources (exclude prog/ executables) ----
set(SOLVER_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../cpp/src")

file(GLOB_RECURSE SOLVER_SRCS
    "${SOLVER_SRC_DIR}/source/*.cpp"
    "${SOLVER_SRC_DIR}/mtsp/*.cpp"
)

# ---- Build the Python extension module ----
pybind11_add_module(_rch_core
    rch_bind.cpp
    ${SOLVER_SRCS}
)

target_include_directories(_rch_core PRIVATE
    "${SOLVER_SRC_DIR}"
    "${CMAKE_CURRENT_SOURCE_DIR}/../cpp/third_party"
)

target_compile_options(_rch_core PRIVATE -O2)

# ---- Install into the Python package directories ----
install(TARGETS _rch_core DESTINATION rch)
