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 FIND_PACKAGE(CommonAPI_DBus REQUIRED)
50 ENDIF(WITH_CAPI_WRAPPER)
54 src/CAmCommandReceiver.cpp
55 src/CAmCommandSender.cpp
56 src/CAmControlReceiver.cpp
57 src/CAmControlSender.cpp
58 src/CAmDatabaseObserver.cpp
59 src/CAmRoutingReceiver.cpp
60 src/CAmRoutingSender.cpp
62 src/CAmSocketHandler.cpp
67 # Preallocation variable for the map.
68 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} )
73 ENDIF(NOT WITH_DATABASE_STORAGE)
76 SET (AUDIOMAN_SRCS_CXX
78 src/CAmTelnetServer.cpp
79 src/CAmTelnetMenuHelper.cpp
83 IF(WITH_SYSTEMD_WATCHDOG)
84 SET (AUDIOMAN_SRCS_CXX
88 ENDIF(WITH_SYSTEMD_WATCHDOG)
90 IF (NOT SYSTEMD_FOUND)
91 SET (AUDIOMAN_SRCS_CXX
95 ENDIF (NOT SYSTEMD_FOUND)
98 SET (AUDIOMAN_SRCS_CXX
100 src/CAmDbusWrapper.cpp
102 ENDIF(WITH_DBUS_WRAPPER)
104 IF(WITH_CAPI_WRAPPER)
105 SET (AUDIOMAN_SRCS_CXX
107 src/CAmCommonAPIWrapper.cpp
109 ENDIF(WITH_CAPI_WRAPPER)
112 IF(WITH_DBUS_WRAPPER)
113 SET (AUDIOMAN_SRCS_CXX
115 src/CAmNodeStateCommunicatorDBus.cpp
117 ELSE(WITH_DBUS_WRAPPER)
118 SET (AUDIOMAN_SRCS_CXX
120 src/CAmNodeStateCommunicatorCAPI.cpp
122 ENDIF(WITH_DBUS_WRAPPER)
125 IF(WITH_DATABASE_STORAGE)
126 SET (AUDIOMAN_SRCS_CXX
128 src/CAmDatabaseHandlerSQLite.cpp
130 ELSE(WITH_DATABASE_STORAGE)
131 SET (AUDIOMAN_SRCS_CXX
133 src/CAmDatabaseHandlerMap.cpp
135 ENDIF(WITH_DATABASE_STORAGE)
139 ${CMAKE_CURRENT_BINARY_DIR}
140 ${AUDIO_INCLUDE_FOLDER}
141 ${PROJECT_INCLUDE_FOLDER}
146 IF(WITH_CAPI_WRAPPER)
147 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
148 ${COMMON_API_INCLUDE_DIRS}
149 ${COMMON_API_DBUS_INCLUDE_DIRS}
150 ${COMMON_API_GEN_INCLUDE_DIR}
152 ENDIF(WITH_CAPI_WRAPPER)
155 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
160 IF(WITH_DBUS_WRAPPER)
161 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
162 ${DBUS_ARCH_INCLUDE_DIR}
165 ENDIF(WITH_DBUS_WRAPPER)
167 file(GLOB ${AUDIOMAN_SRCS_CXX} ${COMMON_API_GEN_SOURCES})
169 ADD_EXECUTABLE(AudioManager ${AUDIOMAN_SRCS_CXX} ${COMMON_API_GEN_SOURCES})
171 TARGET_LINK_LIBRARIES(AudioManager
176 IF(WITH_DBUS_WRAPPER)
177 TARGET_LINK_LIBRARIES(AudioManager
181 ELSEIF(WITH_CAPI_WRAPPER)
182 TARGET_LINK_LIBRARIES(AudioManager
183 ${COMMON_API_LIBRARIES}
184 ${COMMON_API_DBUS_LIBRARIES}
190 TARGET_LINK_LIBRARIES(AudioManager
196 TARGET_LINK_LIBRARIES(AudioManager
199 ENDIF (SYSTEMD_FOUND)
201 IF(WITH_CAPI_WRAPPER)
203 INSERT_DBUS_CONF_IF_NEEDED("@NSM_DBUS_CONF@"
204 "${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/NodeStateManager_dbus.conf"
207 # Generates the dbus configuration file. Every component is responsible to append it dbus configuration part.
208 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/AudioManager_dbus.conf.in ${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/AudioManager_dbus.conf)
209 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/AudioManager_dbus.conf.in ${CMAKE_BINARY_DIR}/AudioManager_dbus.conf)
211 ENDIF(WITH_CAPI_WRAPPER)
214 INSTALL(TARGETS AudioManager
217 PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
221 INSTALL(DIRECTORY "${AUDIO_INCLUDE_FOLDER}/"
228 SET(NSM_INTROSPECTION_FILE ${EXECUTABLE_OUTPUT_PATH}/LifeCycleConsumer.xml)
230 COMMAND mkdir -p "${CMAKE_SOURCE_DIR}/bin"
231 COMMAND cp "${CMAKE_SOURCE_DIR}/cmake/LifecycleConsumer.xml" ${NSM_INTROSPECTION_FILE}
232 COMMAND cp "${CMAKE_BINARY_DIR}/AudioManager_dbus.conf" ${EXECUTABLE_OUTPUT_PATH})
234 SET(NSM_INTROSPECTION_FILE ${CMAKE_INSTALL_PREFIX}/share/audiomanager/LifecycleConsumer.xml)
236 FILES ${CMAKE_SOURCE_DIR}/cmake/LifecycleConsumer.xml #${CMAKE_BINARY_DIR}/AudioManager_dbus.conf
237 DESTINATION "${NSM_INTROSPECTION_FILE}"
239 ENDIF(USE_BUILD_LIBS)
242 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/cmake/config.cmake ${CMAKE_SOURCE_DIR}/include/config.h )
245 add_subdirectory (test)
248 # General packet dependency
249 IF(WITH_DATABASE_STORAGE)
250 SET(ADD_DEPEND_BIN_PROP "sqlite3(>=3.6.22)")
251 ENDIF(WITH_DATABASE_STORAGE)
253 # Optional packet dependency
255 SET(ADD_DEPEND_BIN_PROP ${ADD_DEPEND_BIN_PROP} "dlt")
258 IF(WITH_DBUS_WRAPPER)
259 SET(ADD_DEPEND_BIN_PROP ${ADD_DEPEND_BIN_PROP} "libdbus-1-3(>=1.2.16)")
260 ENDIF(WITH_DBUS_WRAPPER)
262 # Additional Dev packet dependency
263 SET(ADD_DEPEND_DEV_PROP "audiomanager-bin" ${ADD_DEPEND_BIN_PROP})
265 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -fno-common -fno-strict-aliasing -DNDEBUG")
267 MESSAGE(STATUS "bin packet dependency: ${ADD_DEPEND_BIN_PROP}")
268 MESSAGE(STATUS "dev dependency: ${ADD_DEPEND_DEV_PROP}")
270 set_property(GLOBAL APPEND PROPERTY bin_prop "${ADD_DEPEND_BIN_PROP}")
271 set_property(GLOBAL APPEND PROPERTY dev_prop "${ADD_DEPEND_DEV_PROP}")