diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..9f224e5 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,71 @@ +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 "23.10.1") +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 glib-2.0>=2.36 gio-2.0>=2.36 gio-unix-2.0>=2.36 libayatana-common) +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") + +# 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 "ayatanaindicatorprintersservice" "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}") |