Tizen 2.1 base
[platform/core/security/cert-svc.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 PROJECT(certsvc)
3
4 INCLUDE(FindPkgConfig)
5
6 SET(SO_VERSION 1)
7 SET(VERSION "${SO_VERSION}.0.0")
8
9 # define debug output
10 SET(DEBUG_OUTPUT "-DCERT_SVC_LOG")             # for debug
11 #SET(DEBUG_OUTPUT "-DCERT_SVC_LOG_CONSOLE")     # for debug
12
13 SET(TARGET_CERT_SVC_LIB "cert-svc")
14 SET(TARGET_VCORE_LIB "cert-svc-vcore")
15 SET(TARGET_SIGN_TOOL "dpkg-pki-sig")
16
17 # compiler options
18 SET(CMAKE_C_FLAGS_RELEASE "-fvisibility=hidden -Wall -O2")
19 SET(CMAKE_CXX_FLAGS_RELEASE "-std=c++0x -Wall -O2")
20
21 SET(CMAKE_C_FLAGS_DEBUG "-fvisibility=hidden -Wall -O0 -g")
22 SET(CMAKE_CXX_FLAGS_DEBUG "-std=c++0x -Wall -O0 -g")
23
24 SET(CMAKE_C_FLAGS_CCOV "-fvisibility=hidden -Wall -O2 --coverage")
25 SET(CMAKE_CXX_FLAGS_CCOV "-std=c++0x -Wall -O2 --coverage")
26
27 SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed")
28 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
29 SET(CMAKE_SKIP_RPATH "TRUE")
30
31 ################################################################################
32 # for libcert-svc.so
33 ################################################################################
34
35 PKG_CHECK_MODULES(CERT_SVC_DEPS
36     openssl
37     dlog
38     glib-2.0
39     REQUIRED
40 )
41
42 SET(CERT_SVC_SOURCES
43     ${PROJECT_SOURCE_DIR}/srcs/cert-service.c
44     ${PROJECT_SOURCE_DIR}/srcs/cert-service-util.c
45     ${PROJECT_SOURCE_DIR}/srcs/cert-service-store.c
46     ${PROJECT_SOURCE_DIR}/srcs/cert-service-process.c
47 )
48
49 IF(DEFINED DEBUG_OUTPUT)
50     SET_SOURCE_FILES_PROPERTIES(${CERT_SVC_SOURCES}
51         PROPERTIES COMPILE_FLAGS ${DEBUG_OUTPUT})
52 ENDIF(DEFINED DEBUG_OUTPUT)
53
54 INCLUDE_DIRECTORIES(
55     ${PROJECT_SOURCE_DIR}/include
56     ${CERT_SVC_DEPS_INCLUDE_DIRS}
57 )
58
59 ADD_LIBRARY(${TARGET_CERT_SVC_LIB} SHARED ${CERT_SVC_SOURCES})
60
61 SET_TARGET_PROPERTIES(${TARGET_CERT_SVC_LIB} PROPERTIES
62     SOVERSION ${SO_VERSION}
63     VERSION ${VERSION}
64 )
65
66 TARGET_LINK_LIBRARIES(${TARGET_CERT_SVC_LIB}
67     pthread
68     ${CERT_SVC_DEPS_LIBRARIES}
69 )
70
71 ################################################################################
72 # for dpkg-pki-sig
73 ################################################################################
74
75 SET(SIGN_TOOL_SOURCES
76     ${PROJECT_SOURCE_DIR}/srcs/dpkg-pki-sig.c
77     ${PROJECT_SOURCE_DIR}/srcs/cert-service-process.c
78     ${PROJECT_SOURCE_DIR}/srcs/cert-service-util.c
79 )
80
81 ADD_EXECUTABLE(${TARGET_SIGN_TOOL} ${SIGN_TOOL_SOURCES})
82
83 TARGET_LINK_LIBRARIES(${TARGET_SIGN_TOOL}
84     ${TARGET_CERT_SVC_LIB}
85     ${CERT_SVC_DEPS_LIBRARIES}
86 )
87
88 ################################################################################
89
90 CONFIGURE_FILE(cert-svc.pc.in cert-svc.pc @ONLY)
91 CONFIGURE_FILE(cert-svc-vcore.pc.in cert-svc-vcore.pc @ONLY)
92
93 INSTALL(TARGETS ${TARGET_CERT_SVC_LIB} DESTINATION ${LIBDIR} COMPONENT RuntimeLibraries)
94 INSTALL(PROGRAMS ${TARGET_SIGN_TOOL} DESTINATION ${BINDIR})
95 INSTALL(FILES
96     ${CMAKE_CURRENT_BINARY_DIR}/cert-svc.pc
97     ${CMAKE_CURRENT_BINARY_DIR}/cert-svc-vcore.pc
98     DESTINATION ${LIBDIR}/pkgconfig
99 )
100 INSTALL(FILES ${PROJECT_SOURCE_DIR}/targetinfo DESTINATION /opt/share/cert-svc/)
101 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/cert-service.h DESTINATION ${INCLUDEDIR})
102
103 # Now we must create empty directory for certificates.
104 # Without this directories rpm package will fail during build.
105 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
106     DESTINATION /usr/share/cert-svc/ca-certs/code-signing/native
107     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
108 )
109 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
110     DESTINATION /usr/share/cert-svc/ca-certs/code-signing/wac
111     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
112 )
113 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
114     DESTINATION /opt/share/cert-svc/certs/code-signing/wac
115     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
116 )
117 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
118     DESTINATION /opt/share/cert-svc/certs/sim/operator
119     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
120 )
121 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
122     DESTINATION /opt/share/cert-svc/certs/sim/thirdparty
123     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
124 )
125 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
126     DESTINATION /opt/share/cert-svc/certs/user
127     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
128 )
129 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
130     DESTINATION /opt/share/cert-svc/certs/trusteduser
131     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
132 )
133 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
134     DESTINATION /opt/share/cert-svc/certs/mdm/security
135     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
136 )
137 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
138     DESTINATION /opt/share/cert-svc/certs/mdm/security/cert
139     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
140 )
141 INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
142     DESTINATION /opt/share/cert-svc/pkcs12
143     FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
144 )
145
146 ADD_SUBDIRECTORY(vcore)
147 ADD_SUBDIRECTORY(etc)