# Manyo Library SerialPySrv module

# Add Manyo SerialPySrv LibMany
add_library(SerialPySrv SHARED)
target_sources(SerialPySrv PRIVATE
        SerialNeutronExchanger.cc
        SerialPythonServerClient.cc
    )

target_compile_options(SerialPySrv PUBLIC ${MANYO_CXX_FLAGS})
if(OpenMP_FOUND)
    target_compile_definitions(SerialPySrv PUBLIC MULTH=${MANYO_MULTH})
endif()
# target_compile_features(SerialPySrv PUBLIC cxx_std_11)

target_include_directories(SerialPySrv PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../core ${Python_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
target_link_directories(SerialPySrv PRIVATE ${CMAKE_INSTALL_PREFIX}/lib)
target_link_libraries(SerialPySrv Manyo)
target_link_options(SerialPySrv PRIVATE ${CMAKE_CXX_FLAGS} ${MANYO_CXX_FLAGS})

# message("Library = " ${CMAKE_INSTALL_PREFIX}/lib)
# message("Sources = " ${SerialPySrv_SRC})

# Set up swig
set_property(SOURCE SerialPySrv.i PROPERTY CPLUSPLUS ON)
set_property(SOURCE SerialPySrv.i PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../core) # Error on "Swig compile SerialPySrv.i for python". This maybe set include path for SerialPySrv.i not CXX.

swig_add_library(ManyoSerialPySrv
    TYPE MODULE
    LANGUAGE python
    OUTPUT_DIR ${PROJECT_BINARY_DIR}/
    SOURCES SerialPySrv.i)
target_link_libraries(ManyoSerialPySrv SerialPySrv)


# Install library
install(TARGETS SerialPySrv
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION ${MANYO_LIB_PATH})

install(FILES SerialNeutronExchanger.hh
              SerialPythonServerClient.hh
        DESTINATION include/manyo/SerialPySrv)

# Install Manyo folder for Python
install(TARGETS ManyoSerialPySrv LIBRARY DESTINATION ${MANYO_PATH}/Manyo/SerialPySrv)
install(FILES ${PROJECT_BINARY_DIR}/SerialPySrv.py DESTINATION ${MANYO_PATH}/Manyo/SerialPySrv)
install(FILES __init__.py DESTINATION ${MANYO_PATH}/Manyo/SerialPySrv)
install(FILES sample/SerialClient.py
        DESTINATION share/Manyo/sample/SerialPySrv)

# Manyo SerialPySrv

add_executable(SerialPythonServer sample/SerialPythonServerMain.cpp)

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)

target_compile_options(SerialPythonServer PUBLIC ${CMAKE_CXX_FLAGS} ${MANYO_CXX_FLAGS} -pthread)
target_include_directories(SerialPythonServer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${Python_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../core)
target_link_libraries(SerialPythonServer Manyo Boost::serialization Boost::system Boost::program_options pthread)
# target_link_options(SerialPythonServer PRIVATE ${CMAKE_CXX_FLAGS} ${MANYO_CXX_FLAGS})


# Install
install(TARGETS SerialPythonServer
        RUNTIME DESTINATION bin)