Use feature 'required-binding'
[apps/agl-service-windowmanager-2017.git] / policy_manager / 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 include(FindPkgConfig)
18 pkg_check_modules(AFB REQUIRED afb-daemon)
19 pkg_check_modules(SD REQUIRED libsystemd>=222)
20
21 # Set name of STM
22 set(STM_DIR stub)
23 #set(STM_DIR zipc)
24
25 # Select roles.db
26 if(zipc MATCHES ${STM_DIR})
27     # if trying to show split layout, change from OFF to ON
28     set(TRY_SPLIT_LAYOUT OFF CACHE BOOL "Enable to show split layout")
29
30     if(${TRY_SPLIT_LAYOUT})
31         set(ROLES_DB_NAME roles.db.zipc.split)
32     else()
33         set(ROLES_DB_NAME roles.db.zipc)
34     endif()
35 else()
36     set(ROLES_DB_NAME roles.db)
37 endif()
38
39 # Add STM directory
40 add_subdirectory(stm/${STM_DIR})
41
42 set(TARGETS_PM ${PLUGIN_PM})
43
44 add_library(${TARGETS_PM}
45     SHARED
46         policy_manager.cpp
47         stm/stm.c
48 )
49
50 target_include_directories(${TARGETS_PM}
51     PRIVATE
52         ${AFB_INCLUDE_DIRS}
53         ${SD_INCLUDE_DIRS}
54         ../include
55         ../src
56         ./
57         ./stm
58         ./stm/${STM_DIR}
59 )
60
61 target_link_libraries(${TARGETS_PM}
62     PRIVATE
63         ${AFB_LIBRARIES}
64         ${SD_LIBRARIES}
65         pmstm
66 )
67
68 target_compile_definitions(${TARGETS_PM}
69     PRIVATE
70         _GNU_SOURCE
71 )
72
73 target_compile_options(${TARGETS_PM}
74     PRIVATE
75         -Wall -Wextra -Wno-unused-parameter -Wno-comment)
76
77 set_target_properties(${TARGETS_PM}
78     PROPERTIES
79         CXX_EXTENSIONS OFF
80         CXX_STANDARD 14
81         CXX_STANDARD_REQUIRED ON
82
83         C_EXTENSIONS OFF
84         C_STANDARD 99
85         C_STANDARD_REQUIRED ON
86
87         LINK_FLAGS "-Wl,-rpath,'$ORIGIN'"
88 )
89
90 if (LINK_LIBCXX)
91     set_target_properties(${TARGETS_PM}
92         PROPERTIES
93             LINK_FLAGS "-lc++ -Wl,-rpath,'$ORIGIN'"
94     )
95 endif()
96
97 add_custom_command(TARGET ${TARGETS_PM} POST_BUILD
98    COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/root/lib
99    COMMAND cp -f ${PROJECT_BINARY_DIR}/${PLUGIN_PM}/lib${PLUGIN_PM}.so ${PROJECT_BINARY_DIR}/package/root/lib
100    COMMAND mkdir -p ${PROJECT_BINARY_DIR}/package/root/etc
101    COMMAND cp -f ${PROJECT_SOURCE_DIR}/${PLUGIN_PM}/db/states.db ${PROJECT_BINARY_DIR}/package/root/etc
102    COMMAND cp -f ${PROJECT_SOURCE_DIR}/${PLUGIN_PM}/db/${ROLES_DB_NAME} ${PROJECT_BINARY_DIR}/package/root/etc/roles.db
103 )