cmake_minimum_required(VERSION 3.16.0)

# Read version from TDSControl version
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/TDSControl/VERSION" VERSION_CONTENTS) 
message(STATUS "File contents: ${VERSION_CONTENTS}")
string(REGEX MATCH "VERSION = \"([0-9]+\.[0-9]+\.[0-9])\"" _ ${VERSION_CONTENTS})
set(PROJECT_VERSION "${CMAKE_MATCH_1}")

project(tds-control-python VERSION ${PROJECT_VERSION} LANGUAGES C CXX)


# Find python exe and necessary modules
if (CMAKE_VERSION VERSION_LESS 3.18)
  set(DEV_MODULE Development)
else()
  set(DEV_MODULE Development.Module)
endif()
find_package(Python 3.9 REQUIRED COMPONENTS Interpreter ${DEV_MODULE} REQUIRED)

# Find nanobind cmake directory
execute_process(
    COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
    OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE nanobind_ROOT)
# Find nanobind
find_package(nanobind CONFIG REQUIRED)

# Include the C++ library.
add_subdirectory("TDSControl" EXCLUDE_FROM_ALL)

# Create binding library
set(TDS_CONTROL_PY_BINDINGS
        wrapper/py_bindings.cpp)

nanobind_add_module(pytdscontrol MODULE ${TDS_CONTROL_PY_BINDINGS})
target_link_libraries(pytdscontrol PRIVATE tdscontrol)

# Install the compiled extension into the package dir inside the wheel
install(TARGETS pytdscontrol
        LIBRARY DESTINATION "tdscontrol"    # Unix .so
        RUNTIME DESTINATION "tdscontrol")   # Windows .pyd/.dll

