project(unity-scope-click)

cmake_minimum_required(VERSION 2.8.10)

set(SCOPE_CLICK_VERSION_MAJOR 0)
set(SCOPE_CLICK_VERSION_MINOR 0)
set(SCOPE_CLICK_VERSION_PATCH 1)

# Some default CFLAGS
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g -Wall -Wextra -Werror -fPIC")
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -g -Wextra -Wall -Werror -Werror=conversion-null -Wno-ignored-qualifiers -fPIC")

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

include(GNUInstallDirs)

set(APPS_LIB_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/unity-scopes/clickapps/)
set(APPS_DATA_DIR ${CMAKE_INSTALL_FULL_DATADIR}/unity/scopes/clickapps/)

find_program(INTLTOOL_MERGE intltool-merge)

include(UseGSettings)
find_package (GMock)
find_package (PkgConfig REQUIRED)

pkg_check_modules(UAL REQUIRED ubuntu-app-launch-2>=0.9 gobject-2.0)
add_definitions(${UAL_CFLAGS} ${UAL_CFLAGS_OTHER})

pkg_check_modules(CLICK REQUIRED click-0.4)
add_definitions(${CLICK_CFLAGS} ${CLICK_CFLAGS_OTHER})

pkg_check_modules(UNITY_SCOPES REQUIRED libunity-scopes>=0.6.7 libunity-api>=0.1.3)
add_definitions(${UNITY_SCOPES_CFLAGS} ${UNITY_SCOPES_CFLAGS_OTHER})

# Uncomment to enable network timings messages via stderr
# add_definitions(-DNETWORK_TIMINGS)

pkg_check_modules(UBUNTUONE REQUIRED ubuntuoneauth-2.0>=15.10)
add_definitions(${UBUNTUONE_CFLAGS} ${UBUNTUONE_CFLAGS_OTHER})

pkg_check_modules(UBUNTU_DOWNLOAD_MANAGER_CLIENT REQUIRED ubuntu-download-manager-client)
pkg_check_modules(UBUNTU_DOWNLOAD_MANAGER_COMMON REQUIRED ubuntu-download-manager-common)

SET (SCOPE_LIB_VERSION 0.2.0)
SET (SCOPE_LIB_SOVERSION 0)
SET (SCOPE_LIB_API_VERSION 2.0)
SET (SCOPE_LIB_NAME clickscope)
SET (APPS_LIB_UNVERSIONED scope)
SET (APPS_LIB_NAME ${APPS_LIB_UNVERSIONED}-${SCOPE_LIB_API_VERSION})

# Add our own subdirectories.
add_subdirectory(tests)
add_subdirectory(bin)
add_subdirectory(libclickscope)
add_subdirectory(scope)
add_subdirectory(data)
add_subdirectory(po)
add_subdirectory(tools)

include(EnableCoverageReport)
ENABLE_COVERAGE_REPORT(TARGETS ${SCOPE_LIB_NAME} ${APPS_LIB_UNVERSIONED}
  TESTS libclick-scope-tests apps-scope-tests init-departments
  FILTER /usr/include ${CMAKE_BINARY_DIR}/*
)

# Custom targets for the tests
add_custom_target (test
  DEPENDS test-apps-scope test-libclickscope test-integration-harness
)

add_custom_target (test-disabled
  DEPENDS test-click-scope-disabled
)

# Add a custom target for integration tests, as they should not be run
# during normal make test.
add_custom_target (test-integration
  DEPENDS test-integration-click-scope
)

# Add a custom target for running the tests under valgrind.
add_custom_target (test-valgrind
  DEPENDS test-click-scope-valgrind test-apps-scope-valgrind test-libclickscope-valgrind
)

# Add a custom target for running the tests under valgrind with the
# full leak checks enabled.
add_custom_target (test-leaks
  DEPENDS test-click-scope-leaks test-apps-scope-leaks test-libclickscope-leaks
)

# Also let "make check" and partners work.
add_custom_target (check
  DEPENDS test
)

add_custom_target (check-integration
  DEPENDS test-integration
)

add_custom_target (check-valgrind
  DEPENDS test-valgrind
)

add_custom_target (check-leaks
  DEPENDS test-leaks
)
