# Extract major and minor version components
if("${Python3_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)\\.[0-9]+")
    set(PYTHON_MAJOR_VERSION "${CMAKE_MATCH_1}")
    set(PYTHON_MINOR_VERSION "${CMAKE_MATCH_2}")
else()
    message(FATAL_ERROR "Failed to extract major and minor versions from Python3_VERSION.")
endif()

# Convert major and minor versions into an integer
math(EXPR PYTHON_VERSION_INT "${PYTHON_MAJOR_VERSION} * 100 + ${PYTHON_MINOR_VERSION}")

include_directories(${Python3_INCLUDE_DIRS})

configure_file(eztrace_python.h.in eztrace_python.h @ONLY)

# C Tracer library
add_library(eztrace-python SHARED
  eztrace_python.c
)

target_link_libraries(eztrace-python
  PRIVATE
    dl
    eztrace-core
    eztrace-lib
    eztrace-instrumentation
    ${Python3_LIBRARIES}
)

target_include_directories(eztrace-python
  PRIVATE
  ${CMAKE_SOURCE_DIR}/src/core/include/eztrace-core/
  ${CMAKE_CURRENT_BINARY_DIR}
)

install(TARGETS eztrace-python
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

# Configure and install the Python script
configure_file(eztrace.py.in eztrace.py @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/eztrace.py
        DESTINATION ${CMAKE_INSTALL_BINDIR})
