Move layout.db
[apps/agl-service-windowmanager.git] / src / CMakeLists.txt
1 #
2 # Copyright (c) 2017 TOYOTA MOTOR CORPORATION
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #      http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16
17 wlproto(IVI_CON ivi-wm)
18
19 include(FindPkgConfig)
20 pkg_check_modules(AFB REQUIRED afb-daemon)
21 pkg_check_modules(SD REQUIRED libsystemd>=222)
22
23 # We do not want a prefix for our module
24 set(CMAKE_SHARED_MODULE_PREFIX "")
25
26 set(TARGETS_WM windowmanager-service)
27
28 # Set use STM name
29 set(USE_STM_NAME zipc)
30
31 add_library(${TARGETS_WM} MODULE
32    main.cpp
33    wayland_ivi_wm.cpp
34    wayland_ivi_wm.hpp
35    util.cpp
36    util.hpp
37    layout_manager/layout.cpp
38    layout_manager/layout.hpp
39    ${IVI_CON_PROTO}
40    json_helper.cpp
41    json_helper.hpp
42    app.hpp app.cpp
43    result.hpp
44    layers.cpp
45    layers.hpp
46    controller_hooks.hpp
47    config.cpp
48    config.hpp
49    low_can_client.cpp
50    low_can_client.hpp
51 )
52
53 target_include_directories(${TARGETS_WM}
54     PRIVATE
55         ${AFB_INCLUDE_DIRS}
56         ${SD_INCLUDE_DIRS}
57         ../include
58         ../src
59         ../src/layout_manager
60         ../src/${PLUGIN_PM}
61         ../src/${PLUGIN_PM}/${USE_STM_NAME}
62 )
63
64 target_link_libraries(${TARGETS_WM}
65     PRIVATE
66         ${AFB_LIBRARIES}
67         ${WLC_LIBRARIES}
68         ${SD_LIBRARIES}
69         ${CMAKE_BINARY_DIR}/src/${PLUGIN_PM}/lib${PLUGIN_PM}.so
70 )
71
72 target_compile_definitions(${TARGETS_WM}
73     PRIVATE
74         AFB_BINDING_VERSION=2
75         # We do not want source location of messages
76         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
77         WINMAN_VERSION_STRING="${PACKAGE_VERSION}"
78         _GNU_SOURCE)
79
80 if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release")
81    target_compile_definitions(${TARGETS_WM}
82        PRIVATE
83            _GLIBCXX_DEBUG)
84 endif()
85
86 target_compile_options(${TARGETS_WM}
87     PRIVATE
88         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
89
90 set_target_properties(${TARGETS_WM}
91     PROPERTIES
92     # INTERPROCEDURAL_OPTIMIZATION ON
93
94         CXX_EXTENSIONS OFF
95         CXX_STANDARD 14
96         CXX_STANDARD_REQUIRED ON
97
98         C_EXTENSIONS OFF
99         C_STANDARD 99
100         C_STANDARD_REQUIRED ON
101
102         LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map -Wl,-rpath,'$ORIGIN'")
103
104 if (LINK_LIBCXX)
105    set_target_properties(${TARGETS_WM}
106            PROPERTIES
107            LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../export.map -lc++")
108 endif()
109
110 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
111    target_compile_options(${TARGETS_WM}
112       PRIVATE
113          -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
114    set_target_properties(${TARGETS_WM}
115       PROPERTIES
116          LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
117 endif()
118
119 if(NOT EXISTS ${PROJECT_BINARY_DIR}/package)
120    add_custom_command(TARGET ${TARGETS_WM} POST_BUILD
121       COMMAND cp -rf ${PROJECT_SOURCE_DIR}/package ${PROJECT_BINARY_DIR}
122    )
123 endif()
124
125 add_custom_command(TARGET ${TARGETS_WM} POST_BUILD
126    COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/root/lib
127    COMMAND cp -rf ${PROJECT_BINARY_DIR}/src/${TARGETS_WM}.so ${PROJECT_BINARY_DIR}/package/root/lib
128    COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/root/etc
129    COMMAND cp -f ${PROJECT_SOURCE_DIR}/layers.json ${PROJECT_BINARY_DIR}/package/root/etc
130    COMMAND cp -f ${PROJECT_SOURCE_DIR}/src/layout_manager/db/area.db ${PROJECT_BINARY_DIR}/package/root/etc
131    COMMAND cp -f ${PROJECT_SOURCE_DIR}/src/${PLUGIN_PM}/db/layout.db ${PROJECT_BINARY_DIR}/package/root/etc
132    COMMAND cp -f ${PROJECT_SOURCE_DIR}/src/${PLUGIN_PM}/db/role.db ${PROJECT_BINARY_DIR}/package/root/etc
133    COMMAND cp -f ${PROJECT_SOURCE_DIR}/src/db/app.db ${PROJECT_BINARY_DIR}/package/root/etc
134    COMMAND cp -f ${PROJECT_BINARY_DIR}/src/policy_manager/libpolicy_manager.so ${PROJECT_BINARY_DIR}/package/root/lib
135 )
136
137 add_custom_target(package DEPENDS ${PROJECT_BINARY_DIR}/package/root
138    COMMAND wgtpkg-pack -f -o ${PROJECT_BINARY_DIR}/package/${TARGETS_WM}-2017.wgt ${PROJECT_BINARY_DIR}/package/root
139 )