
# Tell find_package(Qt5) where to find Qt.
if(QT_QMAKE_EXECUTABLE)
  get_filename_component(Qt_BIN_DIR "${QT_QMAKE_EXECUTABLE}" PATH)
  get_filename_component(Qt_PREFIX_DIR "${Qt_BIN_DIR}" PATH)
  list(APPEND CMAKE_PREFIX_PATH ${Qt_PREFIX_DIR})
endif()

if (QT_TEST_VERSION EQUAL 4)

  find_package(Qt4 REQUIRED)
  include(UseQt4)

  set(QT_QTCORE_TARGET Qt4::QtCore)

  # Qt macros
  macro(qtx_wrap_cpp)
    qt4_wrap_cpp(${ARGN})
  endmacro()
  macro(qtx_generate_moc)
    qt4_generate_moc(${ARGN})
  endmacro()

elseif(QT_TEST_VERSION EQUAL 5)

  find_package(Qt5Widgets REQUIRED)

  set(QT_QTCORE_TARGET Qt5::Core)
  set(QT_LIBRARIES Qt5::Widgets)

  # Include directories
  include_directories(${Qt5Widgets_INCLUDE_DIRS})

  # Definitions
  if(Qt5_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
    add_definitions(${CMAKE_CXX_COMPILE_OPTIONS_PIC})
  endif()

  # Qt macros
  macro(qtx_wrap_cpp)
    qt5_wrap_cpp(${ARGN})
  endmacro()
  macro(qtx_generate_moc)
    qt5_generate_moc(${ARGN})
  endmacro()

else()
  message(SEND_ERROR "Invalid Qt version specified: ${QT_TEST_VERSION}")
endif()

# Get Qt compile features
get_property(QT_COMPILE_FEATURES
  TARGET ${QT_QTCORE_TARGET}
  PROPERTY INTERFACE_COMPILE_FEATURES
)
