#
# $Id$
# $HeadURL$
# $Author$
# Created by Christian Ehrlicher, SLSE, 2016-08-31
#

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


# Add system GeographicLib Find module path
list(APPEND CMAKE_MODULE_PATH /usr/share/cmake/geographiclib)
FIND_PACKAGE(GeographicLib)
NGL_ADD_LIBRARY2(LtsCoordTrans WS AAR SV HLA SHARED
  lts_coord_trans.h
  lts_coord_trans.cpp
)
NGL_TARGET_LINK_LIBRARIES(LtsCoordTrans
  PUBLIC
    Qt6::Core
)
if (GeographicLib_FOUND)
  TARGET_LINK_LIBRARIES(LtsCoordTrans
    PRIVATE ${GeographicLib_LIBRARIES}
  )
  TARGET_INCLUDE_DIRECTORIES(LtsCoordTrans PRIVATE ${GeographicLib_INCLUDE_DIRS})
  LINK_DIRECTORIES(${GeographicLib_LIBRARY_DIRS})
else()
  message(STATUS "GeographicLib not found; building LtsCoordTrans without it")
endif()
NGL_TARGET_INCLUDE_DIRECTORIES(LtsCoordTrans
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
    ${CMAKE_CURRENT_BINARY_DIR}
)

SET(ltsCoordWidget_SRCS
  lts_coord_widget.cpp
  lts_coord_widget.h
  lts_coord_widget_p.cpp
  lts_coord_widget_p.h
)
NGL_WRAP_UI(ltsCoordWidget_SRCS
  lts_coord_widget_mgrs.ui
  lts_coord_widget_wgs84.ui
)
NGL_ADD_LIBRARY2(ltsCoordWidget WS AAR SV SHARED ${ltsCoordWidget_SRCS})
if(QT6_GUI_AVAILABLE)
  NGL_TARGET_LINK_LIBRARIES(ltsCoordWidget
    PRIVATE
      LtsCoordTrans
    PUBLIC
      Qt6::Core
      ${Qt6_Widgets}
  )
endif()
NGL_TARGET_INCLUDE_DIRECTORIES(ltsCoordWidget
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/../
    ${CMAKE_CURRENT_SOURCE_DIR}/../LtsUtils/LtsUtilsCore
    ${CMAKE_CURRENT_BINARY_DIR}
)

IF(TARGET LtsCoordTrans)
  SET(_tools lonlat2mgrs mgrs2lonlat)
  FOREACH(_tool ${_tools})
    NGL_ADD_EXECUTABLE(ALL ${_tool} ${_tool}.cpp)
    TARGET_LINK_LIBRARIES(${_tool}
      Qt6::Core
      ${GeographicLib_LIBRARIES}
    )
    TARGET_INCLUDE_DIRECTORIES(${_tool} PRIVATE ${GeographicLib_INCLUDE_DIRS})
    LINK_DIRECTORIES(${GeographicLib_LIBRARY_DIRS})
    NGL_INSTALL_TARGET(${_tool})
  ENDFOREACH()
ENDIF()

IF(BUILD_TESTING AND TARGET ltsCoordWidget)
  ADD_EXECUTABLE(lts_coord_widget_test lts_coord_widget_test.cpp)
  TARGET_LINK_LIBRARIES(lts_coord_widget_test
    ltsCoordWidget
    LtsCoordTrans
  )
ENDIF()

IF(BUILD_TESTING AND TARGET LtsCoordTrans)
  ADD_EXECUTABLE(lts_coord_trans_unit_test
    lts_coord_trans_unit_test.cpp
    lts_coord_trans_unit_test.h
  )
  TARGET_LINK_LIBRARIES(lts_coord_trans_unit_test
    LtsCoordTrans
    Qt6::Test
    ${GeographicLib_LIBRARIES}
  )
  TARGET_INCLUDE_DIRECTORIES(lts_coord_trans_unit_test PRIVATE ${GeographicLib_INCLUDE_DIRS})
  LINK_DIRECTORIES(${GeographicLib_LIBRARY_DIRS})
  ADD_TEST(NAME lts_coord_trans_unit_test COMMAND $<TARGET_FILE:lts_coord_trans_unit_test>)
ENDIF()
