TcpIpcModule: fixed several C90 compiler warnings
[profile/ivi/layer-management.git] / CMakeLists.txt
index 558d66c..9e3e81e 100644 (file)
@@ -1,6 +1,7 @@
 ############################################################################
 # 
-# Copyright 2010, 2011 BMW Car IT GmbH  
+# Copyright 2010-2012 BMW Car IT GmbH  
+# Copyright (C) 2011 DENSO CORPORATION and Robert Bosch Car Multimedia Gmbh
 # 
 # 
 # Licensed under the Apache License, Version 2.0 (the "License"); 
 cmake_minimum_required (VERSION 2.6)
 project (LayerManager)
 
+#===========================================================================================================
+# cmake configuration
+#===========================================================================================================
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/")
+include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/DefaultSettings.txt)
+include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/CMakeVersions.txt)
+include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/CustomMacros.txt)
+add_subdirectory(cmake/optionalFeatures)
 
-SET( ${PROJECT_NAME}_MAJOR_VERSION 0 )
-SET( ${PROJECT_NAME}_MINOR_VERSION 8 )
-SET( ${PROJECT_NAME}_PATCH_LEVEL 1 )
-set(VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_LEVEL})
+#===========================================================================================================
+build_flag (WITH_FORCE_COPY "Force Software Copy of Pixmaps (compatibility for VMs)" OFF)
+#===========================================================================================================
+# no dedicated actions required here
 
-set(LICENSE "APACHE 2.0")
+#===========================================================================================================
+build_flag (WITH_DLT "Build with DLT logging support" OFF)
+#===========================================================================================================
+# no dedicated actions required here
 
-set(GENIVI_PROJECT_VERSION ${VERSION})
+#===========================================================================================================
+build_flag (WITH_STATIC_LIBRARIES "Link all plugins and libraries statically" OFF)
+#===========================================================================================================
+# no dedicated actions required here
 
+#===========================================================================================================
+build_flag (WITH_STYLE_CHECKING "Report styleguide problems during build (requires python)" OFF)
+#===========================================================================================================
+if (WITH_STYLE_CHECKING)
+    set(CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}; ${CMAKE_SOURCE_DIR}/scripts/check_all_styles.py <SOURCE>")
+    set(CMAKE_CXX_COMPILE_OBJECT "${CMAKE_CXX_COMPILE_OBJECT}; ${CMAKE_SOURCE_DIR}/scripts/check_all_styles.py <SOURCE>")
+endif (WITH_STYLE_CHECKING)
+add_custom_target(check-style COMMAND ${CMAKE_SOURCE_DIR}/scripts/check_style.sh)
 
-##################### RPM CONFIG ########################
-set(GENIVI_RPM_RELEASE "1${SVN_REVISION}")
-set(SPEC_DIR ".")
-#########################################################
+#===========================================================================================================
+build_flag (WITH_DOCUMENTATION "Generate documentation during build (requires doxygen)" OFF)
+#===========================================================================================================
+if (WITH_DOCUMENTATION)
+    add_custom_target(doc ALL
+                      COMMAND ${CMAKE_SOURCE_DIR}/generate_specification.sh
+                      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+else (WITH_DOCUMENTATION)
+    add_custom_target(doc
+                      COMMAND ${CMAKE_SOURCE_DIR}/generate_specification.sh
+                      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+endif (WITH_DOCUMENTATION)
 
+#===========================================================================================================
+build_flag (WITH_CPPCHECK "Run cppcheck during build (requires cppcheck)" OFF)
+# add build target 'cppcheck' to run pre-defined configuration of cppcheck
+#===========================================================================================================
+if (WITH_CPPCHECK)
+    set(CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}; cppcheck <SOURCE> ${CPPCHECK_CONFIG_STRING}")
+    set(CMAKE_CXX_COMPILE_OBJECT "${CMAKE_CXX_COMPILE_OBJECT}; cppcheck <SOURCE> ${CPPCHECK_CONFIG_STRING}")
+endif (WITH_CPPCHECK)
+add_custom_target(cppcheck COMMAND cppcheck ${CMAKE_SOURCE_DIR}/LayerManager*/ ${CPPCHECK_CONFIG})
 
-# Platforms / A set of indiviual options at once
-# Choose only ONE of these!!
+#===========================================================================================================
+build_flag (WITH_TESTS "Build unit test binaries for all enabled components" OFF)
+#===========================================================================================================
+if (WITH_TESTS)
+    # enable ctest if building with tests, run 'make test' after build to run all tests
+    # be aware that some tests require a running layermanager
+    enable_testing()
+    add_subdirectory_once (3rdParty/gtest)
+    add_subdirectory_once (3rdParty/gmock)
+endif(WITH_TESTS)
 
-option (WITH_X11_GLES 
-        "Build for X11 with GLES 2.0" ON)   
-               
-option (WITH_DESKTOP 
-        "Build for Desktop / GLX" OFF)
+#===========================================================================================================
+build_flag (WITH_EGL_EXAMPLE "Build examples for GLES/X11 based platforms" ON)
+#===========================================================================================================
+if (WITH_EGL_EXAMPLE)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerClient/ilmClient)
+    add_subdirectory_once (LayerManagerClient/ilmControl)
+    add_subdirectory_once (LayerManagerExamples/EGLX11ApplicationExample)
+    add_subdirectory_once (LayerManagerExamples/EGLX11MockNavigation)
+endif(WITH_EGL_EXAMPLE)
+
+#===========================================================================================================
+build_flag (WITH_GLX_EXAMPLE "Build examples for OpenGL/X11 based platforms" OFF)
+#===========================================================================================================
+if (WITH_GLX_EXAMPLE)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerClient/ilmClient)
+    add_subdirectory_once (LayerManagerExamples/GLXApplicationExample)
+endif(WITH_GLX_EXAMPLE)
 
-option (WITH_EGL_EXAMPLE 
-        "Build EGL_EXAMPLE " ON)
+#===========================================================================================================
+build_flag (WITH_CLIENTEXAMPLES "Build examples for client library usage" ON)
+#===========================================================================================================
+if (WITH_CLIENTEXAMPLES)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerClient/ilmClient)
+    add_subdirectory_once (LayerManagerExamples/LayerManagerClientExample)
+endif(WITH_CLIENTEXAMPLES)
 
-option (WITH_GLX_EXAMPLE 
-        "Build GLX_EXAMPLE " OFF)
-        
-option (WITH_TESTS
-        "Build Available Tests " OFF)
-        
-option (WITH_XTHREADS
-        "Build with usage of X11 Threading" ON)
+#===========================================================================================================
+build_flag (WITH_WL_EXAMPLE "Build examples for GLES/Wayland based platforms" OFF)
+#===========================================================================================================
+if (WITH_WL_EXAMPLE)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerClient/ilmClient)
+    add_subdirectory_once (LayerManagerExamples/EGLWLApplicationExample)
+    add_subdirectory_once (LayerManagerExamples/EGLWLMockNavigation)
+    add_subdirectory_once (LayerManagerExamples/WLChromakeyExample)
+    add_subdirectory_once (LayerManagerExamples/EGLWLInputEventExample)
+endif(WITH_WL_EXAMPLE)
 
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
+#===========================================================================================================
+build_flag (WITH_CONTROL_BIN "Build LayerManagerControl binary" ON)
+#===========================================================================================================
+if (WITH_CONTROL_BIN)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerClient/ilmClient)
+    add_subdirectory_once (LayerManagerClient/ilmControl)
+    add_subdirectory_once (LayerManagerControl)
+endif(WITH_CONTROL_BIN)
 
-option (WITH_FORCE_COPY 
-        "Force Software Copy of Pixmaps" OFF)
-        
-if (WITH_XTHREADS)
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_XTHREADS" CACHE STRING "" FORCE)
-endif(WITH_XTHREADS)
-        
-if (WITH_FORCE_COPY)
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGLX_GRAPHICSYSTEM_FORCE_COPY -DGLES_FORCE_COPY" CACHE STRING "" FORCE)
-endif(WITH_FORCE_COPY)
+#===========================================================================================================
+build_flag (WITH_EXAMPLE_SCENE_PROVIDER "Build scene provider plugin to run example applications" OFF)
+#===========================================================================================================
+if (WITH_EXAMPLE_SCENE_PROVIDER)
+    add_subdirectory_once (LayerManagerCommands)
+    add_subdirectory_once (LayerManagerBase)
+    add_subdirectory_once (LayerManagerPlugins/SceneProvider/ExampleSceneProvider)
+endif(WITH_EXAMPLE_SCENE_PROVIDER)
 
-add_subdirectory (LayerManagerPlugins/Communicators/DBUSCommunicator)
-add_subdirectory (LayerManagerClient/ilmClient)
-add_subdirectory (LayerManagerUtils)
-add_subdirectory (LayerManagerCommands)
-add_subdirectory (LayerManagerService)
-add_subdirectory (LayerManagerExamples/LayerManagerClientExample)
+#===========================================================================================================
+build_flag (WITH_SYSTEMD_HEALTH_MONITOR "Build plugin for systemd based health monitoring" OFF)
+#===========================================================================================================
+if (WITH_SYSTEMD_HEALTH_MONITOR)
+    add_subdirectory_once (3rdParty/systemd)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerBase)
+    add_subdirectory_once (LayerManagerPlugins/HealthMonitor/SystemdHealthMonitor)
+endif(WITH_SYSTEMD_HEALTH_MONITOR)
 
-    
+#===========================================================================================================
+build_flag (WITH_GENERIC_COMMUNICATOR "Build Generic Communicator Plugin based on IpcModules" ON)
+#===========================================================================================================
+if (WITH_GENERIC_COMMUNICATOR)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerBase)
+    add_subdirectory_once (LayerManagerPlugins/IpcModules)
+    add_subdirectory_once (LayerManagerCommands)
+    add_subdirectory_once (LayerManagerPlugins/Communicators/GenericCommunicator)
+endif(WITH_GENERIC_COMMUNICATOR)
+
+#===========================================================================================================
+build_flag (WITH_DESKTOP "Build renderer plugin for OpenGL/X11 based platforms" OFF)
+#===========================================================================================================
 if (WITH_DESKTOP)
-    add_subdirectory (LayerManagerPlugins/Renderers/Platform/GLXRenderer)
-endif(WITH_DESKTOP)     
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLX)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/GLXRenderer)
+endif(WITH_DESKTOP)
+
+#===========================================================================================================
+build_flag (WITH_GLX_LIB "Build development library for OpenGL/X11 based renderers" OFF)
+#===========================================================================================================
+if (WITH_GLX_LIB)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLX)
+endif(WITH_GLX_LIB)
+
+#===========================================================================================================
+build_flag (WITH_WAYLAND_X11 "Build renderer plugin for GLES/Wayland with X11 backend" OFF)
+#===========================================================================================================
+if (WITH_WAYLAND_X11)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerBase)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandX11GLESv2)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/WaylandX11GLESRenderer)
+endif(WITH_WAYLAND_X11)
+
+#===========================================================================================================
+build_flag (WITH_WAYLAND_X11_LIB "Build development library for GLES/Wayland X11 based renderers" OFF)
+#===========================================================================================================
+if (WITH_WAYLAND_X11_LIB)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandX11GLESv2)
+endif(WITH_WAYLAND_X11_LIB)
+
+#===========================================================================================================
+build_flag (WITH_WAYLAND_DRM "Build renderer plugin for GLES/Wayland with DRM backend" OFF)
+#===========================================================================================================
+if (WITH_WAYLAND_DRM)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerBase)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandDrmGLESv2)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/WaylandDrmGLESRenderer)
+endif(WITH_WAYLAND_DRM)
 
+#===========================================================================================================
+build_flag (WITH_WAYLAND_DRM_LIB "Build development library for GLES/Wayland DRM based renderers" OFF)
+#===========================================================================================================
+if (WITH_WAYLAND_DRM_LIB)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandDrmGLESv2)
+endif(WITH_WAYLAND_DRM_LIB)
+
+#===========================================================================================================
+build_flag (WITH_WAYLAND_FBDEV "Build renderer plugin for GLES/Wayland with FBDEV backend" OFF)
+#===========================================================================================================
+if (WITH_WAYLAND_FBDEV)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerBase)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandFbdevGLESv2)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/WaylandFbdevGLESRenderer)
+endif(WITH_WAYLAND_FBDEV)
+
+#===========================================================================================================
+build_flag (WITH_WAYLAND_FBDEV_LIB "Build development library for GLES/Wayland FBDEV based renderers" OFF)
+#===========================================================================================================
+if (WITH_WAYLAND_FBDEV_LIB)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandFbdevGLESv2)
+endif(WITH_WAYLAND_FBDEV_LIB)
+
+#===========================================================================================================
+build_flag (WITH_X11_GLES "Build renderer plugin for GLES/X11 based platforms" ON)
+#===========================================================================================================
 if (WITH_X11_GLES)
-    add_subdirectory (LayerManagerPlugins/Renderers/Platform/X11GLESRenderer)
-endif(WITH_X11_GLES)   
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLESv2)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/X11GLESRenderer)
+endif(WITH_X11_GLES)
 
-if (WITH_EGL_EXAMPLE)
-    add_subdirectory (LayerManagerExamples/EGLX11ApplicationExample)
-endif(WITH_EGL_EXAMPLE)
+#===========================================================================================================
+build_flag (WITH_GLESv2_LIB "Build development library for GLES/X11 based renderers" OFF)
+#===========================================================================================================
+if (WITH_GLESv2_LIB)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLESv2)
+endif(WITH_GLESv2_LIB)
 
-if (WITH_GLX_EXAMPLE)
-    add_subdirectory (LayerManagerExamples/GLXApplicationExample)
-endif(WITH_GLX_EXAMPLE)
+#===========================================================================================================
+build_flag (WITH_TEXT_RENDERER "Build renderer plugin with pure logging (no rendering)" OFF)
+#===========================================================================================================
+if (WITH_TEXT_RENDERER)
+    add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/TextRenderer)
+endif(WITH_TEXT_RENDERER)
+
+#===========================================================================================================
+build_flag (WITH_SERVICE_BIN "Build LayerManagerService binary" ON)
+#===========================================================================================================
+if (WITH_SERVICE_BIN)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerBase)
+    add_subdirectory_once (LayerManagerService)
+endif (WITH_SERVICE_BIN)
+
+#===========================================================================================================
+build_flag (WITH_CLIENT_LIB "Build LayerManagement client library" ON)
+#===========================================================================================================
+if (WITH_CLIENT_LIB)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerPlugins/IpcModules)
+    add_subdirectory_once (LayerManagerClient/ilmCommon)
+    add_subdirectory_once (LayerManagerClient/ilmClient)
+endif (WITH_CLIENT_LIB)
+
+#===========================================================================================================
+build_flag (WITH_CONTROL_LIB "Build LayerManagement control library" ON)
+#===========================================================================================================
+if (WITH_CONTROL_LIB)
+    add_subdirectory_once (LayerManagerUtils)
+    add_subdirectory_once (LayerManagerPlugins/IpcModules)
+    add_subdirectory_once (LayerManagerClient/ilmCommon)
+    add_subdirectory_once (LayerManagerClient/ilmControl)
+endif (WITH_CONTROL_LIB)
 
+#===========================================================================================================
+# store used build configuration
+#===========================================================================================================
+add_subdirectory_once(config)