X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2FCMakeLists.txt;h=f077d68292c3c4aa8056b57c898dc40325c7a796;hb=85d9a212ff3fd71304f30f4cd8cc3767b74c0737;hp=86e7ecdf8505d140aafcd22332c27c75e21076bc;hpb=11369e6592800fcf03138b109fee3d4c0736f21a;p=staging%2Fwindowmanager.git diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 86e7ecd..f077d68 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,14 +1,136 @@ -wlproto(IVI_APP ivi-application) +# +# Copyright (C) 2017 Mentor Graphics Development (Deutschland) 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. +# + wlproto(IVI_CON ivi-controller) -add_executable(winman +include(FindPkgConfig) +pkg_check_modules(AFB REQUIRED afb-daemon) +pkg_check_modules(SD REQUIRED libsystemd>=222) + +# We do not want a prefix for our module +set(CMAKE_SHARED_MODULE_PREFIX "") + +add_custom_command( + OUTPUT afb_binding_api.hpp afb_binding_glue.inl + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../generate-binding-glue.py + COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/../generate-binding-glue.py) + +add_library(winman MODULE main.cpp - util.c - util.h - ${IVI_APP_PROTO} - ${IVI_CON_PROTO}) + wayland.cpp + wayland.hpp + util.cpp + util.hpp + layout.cpp + layout.hpp + ${IVI_CON_PROTO} + json_helper.cpp + json_helper.hpp + app.hpp app.cpp + afb_binding_api.cpp + result.hpp + afb_binding_api.hpp + afb_binding_glue.inl + layers.cpp + layers.hpp + controller_hooks.hpp + config.cpp + config.hpp + policy.hpp) -add_definitions(-DWINMAN_VERSION_STRING="${PACKAGE_VERSION}") +add_executable(redraw_fixer + redraw_fixer.cpp + ${IVI_CON_PROTO} + wayland.cpp + wayland.hpp + controller_hooks.hpp + util.cpp + util.hpp) + +target_include_directories(winman + PRIVATE + ${AFB_INCLUDE_DIRS} + ${SD_INCLUDE_DIRS} + ../include + ../src) + +target_link_libraries(redraw_fixer + PRIVATE + ${WLC_LIBRARIES}) target_link_libraries(winman - ${WLC_LIBRARIES}) + PRIVATE + ${AFB_LIBRARIES} + ${WLC_LIBRARIES} + ${SD_LIBRARIES}) + +target_compile_definitions(winman + PRIVATE + AFB_BINDING_VERSION=2 + # We do not want source location of messages + AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS + WINMAN_VERSION_STRING="${PACKAGE_VERSION}" + _GNU_SOURCE) # XXX should I define this here?! + +target_compile_definitions(redraw_fixer + PRIVATE + DO_NOT_USE_AFB # override log* AFB macros + _GNU_SOURCE) + +if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release") + target_compile_definitions(winman + PRIVATE + _GLIBCXX_DEBUG) + target_compile_definitions(redraw_fixer + PRIVATE + _GLIBCXX_DEBUG) +endif() + +target_compile_options(winman + PRIVATE + -Wall -Wextra -Wno-unused-parameter -Wno-comment) + +set_target_properties(winman + PROPERTIES + # INTERPROCEDURAL_OPTIMIZATION ON + + CXX_EXTENSIONS OFF + CXX_STANDARD 14 + CXX_STANDARD_REQUIRED ON + + C_EXTENSIONS OFF + C_STANDARD 99 + C_STANDARD_REQUIRED ON + + LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map") + +if (LINK_LIBCXX) + set_target_properties(winman + PROPERTIES + LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map -lc++") + set_target_properties(redraw_fixer + PROPERTIES + LINK_FLAGS "-lc++") +endif() + +if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "") + target_compile_options(winman + PRIVATE + -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer) + set_target_properties(winman + PROPERTIES + LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g") +endif()