47db767eae2b696be95036b1f645621638663af2
[platform/core/security/vasum.git] / client / CMakeLists.txt
1 # Copyright (c) 2014 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 #
16 # @file   CMakeLists.txt
17 # @author Mateusz Malicki (m.malicki2@samsung.com)
18 #
19
20 MESSAGE(STATUS "")
21 MESSAGE(STATUS "Generating makefile for the Client...")
22 ## set client library sources (without vasum-wrapper.cpp)
23 FILE(GLOB project_SRCS *.cpp *.hpp *.h)
24 FILE(GLOB project_SRCS_rm vasum-wrapper.cpp wrapper-compat.* vasum.h vasum_list.h)
25 LIST(REMOVE_ITEM project_SRCS ${project_SRCS_rm})
26
27 ## set wrapper library sources (without vasum-client.cpp)
28 FILE(GLOB wrapper_SRCS *.cpp *.hpp *.h)
29 FILE(GLOB wrapper_SRCS_rm vasum-client.cpp)
30 LIST(REMOVE_ITEM wrapper_SRCS ${wrapper_SRCS_rm})
31
32 FILE(GLOB common_SRCS ${COMMON_FOLDER}/epoll/*.hpp              ${COMMON_FOLDER}/epoll/*.cpp
33                       ${COMMON_FOLDER}/ipc/*.hpp                ${COMMON_FOLDER}/ipc/*.cpp
34                       ${COMMON_FOLDER}/ipc/internals/*.hpp      ${COMMON_FOLDER}/ipc/internals/*.cpp
35                       ${COMMON_FOLDER}/utils/*.hpp              ${COMMON_FOLDER}/utils/*.cpp
36                       ${COMMON_FOLDER}/*.hpp                    ${COMMON_FOLDER}/*.cpp)
37
38 ## set version highier then vasum.so.0.1.0
39 SET(_LIB_VERSION_ "${VERSION}")
40 SET(_LIB_SOVERSION_ "0")
41 SET(PC_FILE "${PROJECT_NAME}.pc")
42
43 ## Set the default ELF image symbol visibility to hidden. Using this feature
44 ## can very substantially improve linking and load times of shared object
45 ## libraries, produce more optimized code, provide near-perfect API export
46 ## and prevent symbol clashes
47 ADD_DEFINITIONS(-fvisibility=hidden)
48
49 ## Setup target ################################################################
50 ADD_LIBRARY(${PROJECT_NAME}-client SHARED ${project_SRCS} ${common_SRCS})
51 SET_TARGET_PROPERTIES(${PROJECT_NAME}-client PROPERTIES
52         SOVERSION ${_LIB_SOVERSION_}
53         VERSION ${_LIB_VERSION_}
54         COMPILE_DEFINITIONS HOST_IPC_SOCKET="${VSM_SERVER_IPC_SOCKET_PATH}")
55
56 ADD_LIBRARY(${PROJECT_NAME} SHARED ${wrapper_SRCS})
57 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
58         SOVERSION ${_LIB_SOVERSION_}
59         VERSION ${_LIB_VERSION_}
60         COMPILE_DEFINITIONS HOST_IPC_SOCKET="${VSM_SERVER_IPC_SOCKET_PATH}")
61
62 ## Link libraries ##############################################################
63 FIND_PACKAGE(Boost COMPONENTS system filesystem)
64 PKG_CHECK_MODULES(LIB_DEPS REQUIRED gio-2.0 libsystemd-daemon libcap-ng)
65 INCLUDE_DIRECTORIES(SYSTEM ${LIB_DEPS_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
66 INCLUDE_DIRECTORIES(${COMMON_FOLDER})
67 INCLUDE_DIRECTORIES(${LIBS_FOLDER})
68 INCLUDE_DIRECTORIES(${SERVER_FOLDER})
69 TARGET_LINK_LIBRARIES(${PROJECT_NAME}-client ${LIB_DEPS_LIBRARIES} ${Boost_LIBRARIES}
70                       Config SimpleDbus)
71 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIB_DEPS_LIBRARIES} ${Boost_LIBRARIES}
72                       Config SimpleDbus)
73
74 ## Generate the pc file ########################################################
75 CONFIGURE_FILE(${PC_FILE}.in ${CMAKE_BINARY_DIR}/${PC_FILE} @ONLY)
76
77
78 ## Install #####################################################################
79 INSTALL(FILES       ${CMAKE_BINARY_DIR}/${PC_FILE}
80         DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
81
82 INSTALL(TARGETS     ${PROJECT_NAME}-client ${PROJECT_NAME}
83         DESTINATION ${CMAKE_INSTALL_LIBDIR}
84         COMPONENT   RuntimeLibraries)
85
86 INSTALL(FILES       vasum-client.h vasum.h vasum_list.h
87         DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})