d335631d16b7f3a864d85303986cf3d5c25a5842
[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    result.hpp
28    afb_binding_api.hpp
29    afb_binding_glue.inl layers.cpp layers.hpp controller_hooks.hpp config.cpp config.hpp)
30
31 target_include_directories(winman
32     PRIVATE
33         ${AFB_INCLUDE_DIRS}
34         ${SD_INCLUDE_DIRS}
35         ../include
36         ../src)
37
38 target_link_libraries(winman
39     PRIVATE
40         ${AFB_LIBRARIES}
41         ${WLC_LIBRARIES}
42         ${SD_LIBRARIES})
43
44 target_compile_definitions(winman
45     PRIVATE
46         AFB_BINDING_VERSION=2
47         # We do not want source location of messages
48         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
49         WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
50         _GNU_SOURCE)  # XXX should I define this here?!
51
52 if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release")
53    target_compile_definitions(winman
54        PRIVATE
55            _GLIBCXX_DEBUG)
56 endif()
57
58 target_compile_options(winman
59     PRIVATE
60         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
61
62 set_target_properties(winman
63     PROPERTIES
64         INTERPROCEDURAL_OPTIMIZATION ON
65
66         CXX_EXTENSIONS OFF
67         CXX_STANDARD 14
68         CXX_STANDARD_REQUIRED ON
69
70         C_EXTENSIONS OFF
71         C_STANDARD 99
72         C_STANDARD_REQUIRED ON
73
74         LINK_FLAGS "-Wl,--version-script=../../export.map")
75
76 if (LINK_LIBCXX)
77    set_target_properties(winman
78            PROPERTIES
79            LINK_FLAGS "-Wl,--version-script=../../export.map -lc++")
80 endif()
81
82 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
83    target_compile_options(winman
84       PRIVATE
85          -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
86    set_target_properties(winman
87       PROPERTIES
88          LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
89 endif()