#
# @RDE_HEADER@
# $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()


FIND_PACKAGE(XercesC)
FIND_PACKAGE(XSD)
IF (NOT XercesC_FOUND OR NOT XSD_FOUND)
  MESSAGE(WARNING "XercesC or XSD not found; skipping MSDL")
  RETURN()
ENDIF()

SET(zwmsmsdl_SRCS
  msdl_export.cpp
  msdl_export.h
  msdl_export_scenario_data.cpp
  msdl_export_scenario_data.h
  msdl_import.cpp
  msdl_import.h
  msdl_import_show.cpp
  msdl_import_show.h
  msdl_logging.cpp
  msdl_logging.h
  msdl_mapping_dialog.cpp
  msdl_mapping_dialog.h
  msdl_types.cpp
  msdl_types.h
  zwmsmsdl_export.h
)

SET(zwmsmsdl_UICS
  ui/msdl_import_show.ui  
  ui/msdl_import.ui
  ui/msdl_export.ui
  ui/msdl_export_scenario_data.ui
  ui/msdl_mapping_dialog.ui
)

SET(zwmsmsdl_XSDS
  xsd/MilitaryScenario_1.0.0.xsd
  xsd/MsdlCodes_1.0.0.xsd
  xsd/MsdlComplexTypes_1.0.0.xsd
  xsd/MsdlSimpleTypes_1.0.0.xsd
)

SET(zwmsmsdl_XSDS_EXT
  xsd/extern/JC3IEDM-3.1-Codes-20061208.xsd
  xsd/extern/JC3IEDMMeteorological.xsd
  xsd/extern/ModelID_v2006_FINAL.xsd
)

SET(zwmsmsdl_XSDS_install MilitaryScenario_1.0.0.xsd)

FOREACH(xsd ${zwmsmsdl_XSDS} ${zwmsmsdl_XSDS_EXT})
  XSD_GENERATE_TREE(zwmsmsdl_IDLS ${xsd})
ENDFOREACH(xsd ${zwmsmsdl_XSDS} ${zwmsmsdl_XSDS_EXT})



# Copy all required msdl *.xml and *.xsd files to shared folder
INSTALL_SHARED_FILES(zwmsmsdl_SRCS
  FILES ${zwmsmsdl_XSDS}
  DESTINATION "msdl/"
  WS
)
INSTALL_SHARED_FILES(zwmsmsdl_SRCS
  FILES ${zwmsmsdl_XSDS_EXT}
  DESTINATION "msdl/extern"
  WS
)

# .ui files live in the ui/ subdirectory; tell AUTOUIC where to find them
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/ui)

NGL_WRAP_UI(zwmsmsdl_SRCS ${zwmsmsdl_UICS})
NGL_ADD_LIBRARY2(WS zwmsmsdl SHARED ${zwmsmsdl_SRCS} ${zwmsmsdl_UICS} ${zwmsmsdl_IDLS})
NGL_TARGET_INCLUDE_DIRECTORIES(zwmsmsdl
  PRIVATE
    ${XSD_INCLUDE_DIR}
  PUBLIC
    ${CMAKE_CURRENT_BINARY_DIR}
)

if(QT6_GUI_AVAILABLE)
  NGL_TARGET_LINK_LIBRARIES(zwmsmsdl
    PRIVATE
      ${Qt6_Gui}
      Qt6::Xml
      XercesC::XercesC
    PUBLIC
      svcPpmCommon
      LtsUtilsSettings
      LtsUtilsGuiDds
      LtsSession
      PpmDataPluginInterface
      PpmCommon
      ExmDataPluginInterface
      OpmDataPluginInterface
      LtsSessionData
      ngltools
      NGLLogger
      LtsWidgets    
      Qt6::Core
  )
endif()
IF (WIN32)
  NGL_SET_TARGET_PROPERTIES(zwmsmsdl PROPERTIES UNITY_BUILD FALSE)
ENDIF()      

NGL_INSTALL_TARGET(zwmsmsdl)
