Generating binding API glue code using generate-binding.py
[staging/windowmanager.git] / src / CMakeLists.txt
1 wlproto(IVI_CON ivi-controller)
2
3 include(FindPkgConfig)
4 pkg_check_modules(AFB REQUIRED afb-daemon==1.0)
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_api.hpp afb_binding.inl
12    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../generate-binding.py
13    COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/../generate-binding.py)
14
15 add_library(winman MODULE
16    main.cpp
17    wayland.cpp
18    wayland.hpp
19    util.cpp
20    util.hpp
21    ${IVI_CON_PROTO} json_helper.cpp json_helper.hpp app.hpp app.cpp result.hpp afb_api.hpp afb_binding.inl)
22
23 target_include_directories(winman
24     PRIVATE
25         ${AFB_INCLUDE_DIRS}
26         ${SD_INCLUDE_DIRS}
27         ../include)
28
29 target_link_libraries(winman
30     PRIVATE
31         ${AFB_LIBRARIES}
32         ${WLC_LIBRARIES}
33         ${SD_LIBRARIES})
34
35 target_compile_definitions(winman
36     PRIVATE
37         AFB_BINDING_VERSION=2
38         # We do not want source location of messages
39         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
40         WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
41         _GNU_SOURCE)  # XXX should I define this here?!
42
43 if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release")
44    target_compile_definitions(winman
45        PRIVATE
46            _GLIBCXX_DEBUG)
47 endif()
48
49 target_compile_options(winman
50     PRIVATE
51         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
52
53 set_target_properties(winman
54     PROPERTIES
55         INTERPROCEDURAL_OPTIMIZATION ON
56
57         CXX_EXTENSIONS OFF
58         CXX_STANDARD 14
59         CXX_STANDARD_REQUIRED ON
60
61         C_EXTENSIONS OFF
62         C_STANDARD 99
63         C_STANDARD_REQUIRED ON
64
65         LINK_FLAGS "-Wl,--version-script=../../export.map")
66
67 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
68    target_compile_options(winman
69       PRIVATE
70          -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
71    set_target_properties(winman
72       PROPERTIES
73          LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
74 endif()