* added some documentation, removed sample project since it seems to addle users...
[profile/ivi/genivi/genivi-audio-manager.git] / AudioManagerDaemon / CMakeLists.txt
1 # Copyright (C) 2012, BMW AG
2 #
3 # This file is part of GENIVI Project AudioManager.
4
5 # Contributions are licensed to the GENIVI Alliance under one or more
6 # Contribution License Agreements.
7
8 # copyright
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/.
12
13 # author Christian Mueller, christian.ei.mueller@bmw.de BMW 2011,2012
14 #
15 # For further information see http://www.genivi.org/.
16 #
17
18 cmake_minimum_required(VERSION 2.6)
19
20 PROJECT(AudioManagerDeamon)
21
22 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
23 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
24
25 set(DOC_OUTPUT_PATH ${DOC_OUTPUT_PATH}/AudioManager)
26 set(INCLUDE_FOLDER "include")
27
28 IF (WITH_DATABASE_STORAGE)
29     pkg_check_modules(SQLITE REQUIRED sqlite3)
30 ENDIF (WITH_DATABASE_STORAGE)
31
32 IF (WITH_SYSTEMD_WATCHDOG)
33         pkg_check_modules(SYSTEMD libsystemd-daemon>=44)
34         IF (SYSTEMD_FOUND)
35                 message(STATUS "Found libsystemd-daemon, version: ${SYSTEMD_VERSION}")
36         ELSE (SYSTEMD_FOUND)
37                 message(STATUS "Did not find libsystemd-daemon, using own lib")
38         ENDIF(SYSTEMD_FOUND)
39 ENDIF (WITH_SYSTEMD_WATCHDOG)
40
41 IF(WITH_DBUS_WRAPPER)
42     FIND_PACKAGE(DBUS REQUIRED)
43 ENDIF(WITH_DBUS_WRAPPER)
44
45 FIND_PACKAGE(NSM REQUIRED)
46
47 IF(WITH_CAPI_WRAPPER)
48     FIND_PACKAGE(CommonAPI REQUIRED)
49     FIND_PACKAGE(CommonAPI_DBus REQUIRED) 
50 ENDIF(WITH_CAPI_WRAPPER)
51
52 SET(AUDIOMAN_SRCS_CXX
53     src/main.cpp
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
61     src/CAmRouter.cpp
62     src/CAmSocketHandler.cpp
63     src/CAmDltWrapper.cpp
64     src/CAmLog.cpp
65 )
66
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)        
74
75 IF(WITH_TELNET)
76         SET (AUDIOMAN_SRCS_CXX
77                 ${AUDIOMAN_SRCS_CXX}
78                 src/CAmTelnetServer.cpp
79                 src/CAmTelnetMenuHelper.cpp
80      )          
81 ENDIF(WITH_TELNET)              
82
83 IF(WITH_SYSTEMD_WATCHDOG)
84         SET (AUDIOMAN_SRCS_CXX
85                 ${AUDIOMAN_SRCS_CXX}
86                 src/CAmWatchdog.cpp
87      )          
88 ENDIF(WITH_SYSTEMD_WATCHDOG)
89
90 IF (NOT SYSTEMD_FOUND)
91         SET (AUDIOMAN_SRCS_CXX
92                 ${AUDIOMAN_SRCS_CXX}
93                 src/sd-daemon.c
94         )
95 ENDIF (NOT SYSTEMD_FOUND)
96
97 IF(WITH_DBUS_WRAPPER)
98     SET (AUDIOMAN_SRCS_CXX
99         ${AUDIOMAN_SRCS_CXX}
100         src/CAmDbusWrapper.cpp
101     )
102 ENDIF(WITH_DBUS_WRAPPER)
103
104 IF(WITH_CAPI_WRAPPER)
105     SET (AUDIOMAN_SRCS_CXX
106         ${AUDIOMAN_SRCS_CXX}
107         src/CAmCommonAPIWrapper.cpp
108     )
109 ENDIF(WITH_CAPI_WRAPPER)
110
111 IF(WITH_NSM)
112     IF(WITH_DBUS_WRAPPER)
113         SET (AUDIOMAN_SRCS_CXX
114             ${AUDIOMAN_SRCS_CXX}
115             src/CAmNodeStateCommunicatorDBus.cpp
116         )
117     ELSE(WITH_DBUS_WRAPPER)
118             SET (AUDIOMAN_SRCS_CXX
119             ${AUDIOMAN_SRCS_CXX}
120             src/CAmNodeStateCommunicatorCAPI.cpp
121         )
122     ENDIF(WITH_DBUS_WRAPPER)
123 ENDIF(WITH_NSM)
124
125 IF(WITH_DATABASE_STORAGE)
126     SET (AUDIOMAN_SRCS_CXX
127         ${AUDIOMAN_SRCS_CXX}
128         src/CAmDatabaseHandlerSQLite.cpp
129     )
130 ELSE(WITH_DATABASE_STORAGE)
131     SET (AUDIOMAN_SRCS_CXX
132         ${AUDIOMAN_SRCS_CXX}
133         src/CAmDatabaseHandlerMap.cpp
134     )
135 ENDIF(WITH_DATABASE_STORAGE)
136
137 INCLUDE_DIRECTORIES(    
138         ${CMAKE_SOURCE_DIR} 
139         ${CMAKE_CURRENT_BINARY_DIR}     
140         ${AUDIO_INCLUDE_FOLDER}
141         ${PROJECT_INCLUDE_FOLDER}
142         ${INCLUDE_FOLDER}
143         ${NSM_INCLUDE_DIR}
144 )
145
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}
151 )
152 ENDIF(WITH_CAPI_WRAPPER)
153
154 IF(WITH_DLT)
155 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
156     ${DLT_INCLUDE_DIRS}
157 )
158 ENDIF(WITH_DLT)
159
160 IF(WITH_DBUS_WRAPPER)
161 INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES}
162     ${DBUS_ARCH_INCLUDE_DIR}
163     ${DBUS_INCLUDE_DIR}
164 )
165 ENDIF(WITH_DBUS_WRAPPER)
166
167 file(GLOB ${AUDIOMAN_SRCS_CXX} ${COMMON_API_GEN_SOURCES})
168
169 ADD_EXECUTABLE(AudioManager ${AUDIOMAN_SRCS_CXX} ${COMMON_API_GEN_SOURCES})
170
171 TARGET_LINK_LIBRARIES(AudioManager 
172         ${SQLITE_LIBRARIES}
173         ${CMAKE_DL_LIBS}
174  )
175  
176  IF(WITH_DBUS_WRAPPER)
177     TARGET_LINK_LIBRARIES(AudioManager 
178         ${DBUS_LIBRARY}
179         rt
180     )
181 ELSEIF(WITH_CAPI_WRAPPER)
182     TARGET_LINK_LIBRARIES(AudioManager 
183         ${COMMON_API_LIBRARIES}
184         ${COMMON_API_DBUS_LIBRARIES}
185         rt
186     )
187 ENDIF()
188
189 IF(WITH_DLT)
190     TARGET_LINK_LIBRARIES(AudioManager
191         ${DLT_LIBRARIES} 
192     )
193 ENDIF(WITH_DLT) 
194
195 IF (SYSTEMD_FOUND)
196         TARGET_LINK_LIBRARIES(AudioManager
197         ${SYSTEMD_LIBRARIES} 
198         )
199 ENDIF (SYSTEMD_FOUND)
200
201 IF(WITH_CAPI_WRAPPER)
202     IF(WITH_NSM)
203         INSERT_DBUS_CONF_IF_NEEDED("@NSM_DBUS_CONF@" 
204                                   "${CMAKE_SOURCE_DIR}/AudioManagerDaemon/fidls/NodeStateManager_dbus.conf" 
205                                   NSM_DBUS_CONF)
206     ENDIF(WITH_NSM)
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)
210
211 ENDIF(WITH_CAPI_WRAPPER)
212
213
214 INSTALL(TARGETS AudioManager 
215         RUNTIME 
216         DESTINATION bin
217         PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
218         COMPONENT bin
219 )
220
221 INSTALL(DIRECTORY "${AUDIO_INCLUDE_FOLDER}/" 
222         DESTINATION include
223         COMPONENT dev
224 )
225
226 IF(WITH_NSM)
227     IF(USE_BUILD_LIBS) 
228         SET(NSM_INTROSPECTION_FILE ${EXECUTABLE_OUTPUT_PATH}/LifeCycleConsumer.xml)
229             execute_process(
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})
233     ELSE(USE_BUILD_LIBS) 
234         SET(NSM_INTROSPECTION_FILE ${CMAKE_INSTALL_PREFIX}/share/audiomanager/LifecycleConsumer.xml)
235         INSTALL(
236             FILES ${CMAKE_SOURCE_DIR}/cmake/LifecycleConsumer.xml #${CMAKE_BINARY_DIR}/AudioManager_dbus.conf
237             DESTINATION "${NSM_INTROSPECTION_FILE}"
238             COMPONENT bin)
239     ENDIF(USE_BUILD_LIBS)
240 ENDIF(WITH_NSM)
241
242 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/cmake/config.cmake ${CMAKE_SOURCE_DIR}/include/config.h )
243
244 IF(WITH_TESTS)
245         add_subdirectory (test)
246 ENDIF(WITH_TESTS)
247
248 # General packet dependency
249 IF(WITH_DATABASE_STORAGE)
250     SET(ADD_DEPEND_BIN_PROP "sqlite3(>=3.6.22)")
251 ENDIF(WITH_DATABASE_STORAGE)
252
253 # Optional packet dependency
254 IF(WITH_DLT)
255     SET(ADD_DEPEND_BIN_PROP ${ADD_DEPEND_BIN_PROP} "dlt")
256 ENDIF(WITH_DLT)
257
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)
261
262 # Additional Dev packet dependency
263 SET(ADD_DEPEND_DEV_PROP "audiomanager-bin" ${ADD_DEPEND_BIN_PROP})
264
265 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -fno-common -fno-strict-aliasing -DNDEBUG")
266
267 MESSAGE(STATUS "bin packet dependency: ${ADD_DEPEND_BIN_PROP}")
268 MESSAGE(STATUS "dev dependency: ${ADD_DEPEND_DEV_PROP}")
269
270 set_property(GLOBAL APPEND PROPERTY bin_prop "${ADD_DEPEND_BIN_PROP}")
271 set_property(GLOBAL APPEND PROPERTY dev_prop "${ADD_DEPEND_DEV_PROP}")
272
273
274