Commit summary:
[platform/core/security/suspicious-activity-monitor.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2
3 SET (PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
4 SET(CMAKE_VERBOSE_MAKEFILE ON)
5
6 IF(NOT CMAKE_BUILD_TYPE)
7     SET(CMAKE_BUILD_TYPE "RELEASE")
8 ENDIF(NOT CMAKE_BUILD_TYPE)
9
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")
14 ELSE()
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")
19 ENDIF()
20
21 IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
22     SET(CXX_STD "c++0x")
23 ELSE()
24     SET(CXX_STD "c++11")
25 ENDIF()
26
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__ ")
30
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}")
37
38 INCLUDE(FindPkgConfig)
39
40 IF (NOT DEFINED DAEMON_APP_NAME)
41     SET (DAEMON_APP_NAME "sam-agent")
42 ENDIF()
43
44 IF (NOT DEFINED DAEMON_CONFIG_FILE)
45     SET (DAEMON_CONFIG_FILE "sam.conf")
46 ENDIF()
47
48 IF (NOT DEFINED DAEMON_CONFIG_DIR)
49     SET (DAEMON_CONFIG_DIR "/etc/sam")
50 ENDIF()
51
52 if (NOT DEFINED BIN_DIR)
53     SET (BIN_DIR "/usr/apps/sam")
54 endif (NOT DEFINED BIN_DIR)
55
56 add_subdirectory(utest)
57 add_subdirectory(communication)
58 add_subdirectory(daemon)
59
60 add_custom_target(runtests
61     COMMAND utest
62     COMMENT "Run unit tests.\n")
63
64 # Coverage target
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")
76 else()
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")
85 endif()
86
87 INSTALL(FILES sam.xml DESTINATION ${MANIFESTDIR})