#
# $Id$
# $HeadURL$
# $Author$
#
ADD_SUBDIRECTORY(Console)

# Create a separate library for logger functionality that can be linked by other targets
NGL_ADD_LIBRARY(LogViewLogger AAR SV STATIC
  logger.cpp
  logger.h
)
NGL_TARGET_LINK_LIBRARIES(LogViewLogger
  NGLLogger
)

SET_TARGET_PROPERTIES(LogViewLogger PROPERTIES POSITION_INDEPENDENT_CODE ON)

SET(my_SRCS
  IntegerCalculator.cpp
  IntegerCalculator.hpp
  LogViewBooleanEdit.cpp
  LogViewBooleanEdit.hpp
  LogViewDateTimeEdit.cpp
  LogViewDateTimeEdit.hpp
  LogViewEnumEdit.cpp
  LogViewEnumEdit.hpp
  LogViewField.cpp
  LogViewField.hpp
  LogViewGui.cpp
  LogViewGui.hpp
  LogViewInjectionThread.cpp
  LogViewInjectionThread.hpp
  LogViewMain.cpp
  LogViewModels.cpp
  LogViewModels.hpp
  LogViewOptionDialog.cpp
  LogViewOptionDialog.hpp
  LogViewSpinBox.cpp
  LogViewSpinBox.hpp
  LogViewTableWidget.cpp
  LogViewTableWidget.hpp
  LogViewTabWidget.cpp
  LogViewTabWidget.hpp
  LogViewTelegram.cpp
  LogViewTelegramDialog.cpp
  LogViewTelegramDialog.hpp
  LogViewTelegramEdit.cpp
  LogViewTelegramEdit.hpp
  LogViewTelegramEditModel.cpp
  LogViewTelegramEditModel.hpp
  LogViewTelegram.hpp
  LogViewTelegramSelectionDialog.cpp
  LogViewTelegramSelectionDialog.hpp
  LogViewTetraTelegramsParser.cpp
  LogViewTetraTelegramsParser.hpp
  LogViewTextEdit.cpp
  LogViewTextEdit.hpp
  LogViewValueEdit.cpp
  LogViewValueEdit.hpp
  LogViewWidget.cpp
  LogViewWidget.hpp
  LogViewXdrElement.cpp
  LogViewXdrElement.hpp
  LogViewXdrParser.cpp
  LogViewXdrParser.hpp
  LogViewXdrStandardType.cpp
  LogViewXdrStandardType.hpp
  LogViewXdrStruct.cpp
  LogViewXdrStruct.hpp
  LogViewXdrType.cpp
  LogViewXdrType.hpp
  LogViewXdrValue.cpp
  LogViewXdrValue.hpp
  zsksxd_tetraForLogView.x
)

QT5_ADD_RESOURCES(my_SRCS LogViewResources.qrc)
NGL_ADD_TOOL_ICON(my_SRCS)
NGL_ADD_EXECUTABLE(AAR SV NO_TRANSLATION LogView ${my_SRCS})

if(QT6_GUI_AVAILABLE)
  NGL_TARGET_LINK_LIBRARIES(LogView
    Qt6::Core
    Qt6::Gui
    Qt6::Network
    CoPrtCnv
    nglwidgets
    NGLLogger
    nglapplication
    ngltools
    LogViewLogger
  )
endif()
NGL_INSTALL_TARGET(LogView)
NGL_INSTALL(AAR SV FILES LogView_log4cxx.props DESTINATION bin)



# install on RPM build and copy for local builds so that LogView automatically finds the zsksxd_tetraForLogView.x file
if (BUILD_RPM)
  add_custom_target(zsksxd_tetraForLogView.x_bin) # empty target so that LogView still builds on RPM build
  NGL_INSTALL(AAR SV FILES zsksxd_tetraForLogView.x DESTINATION bin)
else()
  add_custom_command(
    OUTPUT ${CMAKE_BINARY_DIR}/bin/zsksxd_tetraForLogView.x
    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/zsksxd_tetraForLogView.x ${CMAKE_BINARY_DIR}/bin/zsksxd_tetraForLogView.x
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/zsksxd_tetraForLogView.x
    COMMENT "[Local build] Copy zsksxd_tetraForLogView.x for LogView into bin/"
  )
  add_custom_target(zsksxd_tetraForLogView.x_bin DEPENDS ${CMAKE_BINARY_DIR}/bin/zsksxd_tetraForLogView.x)
endif()

if (TARGET LogView)
  # Only add dependencies for locally-created helper targets if they exist.
  set(_logview_deps)
  if (TARGET zsksxd_tetraForLogView.x_bin)
    list(APPEND _logview_deps zsksxd_tetraForLogView.x_bin)
  endif()
  if (TARGET training_area_telegrams.h_bin)
    list(APPEND _logview_deps training_area_telegrams.h_bin)
  endif()
  if(_logview_deps)
    add_dependencies(LogView ${_logview_deps})
  endif()
endif()

