cmake_minimum_required(VERSION 3.14)
project(ipdiskann LANGUAGES CXX)

if (PYTHON_EXECUTABLE)
        set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()

find_package(Python3 REQUIRED COMPONENTS Interpreter Development)

execute_process(
        COMMAND ${Python3_EXECUTABLE} -c "import pybind11; print(pybind11.get_cmake_dir())"
        OUTPUT_VARIABLE _pybind11_cmake_dir
        OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND CMAKE_PREFIX_PATH "${_pybind11_cmake_dir}")

find_package(pybind11 CONFIG REQUIRED)


pybind11_add_module(ipdiskann MODULE
        index_wrapper.cpp
        pybind_module.cpp
)

set_target_properties(ipdiskann PROPERTIES
        PREFIX ""
        OUTPUT_NAME "ipdiskann"
        CXX_VISIBILITY_PRESET hidden
        VISIBILITY_INLINES_HIDDEN YES
)

target_link_libraries(ipdiskann PRIVATE diskann)

install(TARGETS ipdiskann
        LIBRARY DESTINATION ${Python3_SITEARCH}   # Unix: .so
        RUNTIME DESTINATION ${Python3_SITEARCH}   # Windows: .pyd
        ARCHIVE DESTINATION ${Python3_SITEARCH}   # fallback
)
