cmake_minimum_required(VERSION 3.18)
project(Hub_LAAT LANGUAGES CXX)

find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
find_package(pybind11 CONFIG REQUIRED)
find_package(OpenMP REQUIRED COMPONENTS CXX)
find_package(Threads REQUIRED)

add_library(Hub_LAATlib STATIC
    src/lib/LAAT/antsearch.cpp
    src/lib/LAAT/evaporatepheromone.cpp
    src/lib/LAAT/initializeants.cpp
    src/lib/LAAT/LAAT.cpp
    src/lib/LAAT/preprocess.cpp
    src/lib/LAAT/progressbar.cpp
    src/lib/LAAT/rangesearch.cpp
    src/lib/LAAT/antsearch_new.cpp
    src/lib/LAAT/model.cpp
    src/lib/LAAT/denseregions.cpp
    src/lib/LAAT/removepoints.cpp
    src/lib/LAAT/rangeSearchCluster.cpp
)

set_target_properties(Hub_LAATlib PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_compile_features(Hub_LAATlib PUBLIC cxx_std_17)
target_include_directories(Hub_LAATlib PUBLIC src/lib ext ext/eigen)
target_link_libraries(Hub_LAATlib PUBLIC OpenMP::OpenMP_CXX Threads::Threads)
target_link_libraries(Hub_LAATlib PRIVATE pybind11::module)

pybind11_add_module(Hub_LAAT src/python_bindings/bindings.cpp)
target_link_libraries(Hub_LAAT PRIVATE Hub_LAATlib)
