1 # Copyright (c) 2014-2015 Samsung Electronics Co., Ltd All Rights Reserved
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
7 # http://www.apache.org/licenses/LICENSE-2.0
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.
15 # @file CMakeLists.txt
16 # @author Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
17 # @author Radoslaw Bartosiak <r.bartosiak@samsung.com>
20 ############################# Check minimum CMake version #####################
22 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
24 set(CYNARA_VERSION 0.8.0)
26 ############################# cmake packages ##################################
28 INCLUDE(FindPkgConfig)
29 INCLUDE(CheckCXXCompilerFlag)
31 ########################## search for packages ################################
33 PKG_CHECK_MODULES(SYSTEMD_DEP
39 IF (SYSTEMD_DEP_FOUND)
40 SET(BUILD_WITH_SYSTEMD ON)
41 ENDIF (SYSTEMD_DEP_FOUND)
43 ######################## directory configuration ############################
46 "${CMAKE_INSTALL_PREFIX}/lib"
48 "Object code libraries directory")
51 "${CMAKE_INSTALL_PREFIX}/bin"
53 "User executables directory")
56 "${CMAKE_INSTALL_PREFIX}/sbin"
58 "System admin executables directory")
61 "${CMAKE_INSTALL_PREFIX}/etc"
63 "Read-only single-machine data directory")
66 "${CMAKE_INSTALL_PREFIX}/include"
68 "Header files directory")
71 "${CMAKE_INSTALL_PREFIX}/var"
73 "Modifiable single-machine data directory")
76 "${CMAKE_INSTALL_PREFIX}/share"
78 "Read-only architecture-independent data root directory")
81 "${CMAKE_INSTALL_PREFIX}/lib/systemd/system"
83 "Systemd system unit file directory")
86 "${CMAKE_INSTALL_PREFIX}/tmp"
88 "Running system information directory")
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("-DSOCKET_DIR=\"${SOCKET_DIR}\"")
100 ############################# compiler flags ##################################
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")
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")
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")
116 MESSAGE(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
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
125 # Don't export symbols by default
126 ADD_DEFINITIONS("-fvisibility=hidden")
128 # Export version of cynara
129 ADD_DEFINITIONS("-DCYNARA_VERSION=\"${CYNARA_VERSION}\"")
131 IF (CMAKE_BUILD_TYPE MATCHES "DEBUG")
132 ADD_DEFINITIONS("-DBUILD_TYPE_DEBUG")
133 ENDIF (CMAKE_BUILD_TYPE MATCHES "DEBUG")
135 IF (BUILD_WITH_SYSTEMD)
136 ADD_DEFINITIONS("-DBUILD_WITH_SYSTEMD")
137 ENDIF (BUILD_WITH_SYSTEMD)
140 ADD_DEFINITIONS("-DCYNARA_NO_LOGS")
141 ENDIF (CYNARA_NO_LOGS)
143 SET(TARGET_CYNARA "cynara")
144 SET(TARGET_LIB_CYNARA "cynara-client")
145 SET(TARGET_LIB_CYNARA_ASYNC "cynara-client-async")
146 SET(TARGET_LIB_CYNARA_COMMON "cynara-client-commons")
147 SET(TARGET_LIB_CYNARA_ADMIN "cynara-admin")
148 SET(TARGET_LIB_CYNARA_AGENT "cynara-agent")
149 SET(TARGET_CYNARA_COMMON "cynara-commons")
150 SET(TARGET_CYNARA_TESTS "cynara-tests")
151 SET(TARGET_LIB_CREDS_COMMONS "cynara-creds-commons")
152 SET(TARGET_LIB_CREDS_DBUS "cynara-creds-dbus")
153 SET(TARGET_LIB_CREDS_GDBUS "cynara-creds-gdbus")
154 SET(TARGET_LIB_CREDS_SOCKET "cynara-creds-socket")
155 SET(TARGET_LIB_SESSION "cynara-session")
156 SET(TARGET_LIB_CYNARA_STORAGE "cynara-storage")
157 SET(TARGET_CYAD "cyad")
158 SET(TARGET_CHSGEN "cynara-db-chsgen")
160 ADD_SUBDIRECTORY(src)
161 ADD_SUBDIRECTORY(pkgconfig)
162 ADD_SUBDIRECTORY(conf)
164 IF (BUILD_WITH_SYSTEMD)
165 ADD_SUBDIRECTORY(systemd)
166 ENDIF (BUILD_WITH_SYSTEMD)
168 ADD_SUBDIRECTORY(migration)
171 ADD_SUBDIRECTORY(test)