8c0fcf4de450a59ed73ed0935f26fde27ee05bd0
[profile/ivi/genivi/genivi-audio-manager.git] / CMakeLists.txt
1  #
2  #  Copyright (C) 2011, BMW AG 
3  # 
4  # AudioManagerDeamon
5  #
6  # @file CMakeLists.txt
7  #
8  # @date: 20.05.2011
9  # @author: Christian Müller (christian.ei.mueller@bmw.de)
10  #
11
12 cmake_minimum_required(VERSION 2.6)
13
14 execute_process(COMMAND git describe --tags WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
15                 OUTPUT_VARIABLE DAEMONVERSION 
16                 OUTPUT_STRIP_TRAILING_WHITESPACE)
17
18 message(STATUS "Build Version ${DAEMONVERSION}")
19
20 execute_process(COMMAND git log --pretty=short WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
21                 OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG)
22
23 PROJECT(AudioManagerDeamon)
24
25 OPTION( WITH_DBUS_WRAPPER 
26         "Enable Dbus Wrapper Support" ON )
27
28 OPTION( WITH_SOCKETHANDLER_LOOP 
29         "Enable SocketHandler Support (cannot work with SimpleDBusLoop)" ON )
30
31 OPTION( WITH_SIMPLEDBUS_LOOP 
32         "Enable SimpleDBusLoop (requires DBus_Wrapper,cannot work with SocketHandler)" OFF )
33
34 OPTION( WITH_TESTS
35         "Build together with all available unitTest" ON )
36
37 OPTION( WITH_DOCUMENTATION
38         "Build together with Doxygen Documentation" OFF )
39
40 OPTION( WITH_PLUGIN_COMMAND
41         "Build command pluings" ON)
42
43 OPTION( WITH_PLUGIN_CONTROL
44         "Build control pluing" ON)
45
46 OPTION( WITH_PLUGIN_ROUTING
47         "Build routing pluings" ON)
48
49 OPTION( WITH_MAIN
50         "Build with daemon" ON)
51
52 OPTION( WITH_PPOLL
53         "libc supports ppoll" ON)
54
55 OPTION( WITH_TELNET
56         "build with Telnetserver" OFF)
57
58 #Can be changed via passing -DDBUS_SERVICE_PREFIX="XXX" to cmake
59 IF(NOT DEFINED DBUS_SERVICE_PREFIX)
60         SET( DBUS_SERVICE_PREFIX "org.genivi.audiomanager\0" )
61 ENDIF(NOT DEFINED DBUS_SERVICE_PREFIX)
62
63 #Can be changed via passing -DDBUS_SERVICE_OBJECT_PATH="XXX" to cmake
64 IF(NOT DEFINED DBUS_SERVICE_OBJECT_PATH)
65         SET( DBUS_SERVICE_OBJECT_PATH "/org/genivi/audiomanager\0" )
66 ENDIF(NOT DEFINED DBUS_SERVICE_OBJECT_PATH)
67
68 #Can be changed via passing -DDEFAULT_TELNETPORT="XXX" to cmake
69 IF(NOT DEFINED DEFAULT_TELNETPORT)
70         SET( DEFAULT_TELNETPORT 6060 )
71 ENDIF(NOT DEFINED DEFAULT_TELNETPORT)
72
73 #Can be changed via passing -DMAX_TELNETCONNECTIONS="XXX" to cmake
74 IF(NOT DEFINED MAX_TELNETCONNECTIONS)
75         SET( MAX_TELNETCONNECTIONS 3 )
76 ENDIF(NOT DEFINED MAX_TELNETCONNECTIONS)
77
78 SET(DLT_CONTEXT AudioManager)
79 SET(PLUGINS_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin/plugins)
80
81 SET(DEFAULT_PLUGIN_COMMAND_DIR "${PLUGINS_OUTPUT_PATH}/command")
82 SET(DEFAULT_PLUGIN_ROUTING_DIR "${PLUGINS_OUTPUT_PATH}/routing")
83 SET(CONTROLLER_PLUGIN "${PLUGINS_OUTPUT_PATH}/control/libPluginControlInterface.so")
84
85 SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
86 SET(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/includes)
87 SET(DOC_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/doc)
88 SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
89 SET(TEST_EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin/test)
90 SET(DOXY_FILE ${CMAKE_SOURCE_DIR}/cmake/DoxyFile.in)
91 SET(INTROSPECTION_COMMAND_XML_FILE "${AUDIO_INCLUDES_FOLDER}/dbus/CommandInterface.xml")
92
93 CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/cmake/config.cmake ${CMAKE_SOURCE_DIR}/includes/config.h )
94
95 FIND_PACKAGE(PkgConfig)
96 pkg_check_modules(DLT REQUIRED automotive-dlt)
97
98 IF(WITH_DOCUMENTATION)
99         find_package(Doxygen)
100         file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}/Interfaces)
101         configure_file(${DOXY_FILE}  ${DOC_OUTPUT_PATH}/Interfaces/Doxyfile  @ONLY IMMEDIATE)
102         add_custom_target (Interfaces ALL 
103                 COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Interfaces/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH}/Interfaces
104                 SOURCES ${AUDIO_INCLUDES_FOLDER} ${DOC_OUTPUT_PATH}/Interfaces/Doxyfile
105         )
106 ENDIF(WITH_DOCUMENTATION)
107
108 ##global build flags
109 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wextra -std=c++98 -D_GNU_SOURCE")
110
111 if(WITH_PLUGIN_COMMAND)
112         add_subdirectory (PluginCommandInterfaceDbus)
113 endif(WITH_PLUGIN_COMMAND)
114
115 if(WITH_PLUGIN_ROUTING)
116         add_subdirectory (PluginRoutingInterfaceDbus)
117         add_subdirectory (PluginRoutingInterfaceAsync)
118 endif(WITH_PLUGIN_ROUTING)
119
120 if(WITH_PLUGIN_CONTROL)
121         add_subdirectory (PluginControlInterface)
122 endif(WITH_PLUGIN_CONTROL)
123
124 if(WITH_MAIN)
125         add_subdirectory (AudioManagerDaemon)
126 endif(WITH_MAIN)
127
128
129
130