Update to use CMake app template
[apps/agl-service-windowmanager.git] / src / CMakeLists.txt
1 #
2 # Copyright (c) 2017 TOYOTA MOTOR CORPORATION
3 # Copyright (C) 2020 Konsulko Group
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #
17
18 PROJECT_TARGET_ADD(windowmanager-service)
19
20 # Define project Targets
21 add_library(${TARGET_NAME} MODULE
22         main.cpp
23         util.cpp
24         json_helper.cpp
25         applist.cpp
26         request.cpp
27         pm_wrapper.cpp
28         window_manager.cpp
29         wm_client.cpp
30         wm_error.cpp
31         wm_layer.cpp
32         wm_layer_control.cpp)
33
34 target_include_directories(${TARGET_NAME} PRIVATE
35         ../${PLUGIN_PM})
36
37 target_compile_definitions(${TARGET_NAME} PRIVATE
38         AFB_BINDING_VERSION=3
39         # We do not want source location of messages
40         AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS
41         WINMAN_VERSION_STRING="${PACKAGE_VERSION}")
42
43 set_target_properties(${TARGET_NAME} PROPERTIES
44         LABELS "BINDING"
45         PREFIX ""
46         LINK_FLAGS ${BINDINGS_LINK_FLAG}
47         OUTPUT_NAME ${TARGET_NAME}
48
49         # INTERPROCEDURAL_OPTIMIZATION ON
50         CXX_EXTENSIONS OFF
51         CXX_STANDARD 14
52         CXX_STANDARD_REQUIRED ON
53
54         C_EXTENSIONS OFF
55         C_STANDARD 99
56         C_STANDARD_REQUIRED ON
57 )
58
59 target_link_libraries(${TARGET_NAME} PRIVATE ${PLUGIN_PM})
60
61 target_link_options(${TARGET_NAME} PRIVATE "-Wl,-rpath,'$ORIGIN'")
62
63 if (NOT ${SANITIZER_MODE} STREQUAL "none" AND NOT ${SANITIZER_MODE} STREQUAL "")
64         target_compile_options(${TARGET_NAME} PRIVATE
65                 -fsanitize=${SANITIZER_MODE} -g -fno-omit-frame-pointer)
66         set_target_properties(${TARGET_NAME} PROPERTIES
67                 LINK_FLAGS "-fsanitize=${SANITIZER_MODE} -g")
68 endif()
69
70 add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
71         COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/etc
72         COMMAND cp -f ${CMAKE_SOURCE_DIR}/conf/layers.json ${PROJECT_BINARY_DIR}/package/etc
73         COMMAND cp -f ${CMAKE_SOURCE_DIR}/conf/areas.json ${PROJECT_BINARY_DIR}/package/etc
74 )
75
76