# =======================
# Find dependent packages
# =======================

# Find Python 3.*
find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED)

# Find pybind11
find_package(pybind11 CONFIG REQUIRED)

# ====================
# Create Python module
# ====================

# Create the pybind11 module
pybind11_add_module(pybind11_gs
    ${CMAKE_CURRENT_SOURCE_DIR}/gazebo_yarp_synchronizer.cpp)

# Link the bindings against ClockRpc
target_link_libraries(pybind11_gs PRIVATE GazeboYarpSynchronizer::GazeboYarpSynchronizer)

# Folder of the Python package within the build tree
set(GYS_PYTHON_PACKAGE "${CMAKE_BINARY_DIR}/gazebo_yarp_synchronizer")

set_target_properties(pybind11_gs PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY "${GYS_PYTHON_PACKAGE}"
    OUTPUT_NAME "bindings")

# Create the __init__.py file
file(GENERATE
    OUTPUT "${GYS_PYTHON_PACKAGE}/__init__.py"
    CONTENT "from .bindings import GazeboYarpSynchronizer")

# ==========================
# Configure the installation
# ==========================

# Allow installing the CMake projects in the active site-package folder.
# Warning: it could be a system folder!
option(GYS_DETECT_ACTIVE_PYTHON_SITEPACKAGES "Detect the active Python interpreter" OFF)

# Python package installed into the detected active interpreter
if(GYS_DETECT_ACTIVE_PYTHON_SITEPACKAGES)
    set(PYTHON_INSTDIR ${Python3_SITELIB}/gazebo_yarp_synchronizer)
# Python package installed in the folder generated by pip
elseif(GYS_CALL_FROM_SETUP_PY)
    set(PYTHON_INSTDIR ${CMAKE_INSTALL_PREFIX})
# Python package installed in a custom install prefix.
# It might require exporting PYTHONPATH to expose the package.
else()
    execute_process(COMMAND ${Python3_EXECUTABLE} -c
        "from distutils import sysconfig; print(sysconfig.get_python_lib(1,0,prefix=''))"
        OUTPUT_VARIABLE _PYTHON_INSTDIR)
    string(STRIP ${_PYTHON_INSTDIR} GYS_PYTHON_INSTALL_DIR)
    set(PYTHON_INSTDIR ${GYS_PYTHON_INSTALL_DIR}/gazebo_yarp_synchronizer)
endif()

# Install the __init__.py file
install(
    FILES "${GYS_PYTHON_PACKAGE}/__init__.py"
    DESTINATION ${PYTHON_INSTDIR})

# Install the target
install(
    TARGETS pybind11_gs
    LIBRARY DESTINATION ${PYTHON_INSTDIR}
    ARCHIVE DESTINATION ${PYTHON_INSTDIR}
    RUNTIME DESTINATION ${PYTHON_INSTDIR})
