############################################################################ # # 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"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under 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_MODULE_PATH}/CMakeVersions.txt) include(${CMAKE_MODULE_PATH}/CustomMacros.txt) #============================================================================== # set default build type, if not defined by user #============================================================================== if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose build type: Debug, Release, RelWithDebInfo, MinSizeRel." FORCE) message(STATUS "Build type not defined. Using default build type 'Release'.") endif (NOT CMAKE_BUILD_TYPE) #============================================================================== # Platforms / A set of indiviual options at once #============================================================================== option (WITH_X11_GLES "Build for X11 with GLES 2.0" ON ) option (WITH_GLESv2_LIB "Build development library for GLES2 Based Renderers" OFF) option (WITH_EGL_EXAMPLE "Build EGL_EXAMPLE / X11" ON ) option (WITH_WL_EXAMPLE "Build EGL_EXAMPLE / Wayland" OFF) option (WITH_DESKTOP "Build for Desktop / GLX" OFF) option (WITH_GLX_LIB "Build development library for GLX Based Renderers" OFF) option (WITH_GLX_EXAMPLE "Build GLX_EXAMPLE " OFF) option (WITH_FORCE_COPY "Force Software Copy of Pixmaps" OFF) option (WITH_CLIENTEXAMPLES "Build client examples " ON ) option (WITH_TESTS "Build Available Tests " OFF) option (WITH_DLT "Build with DLT support " OFF) option (WITH_WAYLAND_FBDEV "Build Wayland with FBDEV backend" OFF) option (WITH_WAYLAND_FBDEV_LIB "Build development library for Wayland FBDEV Based Renderers" OFF) option (WITH_WAYLAND_X11 "Build Wayland with X11 backend" OFF) option (WITH_WAYLAND_X11_LIB "Build development library for Wayland X11 Based Renderers" OFF) option (WITH_WAYLAND_DRM "Build Wayland with drm backend" OFF) option (WITH_WAYLAND_DRM_LIB "Build development library for Wayland DRM Based Renderers" OFF) option (WITH_SERVICE_BIN "Build LayerManagerService Binary" ON) option (WITH_CONTROL_BIN "Build LayerManagerControl Binary" ON) option (WITH_CLIENT_LIB "Build LayerManagement Client Lib" ON) option (WITH_GENERIC_COMMUNICATOR "Build Generic Communicator Plugin" ON) option (WITH_SYSTEMD_HEALTH_MONITOR "Build plugin for systemd health monitoring" OFF) option (WITH_EXAMPLE_SCENE_PROVIDER "Build scene provider plugin for examples" OFF) option (WITH_STATIC_LIBRARIES "Link all libraries statically" OFF) option (WITH_TEXT_RENDERER "Build text renderer (only logging)" OFF) #============================================================================== # Internal global settings not available to user #============================================================================== set (STATICALLY_LINKED_PLUGINS "" CACHE INTERNAL "list of static plugins" FORCE) #============================================================================== # set default build parameters #============================================================================== add_subdirectory(cmake/optionalFeatures) include_directories ("${PROJECT_SOURCE_DIR}/config") include_directories ("${PROJECT_SOURCE_DIR}/3rdParty/") # ilm_types are used internally to LM, so we can include them by default include_directories ("${PROJECT_SOURCE_DIR}/LayerManagerClient/ilmClient/include") #============================================================================== # enable ctest if building with tests # run 'make test' after build to run all tests # be aware that some tests require a running layermanager #============================================================================== if (WITH_TESTS) enable_testing() add_subdirectory_once (3rdParty/gtest) add_subdirectory_once (3rdParty/gmock) endif(WITH_TESTS) #============================================================================== # use strict compiler settings for examples and tools #------------------------------------------------------------------------------ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra") #============================================================================== if (WITH_EGL_EXAMPLE) add_subdirectory_once (LayerManagerUtils) add_subdirectory_once (LayerManagerClient/ilmClient) add_subdirectory_once (LayerManagerExamples/EGLX11ApplicationExample) add_subdirectory_once (LayerManagerExamples/EGLX11MockNavigation) endif(WITH_EGL_EXAMPLE) if (WITH_GLX_EXAMPLE) add_subdirectory_once (LayerManagerUtils) add_subdirectory_once (LayerManagerClient/ilmClient) add_subdirectory_once (LayerManagerExamples/GLXApplicationExample) endif(WITH_GLX_EXAMPLE) if (WITH_CLIENTEXAMPLES) add_subdirectory_once (LayerManagerUtils) add_subdirectory_once (LayerManagerClient/ilmClient) add_subdirectory_once (LayerManagerExamples/LayerManagerClientExample) endif(WITH_CLIENTEXAMPLES) 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) if (WITH_CONTROL_BIN) add_subdirectory_once (LayerManagerUtils) add_subdirectory_once (LayerManagerClient/ilmClient) add_subdirectory_once (LayerManagerControl) endif(WITH_CONTROL_BIN) #============================================================================== # use very strict compiler settings for internal components #------------------------------------------------------------------------------ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wno-long-long") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function") #set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") #============================================================================== if (WITH_EXAMPLE_SCENE_PROVIDER) add_subdirectory_once (LayerManagerCommands) add_subdirectory_once (LayerManagerBase) add_subdirectory_once (LayerManagerPlugins/SceneProvider/ExampleSceneProvider) endif(WITH_EXAMPLE_SCENE_PROVIDER) 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) if (WITH_GENERIC_COMMUNICATOR) add_subdirectory_once (LayerManagerPlugins/IpcModules) add_subdirectory_once (LayerManagerCommands) add_subdirectory_once (LayerManagerPlugins/Communicators/GenericCommunicator) endif(WITH_GENERIC_COMMUNICATOR) if (WITH_DESKTOP) add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLX) add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/GLXRenderer) endif(WITH_DESKTOP) if (WITH_GLX_LIB) add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLX) endif(WITH_GLX_LIB) 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) if (WITH_WAYLAND_X11_LIB) add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandX11GLESv2) endif(WITH_WAYLAND_X11_LIB) if (WITH_WAYLAND_DRM_LIB) add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandDrmGLESv2) endif(WITH_WAYLAND_DRM_LIB) 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) if (WITH_WAYLAND_FBDEV_LIB) add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicWaylandFbdevGLESv2) endif(WITH_WAYLAND_FBDEV_LIB) if (WITH_X11_GLES) add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLESv2) add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/X11GLESRenderer) endif(WITH_X11_GLES) if (WITH_GLESv2_LIB) add_subdirectory_once (LayerManagerPlugins/Renderers/GraphicLib/LayerManagerGraphicGLESv2) endif(WITH_GLESv2_LIB) if (WITH_TEXT_RENDERER) add_subdirectory_once (LayerManagerPlugins/Renderers/Platform/TextRenderer) endif(WITH_TEXT_RENDERER) if (WITH_SERVICE_BIN) add_subdirectory_once (LayerManagerUtils) add_subdirectory_once (LayerManagerBase) add_subdirectory_once (LayerManagerService) endif (WITH_SERVICE_BIN) if (WITH_CLIENT_LIB) add_subdirectory_once (LayerManagerPlugins/IpcModules) add_subdirectory_once (LayerManagerClient/ilmClient) endif (WITH_CLIENT_LIB) #============================================================================== # store used build configuration #============================================================================== add_subdirectory_once(config)