project(gmenu-harness VERSION 0.1.5 LANGUAGES C CXX)
cmake_minimum_required(VERSION 3.10)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
find_package(PkgConfig REQUIRED)
include(GNUInstallDirs)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 ${COMMON_FLAGS} -fno-strict-aliasing -fvisibility-inlines-hidden -Wall -pedantic -Wextra")

option(ENABLE_QT6 "Enable Qt6 build (only matters for tests)" OFF)
option(Werror "Treat warnings as errors" ON)
option(enable_tests "Build tests" ON)

if (ENABLE_QT6)
  set (QT_VERSION_MAJOR 6)
else()
  set (QT_VERSION_MAJOR 5)
endif()

if(Werror)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
endif()

set(CMAKE_INCLUDE_CURRENT_DIR ON)

# version
set(GMENU_HARNESS gmenuharness)
set(GMENU_HARNESS_SO_VERSION_MAJOR "0")
set(GMENU_HARNESS_SO_VERSION_MINOR "1")
set(GMENU_HARNESS_SO_VERSION_MICRO "4")
set(GMENU_HARNESS_SO_VERSION ${GMENU_HARNESS_SO_VERSION_MAJOR}.${GMENU_HARNESS_SO_VERSION_MINOR})
set(GMENU_HARNESS_HDR_INSTALL_BASE_DIR ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${GMENU_HARNESS}-${GMENU_HARNESS_SO_VERSION})
set(GMENU_HARNESS_HDR_INSTALL_DIR ${GMENU_HARNESS_HDR_INSTALL_BASE_DIR}/lomiri/${GMENU_HARNESS})

include_directories(include)

set(GLIB_REQUIRED_VERSION 2.26)

pkg_check_modules(
  GLIB REQUIRED
  glib-2.0>=${GLIB_REQUIRED_VERSION}
  gio-2.0>=${GLIB_REQUIRED_VERSION}
)
include_directories(${GLIB_INCLUDE_DIRS})

pkg_check_modules(
  LOMIRI_API REQUIRED
  liblomiri-api
)
include_directories(${LOMIRI_API_INCLUDE_DIRS})

add_subdirectory(src)
add_subdirectory(include)

# testing
if(${enable_tests})
  find_package(QT NAMES Qt${QT_VERSION_MAJOR})
  find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core DBus)

  find_package(GMock REQUIRED)

  set(LIBQTDBUSTEST_PC_SUFFIX "1")
  if(ENABLE_QT6)
    set(LIBQTDBUSTEST_PC_SUFFIX "qt6")
  endif()

  pkg_check_modules(
    TEST_DEPENDENCIES
    libqtdbustest-${LIBQTDBUSTEST_PC_SUFFIX}>=0.2 REQUIRED
  )

  enable_testing()
  add_subdirectory(tests)
endif()
