From 8e228ca9493e8d5da50351f3bf913470aa3c9350 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Wed, 15 Dec 2021 13:21:50 +0100 Subject: CMakeLists.txt: Rewrite and enable Ayatana-style options --- CMakeLists.txt | 75 ++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 839afa6..bd3f3e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,36 @@ project(qmenumodel) - +cmake_minimum_required(VERSION 3.13) set (PROJECT_VERSION "0.9.0") -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) + +# 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) +option(TEST_XML_OUTPUT "Print test results to xml files" OFF) +option(GENERATE_DOC "Enable qdoc generation" OFF) + +if(ENABLE_COVERAGE) + set(ENABLE_TESTS ON) + set(CMAKE_BUILD_TYPE "Coverage") +else() + set(CMAKE_BUILD_TYPE "Release") +endif() + +if(ENABLE_TESTS) + set(TEST_XML_OUTPUT ON) +endif() + +if(ENABLE_WERROR) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") +endif() # Standard install paths include(GNUInstallDirs) - find_package(Qt5Core REQUIRED) find_package(Qt5Qml REQUIRED) find_package(Qt5Gui REQUIRED) @@ -16,45 +40,34 @@ pkg_check_modules(GIO REQUIRED gio-2.0>=2.32) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) add_definitions(-DQT_NO_KEYWORDS) - -find_program(DBUS_RUNNER dbus-test-runner) - add_subdirectory(libqmenumodel) -# Tests Tools -OPTION(TEST_XML_OUTPUT "Print test results on xml files" ON) -if(NOT DBUS_RUNNER) - message(STATUS "dbus-test-runner not found tests disabled.") -else() - # We need to enable test to create the 'make check' target mandatory on jenkins +# Tests +if (ENABLE_TESTS) + find_program(DBUS_RUNNER dbus-test-runner REQUIRED) enable_testing() if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l") message(STATUS "Current version of qemu crashes during the tests. We will skip it for now.") + set(ENABLE_TESTS OFF) + set(ENABLE_COVERAGE OFF) + set(TEST_XML_OUTPUT OFF) else() - message(STATUS "Tests enabled for arch: ${CMAKE_SYSTEM_PROCESSOR}") add_subdirectory(tests) + if (ENABLE_COVERAGE) + find_package(CoverageReport) + endif() endif() endif() # Doc -OPTION(GENERATE_DOC "Enable qdoc generation" OFF) if(GENERATE_DOC) - message(STATUS "QDoc enabled.") - find_program(QDOC_BIN qdoc) - if(NOT QDOC_BIN) - message(FATAL_ERROR "qdoc command not found") - else() - add_subdirectory(doc) - endif() + find_program(QDOC_BIN qdoc REQUIRED) + add_subdirectory(doc) endif() -# Coverage -##################################################################### -# Enable code coverage calculation with gcov/gcovr/lcov -# Usage: -# * Switch build type to coverage (use ccmake or cmake-gui) -# * Invoke make, make test, make coverage (or ninja if you use that backend) -# * Find html report in subdir coveragereport -# * Find xml report feasible for jenkins in coverage.xml -##################################################################### -find_package(CoverageReport) +# Display config info +message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") +message(STATUS "Unit tests: ${ENABLE_TESTS}") +message(STATUS "Build with -Werror: ${ENABLE_WERROR}") +message(STATUS "Print test results to xml files: ${TEST_XML_OUTPUT}") +message(STATUS "QDoc generation: ${GENERATE_DOC}") -- cgit v1.2.3