add redraw_fixer, separate controller tool
[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
31    layers.cpp
32    layers.hpp
33    controller_hooks.hpp
34    config.cpp
35    config.hpp
36    policy.hpp)
37
38 add_executable(redraw_fixer
39         redraw_fixer.cpp
40         ${IVI_CON_PROTO}
41         wayland.cpp
42         wayland.hpp
43         controller_hooks.hpp
44         util.cpp
45         util.hpp)
46
47 target_include_directories(winman
48     PRIVATE
49         ${AFB_INCLUDE_DIRS}
50         ${SD_INCLUDE_DIRS}
51         ../include
52         ../src)
53
54 target_link_libraries(redraw_fixer
55         PRIVATE
56         ${WLC_LIBRARIES})
57
58 target_link_libraries(winman
59     PRIVATE
60         ${AFB_LIBRARIES}
61         ${WLC_LIBRARIES}
62         ${SD_LIBRARIES})
63
64 target_compile_definitions(winman
65     PRIVATE
66         AFB_BINDING_VERSION=2
67         # We do not want source location of messages
68         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
69         WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
70         _GNU_SOURCE)  # XXX should I define this here?!
71
72 target_compile_definitions(redraw_fixer
73         PRIVATE
74         DO_NOT_USE_AFB   # override log* AFB macros
75         _GNU_SOURCE)
76
77 if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release")
78    target_compile_definitions(winman
79        PRIVATE
80            _GLIBCXX_DEBUG)
81    target_compile_definitions(redraw_fixer
82            PRIVATE
83            _GLIBCXX_DEBUG)
84 endif()
85
86 target_compile_options(winman
87     PRIVATE
88         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
89
90 set_target_properties(winman
91     PROPERTIES
92     # INTERPROCEDURAL_OPTIMIZATION ON
93
94         CXX_EXTENSIONS OFF
95         CXX_STANDARD 14
96         CXX_STANDARD_REQUIRED ON
97
98         C_EXTENSIONS OFF
99         C_STANDARD 99
100         C_STANDARD_REQUIRED ON
101
102         LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map")
103
104 if (LINK_LIBCXX)
105    set_target_properties(winman
106            PROPERTIES
107            LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map -lc++")
108    set_target_properties(redraw_fixer
109            PROPERTIES
110            LINK_FLAGS "-lc++")
111 endif()
112
113 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
114    target_compile_options(winman
115       PRIVATE
116          -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
117    set_target_properties(winman
118       PROPERTIES
119          LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
120 endif()