cmake_minimum_required (VERSION 3.5)

project(lomiri-polkit-agent VERSION 0.3.1 LANGUAGES CXX)

set (PACKAGE_VERSION ${PROJECT_VERSION})
set (PACKAGE ${CMAKE_PROJECT_NAME})

##
## Directories
##

include (GNUInstallDirs)

set(CMAKE_INSTALL_PKGLIBEXECDIR "${CMAKE_INSTALL_LIBEXECDIR}/${CMAKE_PROJECT_NAME}")
set(CMAKE_INSTALL_FULL_PKGLIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}/${CMAKE_PROJECT_NAME}")
set(CMAKE_INSTALL_FULL_PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME}")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Werror -Wno-deprecated-declarations -std=c++17 -pthread ${GCOV_FLAGS}")

##
## Pkgconfig
##

find_package(PkgConfig REQUIRED)
pkg_check_modules(POLICYKIT REQUIRED polkit-agent-1)
pkg_check_modules(GIO REQUIRED gio-2.0)
pkg_check_modules(NOTIFY REQUIRED libnotify)
pkg_check_modules(PROPERTIESCPP REQUIRED properties-cpp)

##
## Include code formatting
##

set_property(GLOBAL PROPERTY FORMAT_SOURCES)
find_package(FormatCode)

##
## Go deeper into the tree
##

add_subdirectory(service)
add_subdirectory(data)
add_subdirectory(po)

##
## Testing
##

include(CTest)

if (BUILD_TESTING)
  add_subdirectory(tests)
endif()

##
## Coverage
##

find_package(CoverageReport)
set(filter-list)
list(APPEND filter-list "/usr")
list(APPEND filter-list "${CMAKE_SOURCE_DIR}/tests")
list(APPEND filter-list "${CMAKE_SOURCE_DIR}/service/glib-thread.*")
if (NOT ${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
  list(APPEND filter-list "${CMAKE_BINARY_DIR}")
endif()

ENABLE_COVERAGE_REPORT(
  TARGETS service-lib policykit-agent
  TESTS agent-test authentication-test auth-manager-test
  FILTER ${filter-list}
)

##
## Do formatting
##

get_property(FORMAT_SOURCES_LOCAL GLOBAL PROPERTY FORMAT_SOURCES)
message(STATUS "Formatting sources: ${FORMAT_SOURCES_LOCAL}")
add_formatcode_target(${FORMAT_SOURCES_LOCAL} STYLE_NAME unity-api)
#add_formatcode_test(${FORMAT_SOURCES_LOCAL} STYLE_NAME unity-api)
