diff options
Diffstat (limited to 'CMakeLists.txt')
-rwxr-xr-x | CMakeLists.txt | 211 |
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) |