summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rwxr-xr-xCMakeLists.txt211
1 files changed, 104 insertions, 107 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9c0a238..b977b76 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,24 +16,19 @@
#
-cmake_minimum_required(VERSION 2.8.8)
-
-project(AudioManagerDeamon)
+cmake_minimum_required(VERSION 3.0)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
+include ( MacroVersionFromGit )
+
+project(AudioManager LANGUAGES CXX VERSION ${DAEMONVERSION})
include ( CMakeDependentOption )
-include ( MacroVersionFromGit )
include ( MacroInterfaceVersions )
include ( CMakePackageConfigHelpers )
include ( GNUInstallDirs )
-
-if (NOT ${CMAKE_TOOLCHAIN_FILE} EQUAL "")
- message(STATUS "Using CMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}'" )
-endif (NOT ${CMAKE_TOOLCHAIN_FILE} EQUAL "")
-
+include ( CTest )
find_package(PkgConfig)
-find_package(CommonAPI)
option( WITH_TESTS
"Build together with all available unitTest" ON )
@@ -53,9 +48,6 @@ option( WITH_TELNET
option ( WITH_SYSTEMD_WATCHDOG
"Build with systemD support & watchdog" OFF)
-option ( USE_BUILD_LIBS
- "Build with default library path = build path" ON)
-
option ( GLIB_DBUS_TYPES_TOLERANT
"Build dbus with tolerance towards glib 16bit/32bit handling" ON)
@@ -66,11 +58,12 @@ option ( WITH_DBUS_WRAPPER
"Build with Dbus wrapper" OFF)
option ( WITH_SHARED_UTILITIES
- "Build audio manager utilities as dynamic library" OFF)
-
-option ( WITH_DATABASE_STORAGE
- "Build with sqlite as in memory storage" OFF)
-
+ "Build audio manager utilities as dynamic library" OFF)
+
+option ( WITH_SHARED_CORE
+ "Build audio manager core as dynamic library" OFF)
+
+
set(DBUS_SERVICE_PREFIX "org.genivi.audiomanager"
CACHE PROPERTY "The dbus service prefix for the AM - only changable for legacy dbus")
@@ -86,32 +79,32 @@ set(MAX_TELNETCONNECTIONS 3
set(DYNAMIC_ID_BOUNDARY 100
CACHE INTEGER "The ID boundary between static and dynamic ID ranges")
-set(PLUGINS_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin/plugins
- CACHE STRINGS "The output path of the plugins")
-
set(LIB_INSTALL_SUFFIX "audiomanager"
CACHE STRINGS "The suffix used for installation of the plugins")
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin
- CACHE STRINGS "The binary will be placed here")
-
-set(TEST_EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/tests
- CACHE STRINGS "The test binaries will be placed here")
-
-set(TEST_EXECUTABLE_INSTALL_PATH "~/tests"
+set(TEST_EXECUTABLE_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/bin
CACHE STRINGS "The test binaries will be installed here")
-set(DOC_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/doc
+set(DOC_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/doc/AudioManager
CACHE STRINGS "The doxygen documentation will be placed here")
set(AM_SHARE_FOLDER ${CMAKE_INSTALL_PREFIX}/share/audiomanager
CACHE STRINGS "The share folder for the AM. Some DBus xmls will be placed here and so on")
+set(AM_MAP_CAPACITY 10
+ CACHE INTEGER "Number of preallocations for datastorage")
+
+set(AM_MAX_CONNECTIONS 0x1000
+ CACHE INTEGER "Number of max connections before rollover")
+
+set(AM_MAX_MAIN_CONNECTIONS 0x1000
+ CACHE INTEGER "Number of max Mainconnections before rollover")
+
set(AUDIOMANAGER_INCLUDE_FOLDER ${CMAKE_BINARY_DIR}/include)
set(AUDIO_INCLUDE_FOLDER ${CMAKE_SOURCE_DIR}/include)
set(AUDIOMANAGER_UTILITIES ${CMAKE_SOURCE_DIR}/AudioManagerUtilities)
-set(AUDIOMANAGER_UTILITIES_INCLUDE ${AUDIOMANAGER_UTILITIES}/include)
-set(AUDIOMANAGER_UTILITIES_SRC ${AUDIOMANAGER_UTILITIES}/src)
+set(AUDIOMANAGER_CORE ${CMAKE_SOURCE_DIR}/AudioManagerCore)
+set(AUDIOMANAGER_CORE_INCLUDE ${AUDIOMANAGER_CORE}/include)
set(DOXY_PROTOTYPE ${CMAKE_SOURCE_DIR}/cmake/DoxyFile.in)
set(DOXY_FILE ${CMAKE_CURRENT_BINARY_DIR}/DoxyFile)
set(AUDIOMANAGER_DAEMON_FOLDER ${CMAKE_SOURCE_DIR}/AudioManagerDaemon)
@@ -121,80 +114,65 @@ set(TCLAP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/tclap-1.2.1/include)
GET_COMMAND_INTERFACE_VERSION(${AUDIO_INCLUDE_FOLDER})
GET_ROUTING_INTERFACE_VERSION(${AUDIO_INCLUDE_FOLDER})
GET_CONTROL_INTERFACE_VERSION(${AUDIO_INCLUDE_FOLDER})
-message( STATUS "CommandInterface version: ${LIB_COMMAND_INTERFACE_VERSION}")
-message( STATUS "ControlInterface version: ${LIB_CONTROL_INTERFACE_VERSION}")
-message( STATUS "RoutingInterface version: ${LIB_ROUTING_INTERFACE_VERSION}")
-
-if(USE_BUILD_LIBS)
- if(NOT DEFINED DEFAULT_PLUGIN_COMMAND_DIR)
- set(DEFAULT_PLUGIN_COMMAND_DIR "${PLUGINS_OUTPUT_PATH}/command")
- endif(NOT DEFINED DEFAULT_PLUGIN_COMMAND_DIR)
- if(NOT DEFINED DEFAULT_PLUGIN_ROUTING_DIR)
- set(DEFAULT_PLUGIN_ROUTING_DIR "${PLUGINS_OUTPUT_PATH}/routing")
- endif(NOT DEFINED DEFAULT_PLUGIN_ROUTING_DIR)
- if(NOT DEFINED CONTROLLER_PLUGIN)
- set(CONTROLLER_PLUGIN "${PLUGINS_OUTPUT_PATH}/control/libPluginControlInterface.so")
- endif(NOT DEFINED CONTROLLER_PLUGIN)
-else(USE_BUILD_LIBS)
- if(NOT DEFINED DEFAULT_PLUGIN_COMMAND_DIR)
- set(DEFAULT_PLUGIN_COMMAND_DIR "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/command")
- endif(NOT DEFINED DEFAULT_PLUGIN_COMMAND_DIR)
- if(NOT DEFINED DEFAULT_PLUGIN_ROUTING_DIR)
- set(DEFAULT_PLUGIN_ROUTING_DIR "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/routing")
- endif(NOT DEFINED DEFAULT_PLUGIN_ROUTING_DIR)
- if(NOT DEFINED CONTROLLER_PLUGIN)
- set(CONTROLLER_PLUGIN "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/control/libPluginControlInterface.so")
- endif(NOT DEFINED CONTROLLER_PLUGIN)
-endif(USE_BUILD_LIBS)
-
-
-if(USE_BUILD_LIBS)
- execute_process(COMMAND mkdir -p "${CMAKE_CURRENT_BINARY_DIR}/bin")
-endif(USE_BUILD_LIBS)
-
-if(WITH_DLT)
- pkg_check_modules(DLT REQUIRED automotive-dlt>=2.2.0)
- add_definitions(${DLT_CFLAGS_OTHER})
- include_directories(${DLT_INCLUDE_DIRS})
- link_directories(${DLT_LIBRARY_DIRS})
-endif(WITH_DLT)
-if(WITH_TESTS)
- add_subdirectory(googleMock)
- set(GMOCK_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/googleMock/include")
- set(GOOGLE_TEST_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/googleMock/gtest/include")
-endif(WITH_TESTS)
+if(NOT DEFINED DEFAULT_PLUGIN_COMMAND_DIR)
+ set(DEFAULT_PLUGIN_COMMAND_DIR "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/command")
+endif(NOT DEFINED DEFAULT_PLUGIN_COMMAND_DIR)
+if(NOT DEFINED DEFAULT_PLUGIN_ROUTING_DIR)
+ set(DEFAULT_PLUGIN_ROUTING_DIR "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/routing")
+endif(NOT DEFINED DEFAULT_PLUGIN_ROUTING_DIR)
+if(NOT DEFINED CONTROLLER_PLUGIN_DIR)
+ set(CONTROLLER_PLUGIN_DIR "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/control")
+endif(NOT DEFINED CONTROLLER_PLUGIN_DIR)
##global build flags set(CPACK_RPM_COMPONENT_INSTALL ON)
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pedantic -rdynamic -Wno-variadic-macros")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -pedantic -rdynamic -Wno-variadic-macros")
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g -DDEBUG")
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O2 -DNDEBUG")
+if(WITH_TESTS)
+ #check if we can find the google stuff
+ pkg_check_modules (GTEST "gtest >= 1.6.0")
+ pkg_check_modules (GMOCK "gmock >= 1.6.0")
+ if (NOT(${GTEST_FOUND} AND ${GMOCK_FOUND}))
+ message (STATUS "Building and installing with shipped sources")
+ add_subdirectory(googleMock)
+ set(GMOCK_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/googleMock/include")
+ set(GTEST_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/googleMock/gtest/include")
+ set(GTEST_LIBRARIES gtest gtest_main)
+ set(GMOCK_LIBRARIES gmock gmock_main)
+ configure_file( ${CMAKE_SOURCE_DIR}/cmake/gtest.pc.in ${CMAKE_BINARY_DIR}/gtest.pc @ONLY )
+ configure_file( ${CMAKE_SOURCE_DIR}/cmake/gmock.pc.in ${CMAKE_BINARY_DIR}/gmock.pc @ONLY )
+ install(FILES ${CMAKE_BINARY_DIR}/gmock.pc ${CMAKE_BINARY_DIR}/gtest.pc DESTINATION lib/pkgconfig COMPONENT devel)
+ endif (NOT(${GTEST_FOUND} AND ${GMOCK_FOUND}))
+endif(WITH_TESTS)
+
configure_package_config_file (
- ${CMAKE_SOURCE_DIR}/cmake/audiomanagerConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/audiomanagerConfig.cmake
+ ${CMAKE_SOURCE_DIR}/cmake/AudioManagerConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/AudioManagerConfig.cmake
INSTALL_DESTINATION lib/${LIB_INSTALL_SUFFIX}/cmake
PATH_VARS AUDIO_INCLUDE_FOLDER )
write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/AudioManagerVersion.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/AudioManagerConfigVersion.cmake
VERSION ${DAEMONVERSION}
COMPATIBILITY SameMajorVersion )
-
-add_subdirectory (AudioManagerDaemon)
-add_subdirectory (AudioManagerUtilities)
-if(EXISTS "${CMAKE_SOURCE_DIR}/Plugins/")
- add_subdirectory (${CMAKE_SOURCE_DIR}/Plugins)
-endif(EXISTS "${CMAKE_SOURCE_DIR}/Plugins/")
-
-configure_file( ${CMAKE_SOURCE_DIR}/AudioManagerDaemon/docx/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/DoxyFile )
+configure_file( ${CMAKE_SOURCE_DIR}/docx/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/DoxyFile )
configure_file( ${CMAKE_SOURCE_DIR}/cmake/config.cmake.in ${CMAKE_BINARY_DIR}/include/audiomanagerconfig.h )
configure_file( ${CMAKE_SOURCE_DIR}/cmake/audiomanager.pc.in ${CMAKE_BINARY_DIR}/audiomanager.pc @ONLY )
+
+add_subdirectory (AudioManagerUtilities)
+add_subdirectory (AudioManagerCore)
+add_subdirectory (AudioManagerDaemon)
-install(FILES ${CMAKE_BINARY_DIR}/audiomanager.pc DESTINATION lib/pkgconfig COMPONENT devel)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/audiomanagerConfig.cmake
- DESTINATION lib/${LIB_INSTALL_SUFFIX}/cmake
- COMPONENT dev)
+
+install(
+ FILES ${CMAKE_BINARY_DIR}/AudioManagerConfig.cmake
+ ${CMAKE_BINARY_DIR}/AudioManagerConfigVersion.cmake
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cmake/AudioManager-${DAEMONVERSION}
+)
+
+install(FILES ${CMAKE_BINARY_DIR}/audiomanager.pc DESTINATION lib/pkgconfig COMPONENT devel)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/audiomanagerconfig.h
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${LIB_INSTALL_SUFFIX}
COMPONENT dev)
@@ -211,29 +189,48 @@ if(WITH_DOCUMENTATION)
COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH}
SOURCES ${CMAKE_SOURCE_DIR} ${DOC_OUTPUT_PATH}/Doxyfile
)
+ find_program(ASCIIDOC asciidoc asciidoc.py)
+
+ if (ASCIIDOC_FOUND)
+ execute_process(COMMAND ${ASCIIDOC} -o ${DOC_OUTPUT_PATH}/html/README.html ${CMAKE_SOURCE_DIR}/README )
+ endif(ASCIIDOC_FOUND)
+
install (DIRECTORY ${DOC_OUTPUT_PATH}/
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
PATTERN "Doxyfile" EXCLUDE
PATTERN "def" EXCLUDE)
endif(WITH_DOCUMENTATION)
-SET(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
-
-add_custom_target(bin-install
- COMMAND
- "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=bin
- -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
-)
-
-add_custom_target(dev-install
- COMMAND
- "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=dev
- -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
-)
-
-add_custom_target(test-install
- COMMAND
- "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=tests
- -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
-)
+message(STATUS)
+message(STATUS "${PROJECT_NAME} Configuration:")
+message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
+message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
+message(STATUS "BUILD_DOCUMENTATION = ${WITH_DOCUMENTATION}")
+message(STATUS "WITH_TESTS = ${WITH_TESTS}")
+message(STATUS "WITH_DLT = ${WITH_DLT}")
+message(STATUS "WITH_TESTS = ${WITH_TESTS}")
+message(STATUS "WITH_TELNET = ${WITH_TELNET}")
+message(STATUS "WITH_SYSTEMD_WATCHDOG = ${WITH_SYSTEMD_WATCHDOG}")
+message(STATUS "WITH_CAPI_WRAPPER = ${WITH_CAPI_WRAPPER}")
+message(STATUS "WITH_DBUS_WRAPPER = ${WITH_DBUS_WRAPPER}")
+message(STATUS "WITH_SHARED_UTILITIES = ${WITH_SHARED_UTILITIES}")
+message(STATUS "WITH_SHARED_CORE = ${WITH_SHARED_CORE}")
+message(STATUS "DYNAMIC_ID_BOUNDARY = ${DYNAMIC_ID_BOUNDARY}")
+message(STATUS "LIB_INSTALL_SUFFIX = ${LIB_INSTALL_SUFFIX}")
+message(STATUS "TEST_EXECUTABLE_INSTALL_PATH = ${TEST_EXECUTABLE_INSTALL_PATH}")
+message(STATUS "DEFAULT_PLUGIN_COMMAND_DIR = ${DEFAULT_PLUGIN_COMMAND_DIR}")
+message(STATUS "DEFAULT_PLUGIN_ROUTING_DIR = ${DEFAULT_PLUGIN_ROUTING_DIR}")
+message(STATUS "CONTROLLER_PLUGIN_DIR = ${CONTROLLER_PLUGIN_DIR}")
+message(STATUS "AM_SHARE_FOLDER = ${AM_SHARE_FOLDER}")
+message(STATUS "AM_MAP_CAPACITY = ${AM_MAP_CAPACITY}")
+message(STATUS "AM_MAX_CONNECTIONS = ${AM_MAX_CONNECTIONS}")
+message(STATUS "AM_MAX_MAIN_CONNECTIONS = ${AM_MAX_MAIN_CONNECTIONS}")
+message(STATUS "BUILD_TESTING = ${BUILD_TESTING}")
+message(STATUS "CMAKE_INSTALL_DOCDIR = ${CMAKE_INSTALL_DOCDIR}")
+message(STATUS "CommandInterface version: ${LIB_COMMAND_INTERFACE_VERSION}")
+message(STATUS "ControlInterface version: ${LIB_CONTROL_INTERFACE_VERSION}")
+message(STATUS "RoutingInterface version: ${LIB_ROUTING_INTERFACE_VERSION}")
+message(STATUS)
+message(STATUS)
+message(STATUS)