1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
3 SET (PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
4 SET(CMAKE_VERBOSE_MAKEFILE ON)
6 IF(NOT CMAKE_BUILD_TYPE)
7 SET(CMAKE_BUILD_TYPE "RELEASE")
8 ENDIF(NOT CMAKE_BUILD_TYPE)
10 # Binary hardening options
11 IF(${CMAKE_BUILD_TYPE} STREQUAL "RELEASE")
12 SET(FORTITY_OPTIONS_COMPILER "-fstack-protector-strong -Wl,-z,relro -D_FORTIFY_SOURCE=2 -fPIE")
13 SET(FORTITY_OPTIONS_LINKER "-pie")
15 SET(FORTITY_OPTIONS_COMPILER " ")
16 SET(FORTITY_OPTIONS_LINKER " ")
17 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wp,-U_FORTIFY_SOURCE")
18 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wp,-U_FORTIFY_SOURCE")
21 IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
27 SET(COMPILE_BASE_FLAGS "-Werror -Wall")
28 # Logging enabled, to disable comment next line
29 SET(COMPILE_BASE_FLAGS "${COMPILE_BASE_FLAGS} -D__LOGGING__ ")
31 SET(CMAKE_C_FLAGS_DEBUG "${COMPILE_BASE_FLAGS} -O0 -ggdb")
32 SET(CMAKE_CXX_FLAGS_DEBUG "${COMPILE_BASE_FLAGS} -O0 -ggdb -std=${CXX_STD}")
33 SET(CMAKE_C_FLAGS_RELEASE "${COMPILE_BASE_FLAGS} -O2 -DNDEBUG -g0")
34 SET(CMAKE_CXX_FLAGS_RELEASE "${COMPILE_BASE_FLAGS} -O2 -DNDEBUG -g0 -std=${CXX_STD}")
35 SET(CMAKE_C_FLAGS_CCOV "${COMPILE_BASE_FLAGS} -O0 --coverage")
36 SET(CMAKE_CXX_FLAGS_CCOV "${COMPILE_BASE_FLAGS} -O0 --coverage -std=${CXX_STD}")
38 INCLUDE(FindPkgConfig)
40 IF (NOT DEFINED DAEMON_APP_NAME)
41 SET (DAEMON_APP_NAME "sam-agent")
44 IF (NOT DEFINED DAEMON_CONFIG_FILE)
45 SET (DAEMON_CONFIG_FILE "sam.conf")
48 IF (NOT DEFINED DAEMON_CONFIG_DIR)
49 SET (DAEMON_CONFIG_DIR "/etc/sam")
52 if (NOT DEFINED BIN_DIR)
53 SET (BIN_DIR "/usr/apps/sam")
54 endif (NOT DEFINED BIN_DIR)
56 add_subdirectory(utest)
57 add_subdirectory(communication)
58 add_subdirectory(daemon)
60 add_custom_target(runtests
62 COMMENT "Run unit tests.\n")
65 find_program(LCOV NAMES lcov)
66 message(STATUS "LCOV: " ${LCOV})
67 string(TIMESTAMP TIME "%Y-%m-%d_%H:%M:%S")
68 SET(COV_FOLDER "/tmp/coverage/${TIME}")
69 if(${LCOV} STREQUAL "LCOV-NOTFOUND")
70 message(STATUS "LCOV not found, using GCOVR")
71 add_custom_target(coverage
72 COMMAND mkdir -p ${COV_FOLDER}
73 COMMAND ../scripts/gcovr -r ../ --html --html-details -o ${COV_FOLDER}/report.html -eutest.* -emock.* -s -e.*main.cpp
74 COMMAND echo "Coverage calculated."
75 COMMENT "Coverage stat with GCOVR.\n")
77 message(STATUS "LCOV was found.")
78 add_custom_target(coverage
79 COMMAND mkdir -p ${COV_FOLDER}
80 COMMAND lcov -t "result" -o ${COV_FOLDER}/utest.info -c -d .. --rc lcov_branch_coverage=1 -q
81 COMMAND lcov --remove ${COV_FOLDER}/utest.info '*utest/*' '*mock/*' '/usr/include/*' '*main.cpp' --rc lcov_branch_coverage=1 -o ${COV_FOLDER}/utest_filtered.info -q
82 COMMAND genhtml -o ${COV_FOLDER} ${COV_FOLDER}/utest_filtered.info
83 COMMAND echo "Coverage calculated."
84 COMMENT "Coverage stat with LCOV.\n")
87 INSTALL(FILES sam.xml DESTINATION ${MANIFESTDIR})