main/app: started to move things to app
[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_library(winman MODULE
11    main.cpp
12    wayland.cpp
13    wayland.hpp
14    util.cpp
15    util.hpp
16    ${IVI_CON_PROTO} json_helper.cpp json_helper.hpp app.hpp app.cpp)
17
18 target_include_directories(winman
19     PRIVATE
20         ${AFB_INCLUDE_DIRS}
21         ${SD_INCLUDE_DIRS}
22         ../include)
23
24 target_link_libraries(winman
25     PRIVATE
26         ${AFB_LIBRARIES}
27         ${WLC_LIBRARIES}
28         ${SD_LIBRARIES})
29
30 target_compile_definitions(winman
31     PRIVATE
32         AFB_BINDING_VERSION=2
33         # We do not want source location of messages
34         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
35         WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
36         _GNU_SOURCE)  # XXX should I define this here?!
37
38 if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release")
39    target_compile_definitions(winman
40        PRIVATE
41            _GLIBCXX_DEBUG)
42 endif()
43
44 target_compile_options(winman
45     PRIVATE
46         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
47
48 set_target_properties(winman
49     PROPERTIES
50         INTERPROCEDURAL_OPTIMIZATION ON
51
52         CXX_EXTENSIONS OFF
53         CXX_STANDARD 14
54         CXX_STANDARD_REQUIRED ON
55
56         C_EXTENSIONS OFF
57         C_STANDARD 99
58         C_STANDARD_REQUIRED ON
59
60         LINK_FLAGS "-Wl,--version-script=../../export.map")
61
62 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
63    target_compile_options(winman
64       PRIVATE
65          -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
66    set_target_properties(winman
67       PROPERTIES
68          LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
69 endif()