1# Copyright (c) 2021-2023 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("../powermgr.gni")
15
16config("powermgr_public_config") {
17  include_dirs = [
18    "native/include",
19    "zidl/include",
20    "${powermgr_inner_api}/native/include",
21  ]
22}
23
24config("powermgr_private_config") {
25  include_dirs = [
26    "native/src",
27    "native/src/runninglock",
28    "native/src/setting",
29    "native/src/shutdown",
30    "native/src/suspend",
31    "native/src/wakeup",
32    "native/src/hibernate",
33    "native/src/screenoffpre",
34  ]
35
36  if (power_manager_feature_wakeup_action) {
37    include_dirs += [ "native/src/wakeup_action" ]
38  }
39}
40
41ohos_shared_library("powermgrservice") {
42  sanitize = {
43    cfi = true
44    cfi_cross_dso = true
45    debug = false
46  }
47  branch_protector_ret = "pac_ret"
48
49  sources = [
50    "native/src/power_hdi_callback.cpp",
51    "native/src/power_mgr_dumper.cpp",
52    "native/src/power_mgr_factory.cpp",
53    "native/src/power_mgr_notify.cpp",
54    "native/src/power_mgr_service.cpp",
55    "native/src/power_mode_module.cpp",
56    "native/src/power_mode_policy.cpp",
57    "native/src/power_save_mode.cpp",
58    "native/src/power_state_machine.cpp",
59    "native/src/runninglock/running_lock_inner.cpp",
60    "native/src/runninglock/running_lock_mgr.cpp",
61    "native/src/runninglock/running_lock_proxy.cpp",
62    "native/src/runninglock/running_lock_timer_handler.cpp",
63    "native/src/screenoffpre/screen_off_pre_controller.cpp",
64    "native/src/setting/setting_helper.cpp",
65    "native/src/shutdown/shutdown_callback_holer.cpp",
66    "native/src/shutdown/shutdown_controller.cpp",
67    "native/src/shutdown/shutdown_dialog.cpp",
68    "native/src/suspend/sleep_callback_holder.cpp",
69    "native/src/suspend/suspend_controller.cpp",
70    "native/src/suspend/suspend_source_parser.cpp",
71    "native/src/suspend/suspend_sources.cpp",
72    "native/src/wakeup/wakeup_controller.cpp",
73    "native/src/wakeup/wakeup_source_parser.cpp",
74    "native/src/wakeup/wakeup_sources.cpp",
75  ]
76
77  configs = [
78    ":powermgr_private_config",
79    "${powermgr_utils_path}:utils_config",
80    "${powermgr_utils_path}:coverage_flags",
81  ]
82
83  public_configs = [ ":powermgr_public_config" ]
84
85  public_deps = [ "${powermgr_utils_path}/setting:power_setting" ]
86
87  deps = [
88    ":powermgr_stub",
89    "${powermgr_inner_api}:powermgr_client",
90    "${powermgr_utils_path}:power_utils",
91    "${powermgr_utils_path}/ffrt:power_ffrt",
92    "${powermgr_utils_path}/intf_wrapper:power_intf_wrapper",
93    "${powermgr_utils_path}/lib_loader:power_lib_loader",
94    "${powermgr_utils_path}/param:power_sysparam",
95    "${powermgr_utils_path}/permission:power_permission",
96    "${powermgr_utils_path}/vibrator:power_vibrator",
97    "native/src/actions:powermgr_actions",
98  ]
99
100  external_deps = [
101    "ability_base:want",
102    "ability_runtime:ability_connect_callback_stub",
103    "ability_runtime:ability_manager",
104    "bundle_framework:appexecfwk_core",
105    "c_utils:utils",
106    "common_event_service:cesfwk_innerkits",
107    "config_policy:configpolicy_util",
108    "data_share:datashare_consumer",
109    "drivers_interface_power:libpower_proxy_1.2",
110    "ffrt:libffrt",
111    "hdf_core:libhdi",
112    "hdf_core:libpub_utils",
113    "hicollie:libhicollie",
114    "hilog:libhilog",
115    "hisysevent:libhisysevent",
116    "hitrace:hitrace_meter",
117    "image_framework:image_native",
118    "ipc:ipc_core",
119    "jsoncpp:jsoncpp",
120    "libxml2:libxml2",
121    "safwk:system_ability_fwk",
122  ]
123
124  defines = []
125
126  if (power_manager_feature_movement) {
127    defines += [ "MSDP_MOVEMENT_ENABLE" ]
128  }
129
130  if (power_manager_feature_screen_on_timeout_check) {
131    defines += [ "SCREEN_ON_TIMEOUT_CHECK" ]
132    external_deps += [
133      "ability_runtime:app_manager",
134      "window_manager:libwm",
135    ]
136  }
137
138  if (has_display_manager_part) {
139    defines += [ "HAS_DISPLAY_MANAGER" ]
140    external_deps += [
141      "display_manager:displaymgr",
142      "window_manager:libdm_lite",
143    ]
144  }
145
146  if (has_device_standby_part) {
147    external_deps += [ "device_standby:standby_innerkits" ]
148  }
149
150  if (has_multimodalinput_input_part) {
151    external_deps += [ "input:libmmi-client" ]
152  }
153
154  if (has_sensors_sensor_part) {
155    external_deps += [ "sensor:sensor_interface_native" ]
156  }
157
158  if (power_manager_feature_poweroff_charge) {
159    external_deps += [ "battery_manager:batterysrv_client" ]
160
161    defines += [ "POWER_MANAGER_POWEROFF_CHARGE" ]
162  }
163
164  if (power_manager_feature_doubleclick_or_pickup) {
165    defines += [ "POWER_WAKEUPDOUBLE_OR_PICKUP_ENABLE" ]
166  }
167
168  if (power_manager_feature_wakeup_action) {
169    sources += [
170      "native/src/wakeup_action/wakeup_action_controller.cpp",
171      "native/src/wakeup_action/wakeup_action_source_parser.cpp",
172      "native/src/wakeup_action/wakeup_action_sources.cpp",
173    ]
174
175    defines += [ "POWER_MANAGER_WAKEUP_ACTION" ]
176  }
177
178  if (power_manager_feature_power_dialog) {
179    defines += [ "POWER_MANAGER_POWER_DIALOG" ]
180  }
181
182  if (power_manager_feature_enable_s4) {
183    sources += [ "native/src/hibernate/hibernate_controller.cpp" ]
184    external_deps += [
185      "init:libbegetutil",
186      "os_account:os_account_innerkits",
187    ]
188  }
189
190  if (power_manager_feature_force_sleep_broadcast) {
191    defines += [ "POWER_MANAGER_ENABLE_FORCE_SLEEP_BROADCAST" ]
192  }
193
194  if (power_manager_feature_charging_type_setting) {
195    defines += [ "POWER_MANAGER_ENABLE_CHARGING_TYPE_SETTING" ]
196  }
197
198  if (power_manager_feature_charging_type_setting &&
199      defined(global_parts_info) &&
200      defined(global_parts_info.powermgr_battery_manager)) {
201    external_deps += [ "battery_manager:batterysrv_client" ]
202  }
203
204  if (factory == true) {
205    defines += [ "CONFIG_FACTORY_MODE" ]
206  }
207
208  subsystem_name = "powermgr"
209  part_name = "${powermgr_part_name}"
210}
211
212config("zidl_private_config") {
213  include_dirs = [ "zidl/src/shutdown" ]
214}
215
216ohos_shared_library("powermgr_stub") {
217  sources = [
218    "zidl/src/power_mgr_async_reply.cpp",
219    "zidl/src/power_mgr_stub.cpp",
220    "zidl/src/power_mode_callback_stub.cpp",
221    "zidl/src/power_runninglock_callback_stub.cpp",
222    "zidl/src/power_state_callback_stub.cpp",
223    "zidl/src/screen_off_pre_callback_stub.cpp",
224    "zidl/src/shutdown/shutdown_stub_delegator.cpp",
225    "zidl/src/sync_sleep_callback_stub.cpp",
226  ]
227
228  configs = [
229    "${powermgr_utils_path}:utils_config",
230    "${powermgr_utils_path}:coverage_flags",
231    ":zidl_private_config",
232  ]
233
234  public_configs = [ ":powermgr_public_config" ]
235
236  deps = [ "${powermgr_inner_api}:powermgr_client" ]
237
238  external_deps = [
239    "c_utils:utils",
240    "hicollie:libhicollie",
241    "hilog:libhilog",
242    "ipc:ipc_core",
243  ]
244
245  subsystem_name = "powermgr"
246  part_name = "${powermgr_part_name}"
247}
248
249group("service") {
250  deps = [
251    ":powermgr_stub",
252    ":powermgrservice",
253    "native/profile:power_service_config",
254  ]
255}
256