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