cmake_minimum_required(VERSION 3.15...4.0)
project(amachine LANGUAGES CXX)

find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
find_package(nanobind CONFIG REQUIRED)

nanobind_add_module(
    _am_fast
    NB_STATIC
    src/amachine/am_fast/am_fast.cpp
)

nanobind_add_stub(
    _am_fast_stub
    MODULE      _am_fast
    OUTPUT      _am_fast.pyi
    PYTHON_PATH $<TARGET_FILE_DIR:_am_fast>
    DEPENDS     _am_fast
)

add_custom_command(
    TARGET _am_fast_stub POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy
        ${CMAKE_CURRENT_BINARY_DIR}/_am_fast.pyi
        ${CMAKE_CURRENT_SOURCE_DIR}/src/amachine/am_fast/_am_fast.pyi
    COMMAND ${CMAKE_COMMAND} -E touch
        ${CMAKE_CURRENT_SOURCE_DIR}/src/amachine/am_fast/py.typed
    COMMENT "Copying stubs to source tree"
)

install(TARGETS _am_fast
    LIBRARY DESTINATION amachine/am_fast
)

install(FILES 
    ${CMAKE_CURRENT_BINARY_DIR}/_am_fast.pyi
    DESTINATION amachine/am_fast
)