Prevent fix - NULL check after dereference.
[platform/core/security/libprivilege-control.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 PROJECT(libprivilege-control C)
3
4 SET(TARGET_PRIVILEGE_CONTROL "privilege-control")
5 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
6 SET(EXEC_PREFIX "\${prefix}")
7 SET(SHAREDIR "${PREFIX}/share/privilege-control")
8 SET(HOMEDIR "/opt/home")
9 SET(VERSION 1.0)
10
11 SET(VERSION_MAJOR 0)
12 SET(VERSION "${VERSION_MAJOR}.0.2")
13
14 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
15
16 INCLUDE(FindPkgConfig)
17 pkg_check_modules(pkgs REQUIRED libsmack libiri dlog sqlite3)
18
19 FOREACH(flag ${pkgs_CFLAGS})
20         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
21 ENDFOREACH(flag)
22
23 # TIZEN_ENGINEER_MODE is used in  dlog.h file.
24 # Without this flag all logs defined with SLOGD macro
25 # will be expanded to empty instruction.
26
27 SET(CMAKE_C_FLAGS_CCOV    "--coverage")
28 SET(CMAKE_C_FLAGS_DEBUG   "-O0 -g -ggdb -DDLOG_DEBUG_ENABLED -DTIZEN_ENGINEER_MODE")
29 SET(CMAKE_C_FLAGS_RELEASE "-O2 -g")
30
31 SET(src_dir "./src")
32 SET(include_dir "./include")
33
34
35 ## Additional flag
36 ADD_DEFINITIONS("-fvisibility=hidden")
37 ADD_DEFINITIONS("-DSHAREDIR=${SHAREDIR}")
38 ADD_DEFINITIONS("-DHOMEDIR=${HOMEDIR}")
39 ADD_DEFINITIONS("-Wall -Werror -Wextra")
40
41 ADD_DEFINITIONS("-DDLOG_WARN_ENABLED")
42 ADD_DEFINITIONS("-DDLOG_ERROR_ENABLED")
43
44 ###################################################################################################
45 ## for libprivilege-control.so (library)
46 INCLUDE_DIRECTORIES(${pkgs_INCLUDE_DIRS})
47 SET(libprivilege-control_SOURCES
48         ${src_dir}/privilege-control.c
49         ${src_dir}/access-db.c
50         ${src_dir}/common.c
51         ${src_dir}/rules-db.c
52         ${src_dir}/rules-db-internals.c
53         )
54 SET(libprivilege-control_LDFLAGS " -module -avoid-version ")
55 SET(libprivilege-control_CFLAGS  " ${CFLAGS} -fPIC -I${include_dir}")
56 SET(libprivilege-control_LIBADD  "${pkgs_LDFLAGS} -lcap -lcrypt")
57
58 ADD_LIBRARY(${TARGET_PRIVILEGE_CONTROL} SHARED ${libprivilege-control_SOURCES})
59 TARGET_LINK_LIBRARIES(${TARGET_PRIVILEGE_CONTROL} ${libprivilege-control_LIBADD} ${pkgs_LIBRARIES})
60 SET_TARGET_PROPERTIES(${TARGET_PRIVILEGE_CONTROL} PROPERTIES COMPILE_FLAGS "${libprivilege-control_CFLAGS}")
61 SET_TARGET_PROPERTIES(${TARGET_PRIVILEGE_CONTROL} PROPERTIES SOVERSION ${VERSION_MAJOR})
62 SET_TARGET_PROPERTIES(${TARGET_PRIVILEGE_CONTROL} PROPERTIES VERSION ${VERSION})
63 ###################################################################################################
64 ## for rules-db-sql-udf.so (library)
65 SET(rules-db-sql-udf_SOURCES ./db/rules-db-sql-udf.c)
66 SET(rules-db-sql-udf_LDFLAGS " -avoid-version -module ")
67 SET(rules-db-sql-udf_CFLAGS  " ${CFLAGS} -fPIC")
68
69 ADD_LIBRARY(rules-db-sql-udf MODULE ${rules-db-sql-udf_SOURCES})
70 SET_TARGET_PROPERTIES(rules-db-sql-udf PROPERTIES COMPILE_FLAGS "${rules-db-sql-udf_CFLAGS}")
71 SET_TARGET_PROPERTIES(rules-db-sql-udf PROPERTIES LINK_FLAGS "${rules-db-sql-udf_LDFLAGS}")
72
73 ###################################################################################################
74 ## for slp-su (excutable)
75 SET(slp-su_SOURCES ${src_dir}/slp-su.c)
76 SET(slp-su_LDFLAGS " -module -avoid-version ")
77 SET(slp-su_CFLAGS  " ${CFLAGS} -fPIC -I${include_dir}")
78
79 ADD_EXECUTABLE(slp-su ${slp-su_SOURCES})
80 TARGET_LINK_LIBRARIES(slp-su ${pkgs_LDFLAGS} ${pkgs_LIBRARIES} ${TARGET_PRIVILEGE_CONTROL})
81 SET_TARGET_PROPERTIES(slp-su PROPERTIES COMPILE_FLAGS "${slp-su_CFLAGS}")
82 ###################################################################################################
83
84
85 CONFIGURE_FILE(libprivilege-control.pc.in libprivilege-control.pc @ONLY)
86
87 INSTALL(TARGETS ${TARGET_PRIVILEGE_CONTROL} DESTINATION  ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
88 INSTALL(TARGETS rules-db-sql-udf DESTINATION  ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
89 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprivilege-control.pc DESTINATION  ${LIB_INSTALL_DIR}/pkgconfig)
90 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/passwd DESTINATION /opt/etc/)
91 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/group DESTINATION /opt/etc/)
92 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/smack_default_labeling DESTINATION /etc/rc.d/init.d/)
93 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/smack_rules DESTINATION /etc/rc.d/init.d/)
94 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/privilege-control.h DESTINATION ${INCLUDE_INSTALL_DIR})
95 INSTALL(FILES .privilege_control_app_gids.db DESTINATION /opt/dbspace)
96 #INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/udev/ DESTINATION lib/udev)
97 INSTALL(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/slp-su DESTINATION bin)
98
99 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/db/rules-db.sql DESTINATION /opt/dbspace)
100 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/db/rules-db-data.sql DESTINATION /opt/dbspace)
101 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/db/load-rules-db.sql DESTINATION /opt/etc/smack/)
102
103 INSTALL(FILES ${PROJECT_SOURCE_DIR}/smack-rules.service
104         DESTINATION /usr/lib/systemd/system
105         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
106
107 ADD_SUBDIRECTORY(api_feature_loader)