953b59aebccec212db0692ed4de56d2bd54bfc04
[staging/windowmanager.git] / src / CMakeLists.txt
1 wlproto(IVI_CON ivi-controller)
2
3 include(FindPkgConfig)
4 pkg_check_modules(AFB REQUIRED afb-daemon)
5 pkg_check_modules(SD REQUIRED libsystemd>=222)
6
7 # We do not want a prefix for our module
8 set(CMAKE_SHARED_MODULE_PREFIX "")
9
10 add_custom_command(
11    OUTPUT afb_binding_api.hpp afb_binding_glue.inl
12    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../generate-binding-glue.py
13    COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/../generate-binding-glue.py)
14
15 add_library(winman MODULE
16    main.cpp
17    wayland.cpp
18    wayland.hpp
19    util.cpp
20    util.hpp
21    layout.cpp
22    layout.hpp
23    ${IVI_CON_PROTO}
24    json_helper.cpp
25    json_helper.hpp
26    app.hpp app.cpp
27    afb_binding_api.cpp
28    result.hpp
29    afb_binding_api.hpp
30    afb_binding_glue.inl layers.cpp layers.hpp controller_hooks.hpp config.cpp config.hpp policy.hpp)
31
32 target_include_directories(winman
33     PRIVATE
34         ${AFB_INCLUDE_DIRS}
35         ${SD_INCLUDE_DIRS}
36         ../include
37         ../src)
38
39 target_link_libraries(winman
40     PRIVATE
41         ${AFB_LIBRARIES}
42         ${WLC_LIBRARIES}
43         ${SD_LIBRARIES})
44
45 target_compile_definitions(winman
46     PRIVATE
47         AFB_BINDING_VERSION=2
48         # We do not want source location of messages
49         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
50         WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
51         _GNU_SOURCE)  # XXX should I define this here?!
52
53 if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release")
54    target_compile_definitions(winman
55        PRIVATE
56            _GLIBCXX_DEBUG)
57 endif()
58
59 target_compile_options(winman
60     PRIVATE
61         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
62
63 set_target_properties(winman
64     PROPERTIES
65     # INTERPROCEDURAL_OPTIMIZATION ON
66
67         CXX_EXTENSIONS OFF
68         CXX_STANDARD 14
69         CXX_STANDARD_REQUIRED ON
70
71         C_EXTENSIONS OFF
72         C_STANDARD 99
73         C_STANDARD_REQUIRED ON
74
75         LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map")
76
77 if (LINK_LIBCXX)
78    set_target_properties(winman
79            PROPERTIES
80            LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map -lc++")
81 endif()
82
83 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
84    target_compile_options(winman
85       PRIVATE
86          -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
87    set_target_properties(winman
88       PROPERTIES
89          LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
90 endif()