include(CheckCXXCompilerFlag)

option(SH4LT_WITH_PYTHON "Python Wrapper" true)
add_feature_info("wrapper-python" SH4LT_WITH_PYTHON "Python Wrapper")

if (SH4LT_WITH_PYTHON)
    add_definitions(-Wno-deprecated-copy)
    
    include_directories(${CMAKE_SOURCE_DIR}/src)
    link_directories(${CMAKE_BINARY_DIR})
    add_subdirectory(pybind11)
    
    pybind11_add_module(sh4lt src/main.cpp)
    target_link_libraries(sh4lt PRIVATE ${SH4LT_LIBRARY}_static)

    # Install
    if(NOT SKBUILD)
      execute_process(
        COMMAND ${PYTHON_EXECUTABLE} -c "from sys import path; print(path[-1])"
        OUTPUT_VARIABLE PYTHON_DIST_PACKAGES
        OUTPUT_STRIP_TRAILING_WHITESPACE
      )
      install(TARGETS sh4lt LIBRARY DESTINATION ${PYTHON_DIST_PACKAGES} COMPONENT lib)
      install(TARGETS sh4lt LIBRARY DESTINATION ${PYTHON_DIST_PACKAGES} COMPONENT dev)
      install(TARGETS sh4lt LIBRARY DESTINATION ${PYTHON_DIST_PACKAGES} COMPONENT dbg)
    else()
      install(TARGETS sh4lt LIBRARY DESTINATION .)
    endif()
    # Tests

    add_test(NAME pysh4lt_shtype COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/tests/check-shtype.py)
    set_tests_properties(pysh4lt_shtype PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}")
    add_test(NAME pysh4lt_shtype_gst COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/tests/check-shtype-gst-caps.py)
    set_tests_properties(pysh4lt_shtype_gst PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}")
    add_test(NAME pysh4lt_writer_follower COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/tests/check-writer-follower.py)
    set_tests_properties(pysh4lt_writer_follower PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}")
    add_test(NAME pysh4lt_writer_follower_minimal COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/tests/check-writer-follower-minimal.py)
    set_tests_properties(pysh4lt_writer_follower_minimal PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}")
    add_test(NAME pysh4lt_monitor COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/tests/check-monitor.py)
    set_tests_properties(pysh4lt_monitor PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}")
endif()
