aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Tari <robert@tari.in>2021-12-15 13:21:50 +0100
committerRobert Tari <robert@tari.in>2021-12-15 13:21:50 +0100
commit8e228ca9493e8d5da50351f3bf913470aa3c9350 (patch)
treec0eb388e788f93e92062a59af9d0fc0d7c0c4241
parent4c27ec6d8c6ed623564a7f97d56d561f7e41cb73 (diff)
downloadqmenumodel-8e228ca9493e8d5da50351f3bf913470aa3c9350.tar.gz
qmenumodel-8e228ca9493e8d5da50351f3bf913470aa3c9350.tar.bz2
qmenumodel-8e228ca9493e8d5da50351f3bf913470aa3c9350.zip
CMakeLists.txt: Rewrite and enable Ayatana-style options
-rw-r--r--CMakeLists.txt75
1 files 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}")