Add debug compilation mode
[platform/core/security/nice-lad.git] / src / CMakeLists.txt
1 # Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
2 #
3 #    Licensed under the Apache License, Version 2.0 (the "License");
4 #    you may not use this file except in compliance with the License.
5 #    You may obtain a copy of the License at
6 #
7 #        http://www.apache.org/licenses/LICENSE-2.0
8 #
9 #    Unless required by applicable law or agreed to in writing, software
10 #    distributed under the License is distributed on an "AS IS" BASIS,
11 #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 #    See the License for the specific language governing permissions and
13 #    limitations under the License.
14 #
15 # @file        src/CMakeLists.txt
16 # @author      Aleksander Zdyb <a.zdyb@samsung.com>
17 #
18
19 OPTION(WITH_SECURITY_MANAGER "Use Security Manager to obtain resource groups" OFF)
20 OPTION(WITH_JOURNALD "Use journald to log denials. Syslog will be used otherwise" OFF)
21
22 IF(WITH_JOURNALD)
23     PKG_CHECK_MODULES(journald REQUIRED libsystemd-journal)
24 ELSE(WITH_JOURNALD) # journald may still be possibly used for informational logging
25     PKG_CHECK_MODULES(journald QUIET libsystemd-journal)
26 ENDIF(WITH_JOURNALD)
27
28 IF(journald_FOUND)
29     ADD_DEFINITIONS("-DWITH_JOURNALD")
30 ENDIF(journald_FOUND)
31
32 IF(WITH_SECURITY_MANAGER)
33     PKG_CHECK_MODULES(security_manager REQUIRED security-manager)
34     ADD_DEFINITIONS("-DWITH_SECURITY_MANAGER")
35 ENDIF(WITH_SECURITY_MANAGER)
36
37 FIND_PACKAGE(Boost 1.57 REQUIRED)
38
39 PKG_CHECK_MODULES(audit
40     REQUIRED
41     audit>=2.4.2
42     auparse>=2.4.2
43 )
44
45 INCLUDE_DIRECTORIES(
46     ${CMAKE_CURRENT_SOURCE_DIR}
47     ${audit_INCLUDE_DIRS}
48     ${Boost_INCLUDE_DIRS}
49     ${journald_INCLUDE_DIRS}
50     ${security_manager_INCLUDE_DIRS}
51 )
52
53 LINK_DIRECTORIES(
54     ${audit_LIBRARY_DIRS}
55     ${journald_LIBRARY_DIRS}
56     ${security_manager_LIBRARY_DIRS}
57 )
58
59 SET(SOURCE_FILES
60     main.cpp
61     Audit/Auditctl.cpp
62     Audit/AuditWrapper.cpp
63     Audit/AuparseSourceFeedWrapper.cpp
64     Audit/AuparseWrapper.cpp
65     Audit/Parser.cpp
66     Audit/SyscallRuleData.cpp
67     Lad/AuditEventHandler.cpp
68     Lad/AuditRulesPopulator.cpp
69     Lad/Options.cpp
70     Log/log.cpp
71     Utils/Feed.cpp
72     Utils/SignalFd.cpp
73 )
74
75 IF(WITH_JOURNALD)
76 SET(SOURCE_FILES
77     ${SOURCE_FILES}
78     Systemd/DataCollector.cpp
79 )
80 ELSE(WITH_JOURNALD)
81 SET(SOURCE_FILES
82     ${SOURCE_FILES}
83     Lad/SyslogDataCollector.cpp
84 )
85 ENDIF(WITH_JOURNALD)
86
87 IF(WITH_SECURITY_MANAGER)
88 SET(SOURCE_FILES
89     ${SOURCE_FILES}
90     SecurityManager/DataProvider.cpp
91     SecurityManager/SecurityManagerWrapper.cpp
92 )
93 ELSE(WITH_SECURITY_MANAGER)
94 SET(SOURCE_FILES
95     ${SOURCE_FILES}
96     Lad/DummyDataProvider.cpp
97 )
98 ENDIF(WITH_SECURITY_MANAGER)
99
100 ADD_EXECUTABLE(${TARGET_NICE_LAD} ${SOURCE_FILES})
101
102 TARGET_LINK_LIBRARIES(
103     ${TARGET_NICE_LAD}
104     ${audit_LIBRARIES}
105     ${Boost_LIBRARIES}
106     ${journald_LIBRARIES}
107     ${security_manager_LIBRARIES}
108     )
109
110 INSTALL(TARGETS ${TARGET_NICE_LAD} DESTINATION ${SBIN_DIR})