CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
PROJECT(ElmerGUItester CXX)


IF(WITH_QT6)
  MESSAGE(STATUS "------------------------------------------------")
  SET(QT6_PKG_LIST Qt6Gui Qt6Core Qt6OpenGLWidgets)
  FOREACH(_pkg ${QT6_PKG_LIST})
    FIND_PACKAGE(${_pkg} PATHS ${QT6_PATH})
  ENDFOREACH()
  MESSAGE(STATUS "  [ElmerGUItester] Qt6:               " ${Qt6_FOUND})
  MESSAGE(STATUS "  [ElmerGUItester] Qt6 Libraries: ${Qt6OpenGLWidgets_LIBRARIES} ${Qt6Gui_LIBRARIES} ${Qt6Core_LIBRARIES}")
  MESSAGE(STATUS "------------------------------------------------")
  ADD_DEFINITIONS(-DWITH_QT6)
ELSEIF(WITH_QT5)
  MESSAGE(STATUS "------------------------------------------------")
  SET(QT5_PKG_LIST Qt5Gui Qt5Core Qt5Widgets)
  FOREACH(_pkg ${QT5_PKG_LIST})
    FIND_PACKAGE(${_pkg} PATHS ${QT5_PATH})
  ENDFOREACH()
  MESSAGE(STATUS "  [ElmerGUItester] Qt5:               " ${Qt5_FOUND})
  MESSAGE(STATUS "  [ElmerGUItester] Qt5 Libraries: ${Qt5Widgets_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Core_LIBRARIES}")
  MESSAGE(STATUS "------------------------------------------------")
  ADD_DEFINITIONS(-DWITH_QT5)
ELSE()
  FIND_PACKAGE(Qt4 COMPONENTS QtGui QtCore REQUIRED)
ENDIF()

SET(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTORCC ON)
SET(CMAKE_AUTOUIC OFF)

SET(TARGETS ElmerGUItester)

SET(HEADERS src/tester.h)
SET(FORMS forms/mainform.ui)
SET(SOURCES src/main.cpp src/tester.cpp)

SET(RESOURCES ElmerGUItester.qrc)
SET(WIN32_RC_FILE ElmerGUItester.rc)

IF(WITH_QT6)
  QT6_WRAP_UI(UI_HEADERS ${FORMS})
  QT6_ADD_RESOURCES(UI_RESOURCES ${RESOURCES})
ELSEIF(WITH_QT5)
  QT5_WRAP_UI(UI_HEADERS ${FORMS})
  QT5_ADD_RESOURCES(UI_RESOURCES ${RESOURCES})
ELSE()
  QT4_WRAP_UI(UI_HEADERS ${FORMS})
  QT4_ADD_RESOURCES(UI_RESOURCES ${RESOURCES})
  INCLUDE(${QT_USE_FILE})
  ADD_DEFINITIONS(${QT_DEFINITIONS})
ENDIF()

IF(MINGW AND WIN32)
  SET(CMAKE_RC_COMPILER_INIT windres)
  ENABLE_LANGUAGE(RC)
  SET(CMAKE_RC_COMPILE_OBJECT
    "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
  SET(SOURCES ${SOURCES} ${WIN32_RC_FILE})
ENDIF()

INCLUDE_DIRECTORIES(${APPLICATION_INCLUDE_DIRS})
ADD_EXECUTABLE(ElmerGUItester WIN32 ${SOURCES} ${UI_HEADERS} ${UI_RESOURCES})

IF(WITH_QT6)
  TARGET_LINK_LIBRARIES(ElmerGUItester Qt6::OpenGLWidgets Qt6::Gui Qt6::Core)
ELSEIF(WITH_QT5)
  QT5_USE_MODULES(ElmerGUItester Gui Core Widgets)
ENDIF()

TARGET_LINK_LIBRARIES(ElmerGUItester ${QT_LIBRARIES})
INSTALL(TARGETS ElmerGUItester RUNTIME DESTINATION "bin" COMPONENT "elmergui")
