#
# $Id$
# $HeadURL$
# $Author$
#
# Created by Mike Wille, SLSE, 2017-08-17
#

FIND_PACKAGE(BgViewer REQUIRED)
SET(_ver 3.4.1)
IF (WIN32)
SET(_ver 3.4.0)
ENDIF()
FIND_PACKAGE(OpenSceneGraph ${_ver} REQUIRED osgViewer osgDB osgQt osgText osgUtil)
FIND_PACKAGE(OpenGL REQUIRED)

SET(BuildingViewerCommon_SRCS
  bdv_bgviewer_widget_container.cpp
  bdv_bgviewer_widget_container.h
  bdv_communication_interface_internal.cpp
  bdv_communication_interface_internal.h
  bdv_controller.cpp
  bdv_controller.h
  bdv_dds_controller.cpp
  bdv_dds_controller.h
  bdv_helper.cpp
  bdv_helper.h
  bdv_plugin_provider.h
  logger.cpp
  logger.h

  BgViewer/viewerCtrl/buildingmanager.cpp
  BgViewer/viewerCtrl/buildingmanager.h
  BgViewer/viewerCtrl/buildingmanager.h
  BgViewer/viewerCtrl/cameraviewposition.h
  BgViewer/viewerCtrl/iconcomponent.cpp
  BgViewer/viewerCtrl/iconcomponent.h
  BgViewer/viewerCtrl/mainloop.cpp
  BgViewer/viewerCtrl/mainloop.h
  BgViewer/viewerCtrl/messages.cpp
  BgViewer/viewerCtrl/messages.h
  BgViewer/viewerCtrl/modelsplittercomponent.cpp
  BgViewer/viewerCtrl/modelsplittercomponent.h
  BgViewer/viewerCtrl/motionmodel.cpp
  BgViewer/viewerCtrl/motionmodel.h
  BgViewer/viewerCtrl/orthomotionmodel.cpp
  BgViewer/viewerCtrl/orthomotionmodel.h
  BgViewer/viewerCtrl/playercomponent.cpp
  BgViewer/viewerCtrl/playercomponent.h
  BgViewer/viewerCtrl/roomdestructioncomponent.cpp
  BgViewer/viewerCtrl/roomdestructioncomponent.h
  BgViewer/viewerCtrl/textcomponent.cpp
  BgViewer/viewerCtrl/textcomponent.h
  BgViewer/viewerCtrl/viewerinterface.h
  BgViewer/viewerCtrl/viewerinterfaceimpl.cpp
  BgViewer/viewerCtrl/viewerinterfaceimpl.h
  BgViewer/viewerCtrl/viewermainwindow.cpp
  BgViewer/viewerCtrl/viewermainwindow.h
  BgViewer/viewerCtrl/viewwidget.cpp
  BgViewer/viewerCtrl/viewwidget.h
  BgViewer/viewerCtrl/viewwidgetcontainer.cpp
  BgViewer/viewerCtrl/viewwidgetcontainer.h
  BgViewer/viewerCtrl/viewwidgetstate.h
  BgViewer/viewerCtrl/visitors.cpp
  BgViewer/viewerCtrl/visitors.h
)

IF (NOT WIN32)
  FIND_PACKAGE(PkgConfig)
  pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0)
  pkg_check_modules(GSTREAMER_APP REQUIRED gstreamer-app-1.0)

  LIST(APPEND BuildingViewerCommon_SRCS
    BgViewer/viewerCtrl/videocomponent.cpp
    BgViewer/viewerCtrl/videocomponent.h
    BgViewer/viewerCtrl/windowcapturecallback.cpp
    BgViewer/viewerCtrl/windowcapturecallback.h
  )
ENDIF()

NGL_WRAP_UI(BuildingViewerCommon_SRCS
  BgViewer/viewerCtrl/viewwidget.ui
)
INSTALL_SHARED_FILES(BuildingViewerCommon_SRCS
  FILES shaders/roomdestruction.frag shaders/roomdestruction.vert
  DESTINATION BuildingViewer/shaders
  WS
)

NGL_ADD_LIBRARY2(WS BuildingViewerCommon SHARED ${BuildingViewerCommon_SRCS})
NGL_TARGET_LINK_LIBRARIES(BuildingViewerCommon
  PRIVATE
    Qt5::OpenGL
    ${OPENGL_LIBRARIES}
    ${BGVIEWER_DTENTITYOSG_LIBRARY}
    ${BGVIEWER_DTENTITY_LIBRARY}
    ${OPENTHREADS_LIBRARIES} # FIND_PACKAGE(OpenSceneGraph)
    ${OPENSCENEGRAPH_LIBRARIES} # FIND_PACKAGE(OpenSceneGraph)
)
NGL_TARGET_INCLUDE_DIRECTORIES(BuildingViewerCommon
  PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/BgViewer/dtEntity/ext/RapidXML
    ${CMAKE_CURRENT_SOURCE_DIR}/BgViewer/viewerCtrl
    ${CMAKE_CURRENT_SOURCE_DIR}/../share
    ${OSG_INCLUDE_DIR}
)

IF (NOT WIN32)
  NGL_SET_TARGET_PROPERTIES(BuildingViewerCommon PROPERTIES DEFINE_SYMBOL BUILD_WITH_GSTREAMER)
  NGL_TARGET_LINK_LIBRARIES(BuildingViewerCommon
    PRIVATE
      ${GSTREAMER_LIBRARIES}
      ${GSTREAMER_APP_LIBRARIES}
  )
  NGL_TARGET_INCLUDE_DIRECTORIES(BuildingViewerCommon
    PRIVATE
      ${GSTREAMER_INCLUDE_DIRS}
      ${GSTREAMER_APP_INCLUDE_DIRS}
  )
ENDIF()
NGL_ADD_COMPILE_FLAGS(BuildingViewerCommon -DVIEWER_CTRL_LIBRARY_STATIC)

NGL_TARGET_INCLUDE_DIRECTORIES(BuildingViewerCommon
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
    ${CMAKE_CURRENT_BINARY_DIR}/../
)

NGL_TARGET_LINK_LIBRARIES(BuildingViewerCommon
  PRIVATE
    ngltools
    LtsPluginManager
  PUBLIC
    Qt5::Core
    Qt5::Gui
    Qt5::Widgets
    AsbDataPluginInterface
    AvmDataPluginInterface
    BldDataPluginInterface
    AesDataPluginInterface
    SrpDataPluginInterface
    IsmDataPluginInterface
    PpmDataPluginInterface
    PpmParticipantInfoGuiPluginInterface
    IsmShared
    LtsAppManager
    LtsCoordTrans
    LtsSessionData
    LtsSession
    LtsWidgets
    LtsUtilsSettings
    LtsUtilsGuiDds
)

NGL_INSTALL_TARGET(BuildingViewerCommon)
