Rework configuration of installation and run-time paths
[platform/core/security/cynara.git] / CMakeLists.txt
1 # Copyright (c) 2014-2015 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 # @file        CMakeLists.txt
16 # @author      Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
17 # @author      Radoslaw Bartosiak <r.bartosiak@samsung.com>
18 #
19
20 ############################# Check minimum CMake version #####################
21
22 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
23 PROJECT("cynara")
24 set(CYNARA_VERSION 0.8.0)
25
26 ############################# cmake packages ##################################
27
28 INCLUDE(FindPkgConfig)
29 INCLUDE(CheckCXXCompilerFlag)
30
31 ########################## search for packages ################################
32
33 PKG_CHECK_MODULES(SYSTEMD_DEP
34     QUIET
35     libsystemd-daemon
36     libsystemd-journal
37     )
38
39 IF (SYSTEMD_DEP_FOUND)
40     SET(BUILD_WITH_SYSTEMD ON)
41 ENDIF (SYSTEMD_DEP_FOUND)
42
43 ########################  directory configuration  ############################
44
45 SET(LIB_DIR
46     "${CMAKE_INSTALL_PREFIX}/lib"
47     CACHE PATH
48     "Object code libraries directory")
49
50 SET(BIN_DIR
51     "${CMAKE_INSTALL_PREFIX}/bin"
52     CACHE PATH
53     "User executables directory")
54
55 SET(SBIN_DIR
56     "${CMAKE_INSTALL_PREFIX}/sbin"
57     CACHE PATH
58     "System admin executables directory")
59
60 SET(SYS_CONFIG_DIR
61     "${CMAKE_INSTALL_PREFIX}/etc"
62     CACHE PATH
63     "Read-only single-machine data directory")
64
65 SET(INCLUDE_DIR
66     "${CMAKE_INSTALL_PREFIX}/include"
67     CACHE PATH
68     "Header files directory")
69
70 SET(LOCAL_STATE_DIR
71     "${CMAKE_INSTALL_PREFIX}/var"
72     CACHE PATH
73     "Modifiable single-machine data directory")
74
75 SET(DATA_ROOT_DIR
76     "${CMAKE_INSTALL_PREFIX}/share"
77     CACHE PATH
78     "Read-only architecture-independent data root directory")
79
80 SET(SYSTEMD_UNIT_DIR
81     "${CMAKE_INSTALL_PREFIX}/lib/systemd/system"
82     CACHE PATH
83     "Systemd system unit file directory")
84
85 SET(SOCKET_DIR
86     "${CMAKE_INSTALL_PREFIX}/tmp"
87     CACHE PATH
88     "Running system information directory")
89
90 ADD_DEFINITIONS("-DLIB_DIR=\"${LIB_DIR}\"")
91 ADD_DEFINITIONS("-DBIN_DIR=\"${BIN_DIR}\"")
92 ADD_DEFINITIONS("-DSBIN_DIR=\"${SBIN_DIR}\"")
93 ADD_DEFINITIONS("-DSYS_CONFIG_DIR=\"${SYS_CONFIG_DIR}\"")
94 ADD_DEFINITIONS("-DINCLUDE_DIR=\"${INCLUDE_DIR}\"")
95 ADD_DEFINITIONS("-DLOCAL_STATE_DIR=\"${LOCAL_STATE_DIR}\"")
96 ADD_DEFINITIONS("-DDATA_ROOT_DIR=\"${DATA_ROOT_DIR}\"")
97 ADD_DEFINITIONS("-DSYSTEMD_UNIT_DIR=\"${SYSTEMD_UNIT_DIR}\"")
98 ADD_DEFINITIONS("-DRUN_DIR=\"${RUN_DIR}\"")
99
100 ############################# compiler flags ##################################
101
102 SET(CMAKE_CXX_FLAGS_PROFILING  "-O0 -g -pg")
103 SET(CMAKE_CXX_FLAGS_DEBUG      "-O0 -g -ggdb")
104 SET(CMAKE_CXX_FLAGS_RELEASE    "-O2 -g")
105 SET(CMAKE_CXX_FLAGS_CCOV       "-O2 -g --coverage")
106
107 # Check for C++11 support and enable proper compilation flags
108 CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
109 IF(COMPILER_SUPPORTS_CXX11)
110     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
111 ELSE()
112     CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
113     IF(COMPILER_SUPPORTS_CXX0X)
114         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
115     ELSE()
116         MESSAGE(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
117     ENDIF()
118 ENDIF()
119
120 # Set compiler warning flags
121 ADD_DEFINITIONS("-Werror")                      # Make all warnings into errors.
122 ADD_DEFINITIONS("-Wall")                        # Generate all warnings
123 ADD_DEFINITIONS("-Wextra")                      # Generate even more extra warnings
124
125 # Don't export symbols by default
126 ADD_DEFINITIONS("-fvisibility=hidden")
127
128 # Export version of cynara
129 ADD_DEFINITIONS("-DCYNARA_VERSION=\"${CYNARA_VERSION}\"")
130
131 IF (CMAKE_BUILD_TYPE MATCHES "DEBUG")
132     ADD_DEFINITIONS("-DBUILD_TYPE_DEBUG")
133 ENDIF (CMAKE_BUILD_TYPE MATCHES "DEBUG")
134
135 IF (BUILD_WITH_SYSTEMD)
136     ADD_DEFINITIONS("-DBUILD_WITH_SYSTEMD")
137 ENDIF (BUILD_WITH_SYSTEMD)
138
139 SET(TARGET_CYNARA "cynara")
140 SET(TARGET_LIB_CYNARA "cynara-client")
141 SET(TARGET_LIB_CYNARA_ASYNC "cynara-client-async")
142 SET(TARGET_LIB_CYNARA_COMMON "cynara-client-commons")
143 SET(TARGET_LIB_CYNARA_ADMIN "cynara-admin")
144 SET(TARGET_LIB_CYNARA_AGENT "cynara-agent")
145 SET(TARGET_CYNARA_COMMON "cynara-commons")
146 SET(TARGET_CYNARA_TESTS "cynara-tests")
147 SET(TARGET_LIB_CREDS_COMMONS "cynara-creds-commons")
148 SET(TARGET_LIB_CREDS_DBUS "cynara-creds-dbus")
149 SET(TARGET_LIB_CREDS_GDBUS "cynara-creds-gdbus")
150 SET(TARGET_LIB_CREDS_SOCKET "cynara-creds-socket")
151 SET(TARGET_LIB_SESSION "cynara-session")
152 SET(TARGET_LIB_CYNARA_STORAGE "cynara-storage")
153 SET(TARGET_CYAD "cyad")
154 SET(TARGET_CHSGEN "cynara-db-chsgen")
155
156 ADD_SUBDIRECTORY(src)
157 ADD_SUBDIRECTORY(pkgconfig)
158
159 IF (BUILD_WITH_SYSTEMD)
160     ADD_SUBDIRECTORY(systemd)
161 ENDIF (BUILD_WITH_SYSTEMD)
162
163 ADD_SUBDIRECTORY(migration)
164
165 IF (BUILD_TESTS)
166     ADD_SUBDIRECTORY(test)
167 ENDIF (BUILD_TESTS)