project(diagramCommunication)

set(DIAGRACOMMUNICATION_HEADER_FILES
  include/channelConfig.h
  include/baseChannel.h
  include/communicationManager.h
  include/httpChannel.h
  include/webSocketChannel.h
  include/configManager.h
  include/uiCommunicationBus.h
  include/dataProcessor.h
  ../common/include/compiler.hpp
  ../common/include/export.hpp
  ../common/include/operatingSystem.hpp
)

set(DIAGRACOMMUNICATION_SOURCE_FILES
    source/communicationManager.cpp
    source/baseChannel.cpp
    source/webSocketChannel.cpp
    source/httpChannel.cpp
    source/configManager.cpp
    source/uiCommunicationBus.cpp
    source/dataProcessor.cpp
)


if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_library(diagramCommunication SHARED
        MANUAL_FINALIZATION
        ${DIAGRACOMMUNICATION_HEADER_FILES}
        ${DIAGRACOMMUNICATION_SOURCE_FILES}
    )
else()
    add_library(diagramCommunication SHARED
        ${DIAGRACOMMUNICATION_HEADER_FILES}
        ${DIAGRACOMMUNICATION_SOURCE_FILES}
    )
endif()

target_link_libraries(diagramCommunication PUBLIC Qt${QT_VERSION_MAJOR}::Core)
target_link_libraries(diagramCommunication PRIVATE Qt6::Xml)
target_link_libraries(diagramCommunication PRIVATE Qt6::Network)
target_link_libraries(diagramCommunication PRIVATE Qt6::WebSockets)
target_link_libraries(diagramCommunication PRIVATE Qt6::Sql ${PostgreSQL_LIBRARIES})

option(BUILD_SHARED_LIBS "Build as shared library" ON)


target_include_directories(diagramCommunication PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

target_compile_definitions(diagramCommunication
  PUBLIC
    DIAGRAM_DESIGNER_SHARED
  PRIVATE
    DIAGRAM_DESIGNER_EXPORTS
    #QT_NO_KEYWORDS
)
