#
# $Id$
# $HeadURL$
# $Author$
#

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

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

SET(nglapplication_SRCS
  nglapplication.cpp
  nglapplication.h
  nglloggerhandler.cpp
  nglloggerhandler.h
  ngl_qt_msg_handler.inc
  ngl_signal_handler.inc
)
NGL_ADD_LIBRARY2(ALL nglapplication SHARED ${nglapplication_SRCS})
NGL_TARGET_INCLUDE_DIRECTORIES(nglapplication
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
)
if(QT6_GUI_AVAILABLE)
  NGL_TARGET_LINK_LIBRARIES(nglapplication
    PRIVATE
      NGLLogger
      nglsettings
    PUBLIC
      Qt6::Core
      ${Qt6_Widgets}
  )
endif()
NGL_INSTALL_TARGET(nglapplication)

#
# nglsingleapplication
#
SET(nglsingleapplication_SRCS
  nglsingleapplication.cpp
  nglsingleapplication.h
  nglloggerhandler.cpp
  nglloggerhandler.h
  ngl_qt_msg_handler.inc
  ngl_signal_handler.inc
)
NGL_ADD_LIBRARY2(WS nglsingleapplication SHARED ${nglsingleapplication_SRCS})
NGL_TARGET_INCLUDE_DIRECTORIES(nglsingleapplication
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
)
if(QT6_GUI_AVAILABLE)
  NGL_TARGET_LINK_LIBRARIES(nglsingleapplication
    PRIVATE
      NGLLogger
      nglsettings
    PUBLIC
      Qt6::Core
      ${Qt6_Widgets}
      qtsingleapplication
  )
endif()
NGL_INSTALL_TARGET(nglsingleapplication)

#
# nglcoreapplication
#
SET(nglcoreapplication_SRCS
  nglcoreapplication.cpp
  nglcoreapplication.h
  nglloggerhandler.cpp
  nglloggerhandler.h
  ngl_qt_msg_handler.inc
  ngl_signal_handler.inc
)

NGL_ADD_LIBRARY2(ALL nglcoreapplication SHARED ${nglcoreapplication_SRCS})
NGL_TARGET_INCLUDE_DIRECTORIES(nglcoreapplication
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(nglcoreapplication
  PRIVATE
    NGLLogger
    nglsettings
  PUBLIC
    Qt6::Core
)
NGL_INSTALL_TARGET(nglcoreapplication)

#
# nglsinglecoreapplication
#
SET(nglsinglecoreapplication_SRCS
  nglsinglecoreapplication.cpp
  nglsinglecoreapplication.h
  nglloggerhandler.cpp
  nglloggerhandler.h
  ngl_qt_msg_handler.inc
  ngl_signal_handler.inc
)

NGL_ADD_LIBRARY2(AAR SV nglsinglecoreapplication SHARED ${nglsinglecoreapplication_SRCS})
NGL_TARGET_INCLUDE_DIRECTORIES(nglsinglecoreapplication
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(nglsinglecoreapplication
  PRIVATE
    NGLLogger
    nglsettings
  PUBLIC
    Qt6::Core
    qtsinglecoreapplication
)
NGL_INSTALL_TARGET(nglsinglecoreapplication)

#
# nglguiapplication
#
SET(nglguiapplication_SRCS
  nglguiapplication.cpp
  nglguiapplication.h
  nglloggerhandler.cpp
  nglloggerhandler.h
  ngl_qt_msg_handler.inc
  ngl_signal_handler.inc
)

NGL_ADD_LIBRARY2(ALL nglguiapplication SHARED ${nglguiapplication_SRCS})
NGL_TARGET_INCLUDE_DIRECTORIES(nglguiapplication
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(nglguiapplication
  PRIVATE
    NGLLogger
    nglsettings
  PUBLIC
    Qt6::Gui
)
NGL_INSTALL_TARGET(nglguiapplication)
