cmake: merged target properties on winman, added IPO/LTO
[staging/windowmanager.git] / src / CMakeLists.txt
1 wlproto(IVI_APP ivi-application)
2 wlproto(IVI_CON ivi-controller)
3
4 add_executable(winman
5    main.cpp
6    wayland.cpp
7    wayland.hpp
8    util.c
9    util.h
10    ${IVI_APP_PROTO}
11    ${IVI_CON_PROTO})
12
13 target_compile_definitions(winman
14     PRIVATE
15         WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
16         _GNU_SOURCE)  # XXX should I define this here?!
17
18 target_compile_options(winman
19     PRIVATE
20         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
21
22 set_target_properties(winman
23     PROPERTIES
24         INTERPROCEDURAL_OPTIMIZATION ON
25
26         CXX_EXTENSIONS OFF
27         CXX_STANDARD 14
28         CXX_STANDARD_REQUIRED ON
29
30         C_EXTENSIONS OFF
31         C_STANDARD 99
32         C_STANDARD_REQUIRED ON)
33
34 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
35    target_compile_options(winman
36       PRIVATE
37          -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
38    set_target_properties(winman
39       PROPERTIES
40          LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
41 endif()
42
43 target_link_libraries(winman
44    ${WLC_LIBRARIES})