# SWIG Python bindings for RapidPoseTriangulation # Find required packages find_package(SWIG REQUIRED COMPONENTS python) find_package(Python3 REQUIRED COMPONENTS Development) # Include SWIG macros include(UseSWIG) # Compiler flags for SWIG wrapper set(RPT_COMPILE_FLAGS -fPIC -march=native -Wall) # Release mode optimizations list(APPEND RPT_COMPILE_FLAGS $<$:-O3;-flto=auto>) # SWIG interface set_property(SOURCE rpt.i PROPERTY CPLUSPLUS ON) set_property(SOURCE rpt.i PROPERTY SWIG_MODULE_NAME rpt) # Set output directory for generated files to match original Makefile behavior set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) swig_add_library(rpt TYPE MODULE LANGUAGE python OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR} OUTFILE_DIR ${CMAKE_CURRENT_SOURCE_DIR} SOURCES rpt.i ) # Link the SWIG module target_link_libraries(rpt PRIVATE rpt_core Python3::Module) target_compile_options(rpt PRIVATE ${RPT_COMPILE_FLAGS}) # Set the output directory set_target_properties(rpt PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) # Ensure SWIG can find headers target_include_directories(rpt PRIVATE ${Python3_INCLUDE_DIRS} )