1 cmake_minimum_required (VERSION 2.8)
3 SET (PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
5 IF(NOT CMAKE_BUILD_TYPE)
6 SET(CMAKE_BUILD_TYPE "DEBUG")
7 ENDIF(NOT CMAKE_BUILD_TYPE)
9 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
10 SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
11 SET(CMAKE_C_FLAGS_RELEASE "-O2 -s")
12 SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -s")
13 SET(CMAKE_C_FLAGS_CCOV "-O0 --coverage")
14 SET(CMAKE_CXX_FLAGS_CCOV "-O0 --coverage")
15 SET(CMAKE_C_FLAGS_TEST "-O0 -s")
16 SET(CMAKE_CXX_FLAGS_TEST "-O0 -s")
17 message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
19 INCLUDE(FindPkgConfig)
21 IF (NOT DEFINED DAEMON_APP_NAME)
22 SET (DAEMON_APP_NAME "sam-agent")
25 IF (NOT DEFINED DAEMON_CONFIG_FILE)
26 SET (DAEMON_CONFIG_FILE "sam.conf")
29 IF (NOT DEFINED DAEMON_CONFIG_DIR)
30 SET (DAEMON_CONFIG_DIR "/etc/sam")
33 if (NOT DEFINED LIBDIR)
34 SET (LIBDIR ${LIB_INSTALL_DIR})
35 endif (NOT DEFINED LIBDIR)
37 if (NOT DEFINED BIN_DIR)
38 SET (BIN_DIR "/usr/apps/sam")
39 endif (NOT DEFINED BIN_DIR)
41 pkg_check_modules(pkgs REQUIRED boost libcurl dpm dlog audit audit-trail)
43 FOREACH(flag ${pkgs_CFLAGS})
44 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
47 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DTB_LOG -D__TIZEN__ -DPROFILE_${BUILD_PROFILE} -DDATA_DIR=${DATA_DIR}")
49 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DCONFIG_FILE_PATH=${DAEMON_CONFIG_DIR}/${DAEMON_CONFIG_FILE}")
52 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -D__LOGGING__ ")
54 include_directories(common/inc)
56 message(STATUS "EXTRA_CFLAGS: " ${EXTRA_CFLAGS})
58 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
59 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++11")
62 add_subdirectory(utest)
63 add_subdirectory(communication)
64 add_subdirectory(daemon)
66 add_custom_target(runtests
68 COMMENT "Run unit tests.\n")
72 SET(DOXYGEN_INPUT ${CMAKE_SOURCE_DIR})
73 SET(DOXYGEN_EXCLUDE "")
74 SET(DOXYGEN_EXCLUDE_PATTERNS "*/utest/* */mock/* */build* */CMake* */install/*")
75 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
76 ADD_CUSTOM_TARGET(doc COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
78 MESSAGE(STATUS "WARNING: Doxygen not found - Reference manual will not be created")
82 find_program(LCOV NAMES lcov)
83 message(STATUS "LCOV: " ${LCOV})
84 string(TIMESTAMP TIME "%Y-%m-%d_%H:%M:%S")
85 SET(COV_FOLDER "/tmp/coverage/${TIME}")
86 if(${LCOV} STREQUAL "LCOV-NOTFOUND")
87 message(STATUS "LCOV not found, using GCOVR")
88 add_custom_target(coverage
89 COMMAND mkdir -p ${COV_FOLDER}
90 COMMAND ../scripts/gcovr -r ../ --html --html-details -o ${COV_FOLDER}/report.html -eutest.* -emock.* -s -e.*main.cpp
91 COMMAND echo "Coverage calculated."
92 COMMENT "Coverage stat with GCOVR.\n")
94 message(STATUS "LCOV was found.")
95 add_custom_target(coverage
96 COMMAND mkdir -p ${COV_FOLDER}
97 COMMAND lcov -t "result" -o ${COV_FOLDER}/utest.info -c -d .. --rc lcov_branch_coverage=1 -q
98 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
99 COMMAND genhtml -o ${COV_FOLDER} ${COV_FOLDER}/utest_filtered.info
100 COMMAND echo "Coverage calculated."
101 COMMENT "Coverage stat with LCOV.\n")
104 INSTALL(FILES sam.xml DESTINATION ${MANIFESTDIR})