CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(certsvc)
+PROJECT(cert-svc)
INCLUDE(FindPkgConfig)
-SET(SO_VERSION 1)
-SET(VERSION "${SO_VERSION}.0.0")
-
-# define debug output
-SET(DEBUG_OUTPUT "-DCERT_SVC_LOG") # for debug
-#SET(DEBUG_OUTPUT "-DCERT_SVC_LOG_CONSOLE") # for debug
-
-SET(TARGET_CERT_SVC_LIB "cert-svc")
-SET(TARGET_VCORE_LIB "cert-svc-vcore")
-SET(TARGET_SIGN_TOOL "dpkg-pki-sig")
+STRING(REGEX MATCH "([^.]*)" SO_VERSION "${VERSION}")
# compiler options
-SET(GC_SECTIONS_FLAGS "-fdata-sections -ffunction-sections -Wl,--gc-sections")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GC_SECTIONS_FLAGS}")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_SECTIONS_FLAGS}")
-
-SET(CMAKE_C_FLAGS_RELEASE "-fvisibility=hidden -Wall -O2")
-SET(CMAKE_CXX_FLAGS_RELEASE "-std=c++0x -Wall -O2")
-
-SET(CMAKE_C_FLAGS_DEBUG "-fvisibility=hidden -Wall -O0 -g")
-SET(CMAKE_CXX_FLAGS_DEBUG "-std=c++0x -Wall -O0 -g")
-
-SET(CMAKE_C_FLAGS_CCOV "-fvisibility=hidden -Wall -O2 --coverage")
-SET(CMAKE_CXX_FLAGS_CCOV "-std=c++0x -Wall -O2 --coverage")
-
+SET(GC_SECTIONS_FLAGS "-fdata-sections -ffunction-sections -Wl,--gc-sections")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GC_SECTIONS_FLAGS}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GC_SECTIONS_FLAGS}")
+SET(CMAKE_C_FLAGS_RELEASE "-g -O2")
+SET(CMAKE_CXX_FLAGS_RELEASE "-g -std=c++0x -O2")
+SET(CMAKE_C_FLAGS_DEBUG "-g -O0 -Wp,-U_FORTIFY_SOURCE")
+SET(CMAKE_CXX_FLAGS_DEBUG "-g -std=c++0x -O0 -Wp,-U_FORTIFY_SOURCE")
+SET(CMAKE_C_FLAGS_CCOV "-g -O2 --coverage")
+SET(CMAKE_CXX_FLAGS_CCOV "-g -std=c++0x -O2 --coverage")
SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed")
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
-SET(CMAKE_SKIP_RPATH "TRUE")
-
-################################################################################
-# for libcert-svc.so
-################################################################################
-
-PKG_CHECK_MODULES(CERT_SVC_DEPS
- openssl
- dlog
- glib-2.0
- REQUIRED
-)
-
-SET(CERT_SVC_SOURCES
- ${PROJECT_SOURCE_DIR}/srcs/cert-service.c
- ${PROJECT_SOURCE_DIR}/srcs/cert-service-util.c
- ${PROJECT_SOURCE_DIR}/srcs/cert-service-store.c
- ${PROJECT_SOURCE_DIR}/srcs/cert-service-process.c
-)
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+SET(CMAKE_SKIP_RPATH "TRUE")
-IF(DEFINED DEBUG_OUTPUT)
- SET_SOURCE_FILES_PROPERTIES(${CERT_SVC_SOURCES}
- PROPERTIES COMPILE_FLAGS ${DEBUG_OUTPUT})
-ENDIF(DEFINED DEBUG_OUTPUT)
-
-INCLUDE_DIRECTORIES(
- ${PROJECT_SOURCE_DIR}/include
- ${CERT_SVC_DEPS_INCLUDE_DIRS}
-)
+# compiler warning flags
+ADD_DEFINITIONS("-Wall")
+ADD_DEFINITIONS("-Wextra")
+ADD_DEFINITIONS("-Werror")
-ADD_LIBRARY(${TARGET_CERT_SVC_LIB} SHARED ${CERT_SVC_SOURCES})
-
-SET_TARGET_PROPERTIES(${TARGET_CERT_SVC_LIB} PROPERTIES
- SOVERSION ${SO_VERSION}
- VERSION ${VERSION}
-)
-
-TARGET_LINK_LIBRARIES(${TARGET_CERT_SVC_LIB}
- pthread
- ${CERT_SVC_DEPS_LIBRARIES}
-)
+SET(TARGET_VCORE_LIB "cert-svc-vcore")
+SET(TARGET_CERT_SERVER "cert-server")
-################################################################################
-# for dpkg-pki-sig
-################################################################################
+ADD_DEFINITIONS("-DSIGNATURE_SCHEMA_PATH=\"${CERT_SVC_RO_PATH}/schema.xsd\"")
-SET(SIGN_TOOL_SOURCES
- ${PROJECT_SOURCE_DIR}/srcs/dpkg-pki-sig.c
- ${PROJECT_SOURCE_DIR}/srcs/cert-service-process.c
- ${PROJECT_SOURCE_DIR}/srcs/cert-service-util.c
-)
+ADD_DEFINITIONS("-DSERVER_STREAM=\"${SERVER_STREAM}\"")
-ADD_EXECUTABLE(${TARGET_SIGN_TOOL} ${SIGN_TOOL_SOURCES})
+ADD_DEFINITIONS("-DCERTSVC_SYSTEM_STORE_DB=\"${CERT_SVC_DB_PATH}/certs-meta.db\"")
+ADD_DEFINITIONS("-DCERTSVC_PKCS12_STORAGE_DIR=\"${CERT_SVC_PKCS12}/\"")
-TARGET_LINK_LIBRARIES(${TARGET_SIGN_TOOL}
- ${TARGET_CERT_SVC_LIB}
- ${CERT_SVC_DEPS_LIBRARIES}
-)
+ADD_DEFINITIONS("-DTZ_SYS_CA_CERTS=\"${TZ_SYS_CA_CERTS}\"")
+ADD_DEFINITIONS("-DTZ_SYS_CA_CERTS_ORIG=\"${TZ_SYS_CA_CERTS_ORIG}\"")
+ADD_DEFINITIONS("-DTZ_SYS_CA_BUNDLE=\"${TZ_SYS_CA_BUNDLE}\"")
-################################################################################
+SET(CA_CERTS_PATH ${RO_DATA_DIR}/ca-certificates)
+ADD_DEFINITIONS("-DTZ_SYS_CA_CERTS_TIZEN=\"${CA_CERTS_PATH}/tizen\"")
+ADD_DEFINITIONS("-DFINGERPRINT_LIST_PATH=\"${CA_CERTS_PATH}/fingerprint/fingerprint_list.xml\"")
+ADD_DEFINITIONS("-DFINGERPRINT_LIST_EXT_PATH=\"${CA_CERTS_PATH}/fingerprint/fingerprint_list_ext.xml\"")
+ADD_DEFINITIONS("-DFINGERPRINT_LIST_RW_PATH=\"${FINGERPRINT_LIST_RW_PATH}\"")
+ADD_DEFINITIONS("-DFINGERPRINT_LIST_SCHEMA_PATH=\"${CA_CERTS_PATH}/fingerprint/fingerprint_list.xsd\"")
-CONFIGURE_FILE(cert-svc.pc.in cert-svc.pc @ONLY)
CONFIGURE_FILE(cert-svc-vcore.pc.in cert-svc-vcore.pc @ONLY)
-
-INSTALL(TARGETS ${TARGET_CERT_SVC_LIB} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
-INSTALL(PROGRAMS ${TARGET_SIGN_TOOL} DESTINATION ${BINDIR})
INSTALL(FILES
- ${CMAKE_CURRENT_BINARY_DIR}/cert-svc.pc
${CMAKE_CURRENT_BINARY_DIR}/cert-svc-vcore.pc
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
)
-INSTALL(FILES ${PROJECT_SOURCE_DIR}/targetinfo DESTINATION /opt/share/cert-svc/)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/cert-service.h DESTINATION ${INCLUDEDIR})
-
-# Now we must create empty directory for certificates.
-# Without this directories rpm package will fail during build.
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /usr/share/cert-svc/ca-certs/code-signing/native
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /usr/share/cert-svc/ca-certs/code-signing/wac
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/code-signing/wac
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/code-signing/tizen
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/sim/operator
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/sim/thirdparty
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/user
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/trusteduser
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/mdm/security
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/certs/mdm/security/cert
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/etc/empty
- DESTINATION /opt/share/cert-svc/pkcs12
- FILES_MATCHING PATTERN THISPATTERNMUSTNOTMATCH
-)
-ADD_SUBDIRECTORY(vcore)
+ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(systemd)
ADD_SUBDIRECTORY(etc)
+
+IF (DEFINED CERTSVC_TEST_BUILD)
+ADD_DEFINITIONS("-DTESTAPP_RES_DIR=\"${CERT_SVC_TESTS}/\"")
+ADD_SUBDIRECTORY(tests)
+ENDIF (DEFINED CERTSVC_TEST_BUILD)
+
+CONFIGURE_FILE(packaging/cert-svc.manifest.in cert-svc.manifest @ONLY)