From be468e9659bc275c3e35a71b847f23a2e498d3d8 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Sun, 14 Aug 2022 19:44:46 +0200 Subject: Add CMakeLists.txt files --- CMakeLists.txt | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 CMakeLists.txt (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5a10d2c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,72 @@ +project (ayatana-indicator-printers C) +cmake_minimum_required (VERSION 3.13) + +if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + SET (CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE) +endif (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + +list (APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + +set (PROJECT_VERSION "22.2.0") +set (PACKAGE ${CMAKE_PROJECT_NAME}) +set (GETTEXT_PACKAGE "ayatana-indicator-printers") + +# Options +option (ENABLE_TESTS "Enable all tests and checks" OFF) +option (ENABLE_COVERAGE "Enable coverage reports (includes enabling all tests and checks)" OFF) +option (ENABLE_WERROR "Treat all build warnings as errors" OFF) + +if (ENABLE_COVERAGE) + set (ENABLE_TESTS ON) + set (CMAKE_BUILD_TYPE "Coverage") +else () + set (CMAKE_BUILD_TYPE "Release") +endif () + +if (ENABLE_WERROR) + add_definitions ("-Werror") +endif () + +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + add_definitions ("-Weverything") +else () + add_definitions ("-Wall") +endif () + +# Check for prerequisites +include (GNUInstallDirs) +find_package (PkgConfig REQUIRED) +include (FindPkgConfig) +pkg_check_modules (SERVICE REQUIRED gtk+-3.0>=3.0 ayatana-indicator3-0.4>=0.2 dbusmenu-glib-0.4>=0.2 dbusmenu-gtk3-0.4) +find_program (CUPS_CONFIG cups-config REQUIRED) +execute_process (COMMAND ${CUPS_CONFIG} --cflags OUTPUT_VARIABLE CUPS_CFLAGS) +execute_process (COMMAND ${CUPS_CONFIG} --libs OUTPUT_VARIABLE CUPS_LIBS) +list (APPEND SERVICE_CFLAGS ${CUPS_CFLAGS}) +list (APPEND SERVICE_LDFLAGS ${CUPS_LIBS}) +list (APPEND SERVICE_LIBRARIES "cups") +include_directories (${CMAKE_SOURCE_DIR})# Drop this + +# Custom targets +set (ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}) +add_custom_target (dist COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.gz WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) +add_custom_target (cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2 --inline-suppr ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/test) + +# Build +add_subdirectory (src) +add_subdirectory (data) +add_subdirectory (po) + +if (ENABLE_TESTS) + include (CTest) + enable_testing () + add_subdirectory (test) + if (ENABLE_COVERAGE) + find_package (CoverageReport) + ENABLE_COVERAGE_REPORT (TARGETS "ayatana-printersmenu" "ayatana-indicator-printers-service" TESTS "mock-cups-notifier" FILTER /usr/include ${CMAKE_BINARY_DIR}/*) + endif () +endif () + +# Display config info +message (STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") +message (STATUS "Unit tests: ${ENABLE_TESTS}") +message (STATUS "Build with -Werror: ${ENABLE_WERROR}") -- cgit v1.2.3