cmake_minimum_required(VERSION 3.15)
project(techkit_python LANGUAGES CXX)

# Set C++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Find Python and pybind11
find_package(Python REQUIRED COMPONENTS Interpreter Development.Module)
find_package(pybind11 CONFIG REQUIRED)

# TechKit root directory
get_filename_component(TECHKIT_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../.." ABSOLUTE)

# Include TechKit headers
include_directories(${TECHKIT_ROOT}/include)

# Build TechKit static library (exclude from default target)
set(TECHKIT_BUILD_SHARED OFF CACHE BOOL "" FORCE)
set(TECHKIT_BUILD_STATIC ON CACHE BOOL "" FORCE)
set(TECHKIT_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(TECHKIT_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
add_subdirectory(${TECHKIT_ROOT} ${CMAKE_BINARY_DIR}/techkit EXCLUDE_FROM_ALL)

# Create Python module
pybind11_add_module(_core src/techkit_python/_core.cpp)

# Link to TechKit
target_link_libraries(_core PRIVATE techkit_static)

# Additional compile definitions for static linking
target_compile_definitions(_core PRIVATE TECHKIT_STATIC)

# C++11 for compatibility
target_compile_features(_core PRIVATE cxx_std_11)

# Install to techkit package
install(TARGETS _core DESTINATION techkit)

