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