cmake_minimum_required(VERSION 3.15)

project(rudra512 LANGUAGES CXX)

# -------------------------
# C++ Standard
# -------------------------
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# -------------------------
# Include directories
# -------------------------
include_directories(${PROJECT_SOURCE_DIR}/include)

# -------------------------
# CLI executable
# -------------------------
add_executable(rudra
    tools/cli.cpp
    src/rudra512.cpp
)

# -------------------------
# FIND PYTHON
# -------------------------
find_package(Python COMPONENTS Interpreter Development)

# -------------------------
# FIND PYBIND11
# -------------------------
execute_process(
    COMMAND python -m pybind11 --cmakedir
    OUTPUT_VARIABLE PYBIND11_DIR
    OUTPUT_STRIP_TRAILING_WHITESPACE
)

list(APPEND CMAKE_PREFIX_PATH ${PYBIND11_DIR})
find_package(pybind11)

# -------------------------
# PYTHON MODULE (OPTIONAL)
# -------------------------
if(pybind11_FOUND)
    pybind11_add_module(rudra512
        python/bindings.cpp
        src/rudra512.cpp
    )
endif()

# -------------------------
# INSTALL RULES
# -------------------------
install(TARGETS rudra DESTINATION bin)

if(pybind11_FOUND)
    install(TARGETS rudra512 DESTINATION .)
endif()
