# Lib / module for TMS-IF communication - has to be its own lib because of conflicting DDS implementations
#
# $Id$
# $HeadURL$
# $Author$
#

# Make ${Qt6_Gui} optional
if(QT6_GUI_AVAILABLE AND TARGET Qt6::Gui)
  set(Qt6_Gui ${Qt6_Gui})
else()
  set(Qt6_Gui "")
endif()

# Make ${Qt6_WebSockets} optional
if(QT6_GUI_AVAILABLE AND TARGET Qt6::WebSockets)
  set(Qt6_WebSockets ${Qt6_WebSockets})
else()
  set(Qt6_WebSockets "")
endif()


FIND_PACKAGE(TMSIF REQUIRED)

if(WIN32)
  message(FATAL_ERROR "This won't work on Windows !")
endif()


# plugin
set(src
  ../tms_if_adapter.h
  tms_if_adapter.cpp
  ../uav_commander.h
  uav_commander_impl.h
  uav_commander_impl.cpp
  abstract_dispatcher.h
  reader.h
  communication_master.h
  logger.h
  logger.cpp

  dispatchers/report_positions.h
  dispatchers/report_positions.cpp
  dispatchers/report_mission_status.h
  dispatchers/report_mission_status.cpp
  dispatchers/report_radio_link_connection_state.h
  dispatchers/report_radio_link_connection_state.cpp
  dispatchers/report_cbit_status.h
  dispatchers/report_cbit_status.cpp
  dispatchers/report_device_status.h
  dispatchers/report_device_status.cpp
  dispatchers/report_point.h
  dispatchers/report_point.cpp
)

NGL_ADD_LIBRARY2(SV TmsIfAdapter MODULE ${src})
NGL_TARGET_INCLUDE_DIRECTORIES(TmsIfAdapter
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../../
)

if(QT6_GUI_AVAILABLE)
  NGL_TARGET_LINK_LIBRARIES(TmsIfAdapter
  PRIVATE
    TMSIF::tmsif-cyclone
    TMSIF::ddscxx
    TMSIF::ddkit-cyclone
  
    LtsUtilsCoreHeaderOnly
    LtsCoordTrans
    NGLLogger
  
    Qt6::Core
    ${Qt6_Gui}
    Qt6::Network
    ${Qt6_WebSockets}
  )
endif()

target_compile_definitions(TmsIfAdapter PUBLIC DDS_VENDOR_CYCLONE)

NGL_INSTALL_TARGET(TmsIfAdapter)
