1 # Copyright (C) 2012, BMW AG
3 # This file is part of GENIVI Project AudioManager.
5 # Contributions are licensed to the GENIVI Alliance under one or more
6 # Contribution License Agreements.
9 # This Source Code Form is subject to the terms of the
10 # Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
11 # this file, You can obtain one at http://mozilla.org/MPL/2.0/.
13 # author Christian Mueller, christian.ei.mueller@bmw.de BMW 2011,2012
15 # For further information see http://www.genivi.org/.
18 cmake_minimum_required(VERSION 2.6)
20 PROJECT(AudioManagerDeamon)
22 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
23 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
25 set(DOC_OUTPUT_PATH ${DOC_OUTPUT_PATH}/AudioManager)
26 set(INCLUDE_FOLDER "include")
28 IF (WITH_DATABASE_STORAGE)
29 pkg_check_modules(SQLITE REQUIRED sqlite3)
30 ENDIF (WITH_DATABASE_STORAGE)
32 IF (WITH_SYSTEMD_WATCHDOG)
33 pkg_check_modules(SYSTEMD libsystemd-daemon>=44)
35 message(STATUS "Found libsystemd-daemon, version: ${SYSTEMD_VERSION}")
37 message(STATUS "Did not find libsystemd-daemon, using own lib")
39 ENDIF (WITH_SYSTEMD_WATCHDOG)
42 FIND_PACKAGE(DBUS REQUIRED)
43 ENDIF(WITH_DBUS_WRAPPER)
45 FIND_PACKAGE(NSM REQUIRED)
48 FIND_PACKAGE(CommonAPI REQUIRED)
49 ENDIF(WITH_CAPI_WRAPPER)
53 src/CAmCommandReceiver.cpp
54 src/CAmCommandSender.cpp
55 src/CAmControlReceiver.cpp
56 src/CAmControlSender.cpp
57 src/CAmDatabaseObserver.cpp
58 src/CAmRoutingReceiver.cpp
59 src/CAmRoutingSender.cpp
61 src/CAmSocketHandler.cpp
66 # Preallocation variable for the map.
67 IF(NOT WITH_DATABASE_STORAGE )
69 IF(NOT DEFINED AM_MAP_CAPACITY)
70 set (AM_MAP_CAPACITY 10)
71 ENDIF(NOT DEFINED AM_MAP_CAPACITY)
72 add_definitions( -DAM_MAP_CAPACITY=${AM_MAP_CAPACITY} )
74 IF(NOT DEFINED AM_MAX_CONNECTIONS)
75 set (AM_MAX_CONNECTIONS 0x1000)
76 ENDIF(NOT DEFINED AM_MAX_CONNECTIONS)
77 add_definitions( -DAM_MAX_CONNECTIONS=${AM_MAX_CONNECTIONS} )
79 IF(NOT DEFINED AM_MAX_MAIN_CONNECTIONS)
80 set (AM_MAX_MAIN_CONNECTIONS SHRT_MAX)
81 ENDIF(NOT DEFINED AM_MAX_MAIN_CONNECTIONS)
82 add_definitions( -DAM_MAX_MAIN_CONNECTIONS=${AM_MAX_MAIN_CONNECTIONS} )
84 ENDIF(NOT WITH_DATABASE_STORAGE)
87 SET (AUDIOMAN_SRCS_CXX
89 src/CAmTelnetServer.cpp
90 src/CAmTelnetMenuHelper.cpp
94 IF(WITH_SYSTEMD_WATCHDOG)
95 SET (AUDIOMAN_SRCS_CXX
99 ENDIF(WITH_SYSTEMD_WATCHDOG)
101 IF (NOT SYSTEMD_FOUND)
102 SET (AUDIOMAN_SRCS_CXX
106 ENDIF (NOT SYSTEMD_FOUND)
108 IF(WITH_DBUS_WRAPPER)
109 SET (AUDIOMAN_SRCS_CXX
111 src/CAmDbusWrapper.cpp
113 ENDIF(WITH_DBUS_WRAPPER)
115 IF(WITH_CAPI_WRAPPER)
116 SET (AUDIOMAN_SRCS_CXX
118 src/CAmCommonAPIWrapper.cpp
120 ENDIF(WITH_CAPI_WRAPPER)
123 IF(WITH_DBUS_WRAPPER)
124 SET (AUDIOMAN_SRCS_CXX
126 src/CAmNodeStateCommunicatorDBus.cpp
128 ELSE(WITH_DBUS_WRAPPER)
129 SET (AUDIOMAN_SRCS_CXX
131 src/CAmNodeStateCommunicatorCAPI.cpp
133 ENDIF(WITH_DBUS_WRAPPER)
136 IF(WITH_DATABASE_STORAGE)
137 SET (AUDIOMAN_SRCS_CXX
139 src/CAmDatabaseHandlerSQLite.cpp
141 ELSE(WITH_DATABASE_STORAGE)
142 SET (AUDIOMAN_SRCS_CXX
144 src/CAmDatabaseHandlerMap.cpp
146 ENDIF(WITH_DATABASE_STORAGE)
150 ${CMAKE_CURRENT_BINARY_DIR}
151 ${AUDIO_INCLUDE_FOLDER}
152 ${PROJECT_INCLUDE_FOLDER}
157 IF(WITH_CAPI_WRAPPER)
159 # Find the common-api sources.
160 # The sources can be placed in the build directory (DESTINATION) or in the source tree (ALT_DESTINATION).
161 # The ALT_DESTINATION is used as fall back if the DESTINATION directory dosen't contain the sources or you just don't want to use the generator.
162 INCLUDE(CommonAPIGenerator)
163 COMMON_API_GENERATE_SOUCRES(TARGET COMMON_API
164 FIDLS fidls/NodeStateManager.fdepl # a list with fidls
165 DESTINATION src-gen # a relative path to the build directory or an absolute path
166 ALT_DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/src-gen # an alternative relative/absolute path with common-api sources, usually in the source tree
169 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
170 ${COMMON_API_INCLUDE_DIRS}
171 ${COMMON_API_DBUS_INCLUDE_DIRS}
172 ${COMMON_API_GEN_INCLUDE_DIR}
174 ENDIF(WITH_CAPI_WRAPPER)
177 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
182 IF(WITH_DBUS_WRAPPER)
183 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
184 ${DBUS_ARCH_INCLUDE_DIR}
187 ENDIF(WITH_DBUS_WRAPPER)
189 file(GLOB ${AUDIOMAN_SRCS_CXX} ${COMMON_API_GEN_SOURCES})
191 ADD_EXECUTABLE(AudioManager ${AUDIOMAN_SRCS_CXX} ${COMMON_API_GEN_SOURCES})
193 TARGET_LINK_LIBRARIES(AudioManager
198 IF(WITH_DBUS_WRAPPER)
199 TARGET_LINK_LIBRARIES(AudioManager
203 ELSEIF(WITH_CAPI_WRAPPER)
204 TARGET_LINK_LIBRARIES(AudioManager
205 ${COMMON_API_LIBRARIES}
206 ${COMMON_API_DBUS_LIBRARIES}
212 TARGET_LINK_LIBRARIES(AudioManager
218 TARGET_LINK_LIBRARIES(AudioManager
221 ENDIF (SYSTEMD_FOUND)
223 IF(WITH_CAPI_WRAPPER)
225 INSERT_DBUS_CONF_IF_NEEDED("@NSM_DBUS_CONF@"
226 "${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/NodeStateManager_dbus.conf"
229 # Generates the dbus configuration file. Every component is responsible to append it dbus configuration part.
230 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/AudioManager_dbus.conf.in ${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/AudioManager_dbus.conf)
231 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/AudioManager_dbus.conf.in ${CMAKE_BINARY_DIR}/AudioManager_dbus.conf)
233 ENDIF(WITH_CAPI_WRAPPER)
236 INSTALL(TARGETS AudioManager
239 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
243 INSTALL(DIRECTORY "${AUDIO_INCLUDE_FOLDER}/"
250 SET(NSM_INTROSPECTION_FILE ${EXECUTABLE_OUTPUT_PATH}/LifeCycleConsumer.xml)
252 COMMAND mkdir -p "${CMAKE_SOURCE_DIR}/bin"
253 COMMAND cp "${CMAKE_SOURCE_DIR}/cmake/LifecycleConsumer.xml" ${NSM_INTROSPECTION_FILE}
254 COMMAND cp "${CMAKE_BINARY_DIR}/AudioManager_dbus.conf" ${EXECUTABLE_OUTPUT_PATH})
256 SET(NSM_INTROSPECTION_FILE ${CMAKE_INSTALL_PREFIX}/share/audiomanager/LifecycleConsumer.xml)
258 FILES ${CMAKE_SOURCE_DIR}/cmake/LifecycleConsumer.xml #${CMAKE_BINARY_DIR}/AudioManager_dbus.conf
259 DESTINATION "${NSM_INTROSPECTION_FILE}"
261 ENDIF(USE_BUILD_LIBS)
264 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/cmake/config.cmake ${CMAKE_SOURCE_DIR}/include/config.h )
267 add_subdirectory (test)
270 # General packet dependency
271 IF(WITH_DATABASE_STORAGE)
272 SET(ADD_DEPEND_BIN_PROP "sqlite3(>=3.6.22)")
273 ENDIF(WITH_DATABASE_STORAGE)
275 # Optional packet dependency
277 SET(ADD_DEPEND_BIN_PROP ${ADD_DEPEND_BIN_PROP} "dlt")
280 IF(WITH_DBUS_WRAPPER)
281 SET(ADD_DEPEND_BIN_PROP ${ADD_DEPEND_BIN_PROP} "libdbus-1-3(>=1.2.16)")
282 ENDIF(WITH_DBUS_WRAPPER)
284 # Additional Dev packet dependency
285 SET(ADD_DEPEND_DEV_PROP "audiomanager-bin" ${ADD_DEPEND_BIN_PROP})
287 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -fno-common -fno-strict-aliasing -DNDEBUG")
289 MESSAGE(STATUS "bin packet dependency: ${ADD_DEPEND_BIN_PROP}")
290 MESSAGE(STATUS "dev dependency: ${ADD_DEPEND_DEV_PROP}")
292 set_property(GLOBAL APPEND PROPERTY bin_prop "${ADD_DEPEND_BIN_PROP}")
293 set_property(GLOBAL APPEND PROPERTY dev_prop "${ADD_DEPEND_DEV_PROP}")