# Manyo Library Utsusemi module

# Find and include swig
CMAKE_POLICY(SET CMP0086 NEW)
find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})

if (POLICY CMP0167)
  cmake_policy (SET CMP0167 NEW)
endif ()
find_package(Boost 1.49.0 REQUIRED
             COMPONENTS serialization filesystem system)

# Set compile options for Utsusemi
if(MACOS)
  set(UTSUSEMI_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O3 -Xpreprocessor -Werror=return-type)
elseif(UNIX)
  set(UTSUSEMI_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O3 -shared)
endif()

# Add LibMany
add_library(UtsusemiLDR SHARED)
target_sources(UtsusemiLDR PRIVATE
    RedisPubSub.cc
    UtsusemiRedisPubSubEventContainer.cc
    UtsusemiRedisPubSubEventMonitorMWPC.cc
    UtsusemiRedisPubSubEventMonitorNeunet.cc
    UtsusemiRedisPubSubEventMonitorReadout1d.cc
    UtsusemiRedisPubSubEventMonitorRPMT.cc
    UtsusemiRedisPubSubEventReader.cc
    )

target_compile_options(UtsusemiLDR PUBLIC ${UTSUSEMI_CXX_FLAGS})

target_include_directories(UtsusemiLDR PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${MANYO_NEXUS_INC_PATH} ${Python_INCLUDE_DIRS} ${CMAKE_INSTALL_PREFIX}/include/manyo ${CMAKE_INSTALL_PREFIX}/include/manyo/MLF ${CMAKE_INSTALL_PREFIX}/include/manyo/Utsusemi ${CMAKE_INSTALL_PREFIX}/include/manyo/Emaki)

target_link_directories(UtsusemiLDR PUBLIC ${CMAKE_INSTALL_PREFIX}/${MANYO_LIB_PATH} ${MANYO_NEXUS_INC_PATH})

target_link_libraries(UtsusemiLDR Manyo MLF Utsusemi Emaki Boost::serialization Boost::filesystem Boost::system Python::Python util dl hiredis event)

target_link_options(UtsusemiLDR PRIVATE ${CMAKE_CXX_FLAGS} ${UTSUSEMI_CXX_FLAGS})

# message("MULTH = " ${MANYO_MULTH})
# message("Library = " ${CMAKE_INSTALL_PREFIX}/lib)

# Set up swig
set_property(SOURCE UtsusemiLDR.i PROPERTY CPLUSPLUS ON)
set_property(SOURCE UtsusemiLDR.i PROPERTY INCLUDE_DIRECTORIES ${CMAKE_INSTALL_PREFIX}/include/manyo ${CMAKE_INSTALL_PREFIX}/include/manyo/MLF ${CMAKE_INSTALL_PREFIX}/include/manyo/Utsusemi ${CMAKE_INSTALL_PREFIX}/include/manyo/Emaki)

swig_add_library(ManyoUtsusemiLDR
  TYPE MODULE
  LANGUAGE python
  OUTPUT_DIR ${PROJECT_BINARY_DIR}/
  SOURCES UtsusemiLDR.i)
swig_link_libraries(ManyoUtsusemiLDR UtsusemiLDR)

# Install library
install(TARGETS UtsusemiLDR
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION ${MANYO_LIB_PATH})
install(FILES RedisPubSub.hh
              UtsusemiRedisPubSubEventContainer.hh
              UtsusemiRedisPubSubEventMonitorMWPC.hh
              UtsusemiRedisPubSubEventMonitorNeunet.hh
              UtsusemiRedisPubSubEventMonitorReadout1d.hh
              UtsusemiRedisPubSubEventMonitorRPMT.hh
              UtsusemiRedisPubSubEventMonitorTemplate.hh
              UtsusemiRedisPubSubEventReader.hh
        DESTINATION include/manyo/UtsusemiLDR)

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