1# Copyright (c) 2021-2022 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("//build/ohos.gni") 15import("../windowmanager_aafwk.gni") 16 17config("libwm_private_config") { 18 visibility = [ ":*" ] 19 20 include_dirs = [ 21 "include", 22 "../wmserver/include", 23 "../wmserver/include/zidl", 24 "../window_scene/session/host/include", 25 ] 26} 27 28config("libwm_public_config") { 29 include_dirs = [ 30 "../interfaces/innerkits", 31 "../interfaces/innerkits/dm", 32 "../interfaces/innerkits/wm", 33 "../utils/include", 34 "../window_scene", 35 ] 36} 37 38## Build libwm_static.a 39ohos_static_library("libwm_static") { 40 branch_protector_ret = "pac_ret" 41 sanitize = { 42 cfi = true 43 cfi_cross_dso = true 44 cfi_vcall_icall_only = true 45 debug = false 46 integer_overflow = true 47 ubsan = true 48 boundary_sanitize = true 49 } 50 include_dirs = [ 51 "../utils/include", 52 "../window_scene/intention_event/service/anr_manager/include", 53 "../window_scene/intention_event/framework/anr_handler/include", 54 "${window_base_path}/interfaces/innerkits/dm", 55 "${window_base_path}/window_scene/intention_event/include", 56 ] 57 58 sources = [ 59 "../wmserver/src/zidl/window_manager_proxy.cpp", 60 "src/extension_window.cpp", 61 "src/extension_window_impl.cpp", 62 "src/future_callback.cpp", 63 "src/gtx_input_event_sender.cpp", 64 "src/input_transfer_station.cpp", 65 "src/pattern_detach_callback.cpp", 66 "src/picture_in_picture_controller.cpp", 67 "src/picture_in_picture_manager.cpp", 68 "src/picture_in_picture_option.cpp", 69 "src/root_scene.cpp", 70 "src/screen_scene.cpp", 71 "src/static_call.cpp", 72 "src/vsync_station.cpp", 73 "src/window.cpp", 74 "src/window_accessibility_controller.cpp", 75 "src/window_adapter.cpp", 76 "src/window_agent.cpp", 77 "src/window_display_change_adapter.cpp", 78 "src/window_extension_session_impl.cpp", 79 "src/window_frame_trace_impl.cpp", 80 "src/window_impl.cpp", 81 "src/window_input_channel.cpp", 82 "src/window_manager.cpp", 83 "src/window_manager_agent.cpp", 84 "src/window_option.cpp", 85 "src/window_prepare_terminate.cpp", 86 "src/window_scene.cpp", 87 "src/window_scene_session_impl.cpp", 88 "src/window_session_impl.cpp", 89 "src/zidl/pattern_detach_callback_proxy.cpp", 90 "src/zidl/pattern_detach_callback_stub.cpp", 91 "src/zidl/window_manager_agent_stub.cpp", 92 "src/zidl/window_stub.cpp", 93 ] 94 95 configs = [ 96 ":libwm_private_config", 97 "${window_base_path}/resources/config/build:coverage_flags", 98 ] 99 100 public_configs = [ ":libwm_public_config" ] 101 102 deps = [ 103 "${window_base_path}/dm:libdm", 104 "${window_base_path}/utils:libwmutil", 105 "${window_base_path}/utils:libwmutil_base", 106 "${window_base_path}/window_scene/common:window_scene_common", 107 "${window_base_path}/window_scene/intention_event:libintention_event", 108 "${window_base_path}/window_scene/intention_event/service:intention_event_anr_manager", 109 "${window_base_path}/window_scene/interfaces/innerkits:libwsutils", 110 "${window_base_path}/window_scene/session:scene_session", 111 "${window_base_path}/window_scene/session_manager:session_manager", 112 ] 113 114 external_deps = [ 115 "ability_base:configuration", 116 "ability_base:want", 117 "ability_runtime:ability_context_native", 118 "ability_runtime:ability_manager", 119 "ability_runtime:app_manager", 120 "accessibility:accessibility_common", 121 "ace_engine:ace_uicontent", 122 "ace_engine:ace_xcomponent_controller", 123 "bundle_framework:appexecfwk_core", 124 "c_utils:utils", 125 "eventhandler:libeventhandler", 126 "graphic_2d:librender_service_client", 127 "graphic_2d:window_animation", 128 "hilog:libhilog", 129 "hisysevent:libhisysevent", 130 "hitrace:hitrace_meter", 131 "image_framework:image_native", 132 "init:libbegetutil", 133 "input:libmmi-client", 134 "ipc:ipc_single", 135 "napi:ace_napi", 136 "samgr:samgr_proxy", 137 ] 138 139 defines = [] 140 141 if (defined(global_parts_info) && 142 defined(global_parts_info.barrierfree_accessibility)) { 143 external_deps += [ "accessibility:accessibility_common" ] 144 } 145 146 defines += [ "FRAME_TRACE_ENABLE" ] 147 external_deps += [ "frame_aware_sched:frame_trace_intf" ] 148 149 if (defined(global_parts_info) && 150 defined(global_parts_info.resourceschedule_resource_schedule_service)) { 151 external_deps += [ "resource_schedule_service:ressched_client" ] 152 defines += [ "RESOURCE_SCHEDULE_SERVICE_ENABLE" ] 153 } 154 155 if (defined(global_parts_info) && 156 defined(global_parts_info.powermgr_power_manager)) { 157 external_deps += [ "power_manager:powermgr_client" ] 158 defines += [ "POWER_MANAGER_ENABLE" ] 159 } 160 161 if (!defined(global_parts_info) || 162 defined(global_parts_info.inputmethod_imf)) { 163 imf_enable = true 164 } else { 165 imf_enable = false 166 } 167 print("imf_enable: ", imf_enable) 168 169 if (imf_enable == true) { 170 external_deps += [ "imf:inputmethod_client" ] 171 defines += [ "IMF_ENABLE" ] 172 } 173 174 part_name = "window_manager" 175 subsystem_name = "window" 176} 177 178## Build libwm.so 179ohos_shared_library("libwm") { 180 branch_protector_ret = "pac_ret" 181 sanitize = { 182 cfi = true 183 cfi_cross_dso = true 184 cfi_vcall_icall_only = true 185 debug = false 186 } 187 include_dirs = [ 188 "../utils/include", 189 "../window_scene/intention_event/service/anr_manager/include", 190 "../window_scene/intention_event/framework/anr_handler/include", 191 "${window_base_path}/interfaces/innerkits/dm", 192 "${window_base_path}/window_scene/intention_event/include", 193 ] 194 195 sources = [ 196 "../wmserver/src/zidl/window_manager_proxy.cpp", 197 "src/extension_window.cpp", 198 "src/extension_window_impl.cpp", 199 "src/future_callback.cpp", 200 "src/gtx_input_event_sender.cpp", 201 "src/input_transfer_station.cpp", 202 "src/pattern_detach_callback.cpp", 203 "src/picture_in_picture_controller.cpp", 204 "src/picture_in_picture_manager.cpp", 205 "src/picture_in_picture_option.cpp", 206 "src/root_scene.cpp", 207 "src/screen_scene.cpp", 208 "src/static_call.cpp", 209 "src/vsync_station.cpp", 210 "src/window.cpp", 211 "src/window_accessibility_controller.cpp", 212 "src/window_adapter.cpp", 213 "src/window_agent.cpp", 214 "src/window_display_change_adapter.cpp", 215 "src/window_extension_session_impl.cpp", 216 "src/window_frame_trace_impl.cpp", 217 "src/window_impl.cpp", 218 "src/window_input_channel.cpp", 219 "src/window_manager.cpp", 220 "src/window_manager_agent.cpp", 221 "src/window_option.cpp", 222 "src/window_prepare_terminate.cpp", 223 "src/window_scene.cpp", 224 "src/window_scene_session_impl.cpp", 225 "src/window_session_impl.cpp", 226 "src/zidl/pattern_detach_callback_proxy.cpp", 227 "src/zidl/pattern_detach_callback_stub.cpp", 228 "src/zidl/window_manager_agent_stub.cpp", 229 "src/zidl/window_stub.cpp", 230 ] 231 232 configs = [ 233 ":libwm_private_config", 234 "../resources/config/build:coverage_flags", 235 ] 236 237 public_configs = [ ":libwm_public_config" ] 238 239 deps = [ 240 "${window_base_path}/utils:libwmutil", 241 "${window_base_path}/utils:libwmutil_base", 242 "${window_base_path}/window_scene/common:window_scene_common", 243 "${window_base_path}/window_scene/intention_event:libintention_event", 244 "${window_base_path}/window_scene/intention_event/service:intention_event_anr_manager", 245 "${window_base_path}/window_scene/interfaces/innerkits:libwsutils", 246 "${window_base_path}/window_scene/session:scene_session", 247 "${window_base_path}/window_scene/session_manager:session_manager", 248 "../dm:libdm", 249 ] 250 251 external_deps = [ 252 "ability_base:configuration", 253 "ability_base:want", 254 "ability_runtime:ability_context_native", 255 "ability_runtime:ability_manager", 256 "ability_runtime:app_context", 257 "ability_runtime:app_manager", 258 "accessibility:accessibility_common", 259 "ace_engine:ace_uicontent", 260 "ace_engine:ace_xcomponent_controller", 261 "bundle_framework:appexecfwk_core", 262 "c_utils:utils", 263 "eventhandler:libeventhandler", 264 "graphic_2d:librender_service_client", 265 "graphic_2d:window_animation", 266 "hilog:libhilog", 267 "hisysevent:libhisysevent", 268 "hitrace:hitrace_meter", 269 "image_framework:image_native", 270 "init:libbegetutil", 271 "input:libmmi-client", 272 "ipc:ipc_single", 273 "napi:ace_napi", 274 "samgr:samgr_proxy", 275 ] 276 277 defines = [] 278 279 if (defined(global_parts_info) && 280 defined(global_parts_info.barrierfree_accessibility)) { 281 external_deps += [ "accessibility:accessibility_common" ] 282 } 283 284 defines += [ "FRAME_TRACE_ENABLE" ] 285 external_deps += [ "frame_aware_sched:frame_trace_intf" ] 286 287 if (defined(global_parts_info) && 288 defined(global_parts_info.resourceschedule_resource_schedule_service)) { 289 external_deps += [ "resource_schedule_service:ressched_client" ] 290 defines += [ "RESOURCE_SCHEDULE_SERVICE_ENABLE" ] 291 } 292 293 if (!defined(global_parts_info) || 294 defined(global_parts_info.inputmethod_imf)) { 295 imf_enable = true 296 } else { 297 imf_enable = false 298 } 299 300 if (defined(global_parts_info) && 301 defined(global_parts_info.powermgr_power_manager)) { 302 external_deps += [ "power_manager:powermgr_client" ] 303 defines += [ "POWER_MANAGER_ENABLE" ] 304 } 305 print("imf_enable: ", imf_enable) 306 307 if (imf_enable == true) { 308 external_deps += [ "imf:inputmethod_client" ] 309 defines += [ "IMF_ENABLE" ] 310 } 311 312 part_name = "window_manager" 313 subsystem_name = "window" 314 315 if (build_variant == "user") { 316 defines += [ "IS_RELEASE_VERSION" ] 317 } 318} 319 320## Build libwm_lite.so 321ohos_shared_library("libwm_lite") { 322 defines = [ "USE_ADAPTER_LITE" ] 323 include_dirs = [ 324 "../interfaces/innerkits/wm", 325 "../utils/include", 326 ] 327 sources = [ 328 "../utils/src/window_visibility_info.cpp", 329 "src/window_adapter_lite.cpp", 330 "src/window_manager_agent_lite.cpp", 331 "src/window_manager_lite.cpp", 332 "src/window_option.cpp", 333 "src/zidl/window_manager_agent_stub.cpp", 334 ] 335 336 configs = [ 337 ":libwm_private_config", 338 "../resources/config/build:coverage_flags", 339 ] 340 341 deps = [ 342 "${window_base_path}/utils:libwmutil_base", 343 "${window_base_path}/window_scene/interfaces/innerkits:libwsutils", 344 "${window_base_path}/window_scene/session_manager:session_manager_lite", 345 ] 346 347 public_configs = [ ":libwm_public_config" ] 348 349 external_deps = [ 350 "ability_runtime:ability_manager", 351 "accessibility:accessibility_common", 352 "bundle_framework:appexecfwk_core", 353 "c_utils:utils", 354 "hilog:libhilog", 355 "image_framework:image_native", 356 "init:libbegetutil", 357 "ipc:ipc_single", 358 "samgr:samgr_proxy", 359 ] 360 361 defines += [ "FRAME_TRACE_ENABLE" ] 362 external_deps += [ "frame_aware_sched:frame_trace_intf" ] 363 364 if (defined(global_parts_info) && 365 defined(global_parts_info.resourceschedule_resource_schedule_service)) { 366 external_deps += [ "resource_schedule_service:ressched_client" ] 367 defines += [ "RESOURCE_SCHEDULE_SERVICE_ENABLE" ] 368 } 369 370 if (!defined(global_parts_info) || 371 defined(global_parts_info.inputmethod_imf)) { 372 imf_enable = true 373 } else { 374 imf_enable = false 375 } 376 377 if (defined(global_parts_info) && 378 defined(global_parts_info.powermgr_power_manager)) { 379 external_deps += [ "power_manager:powermgr_client" ] 380 defines += [ "POWER_MANAGER_ENABLE" ] 381 } 382 print("imf_enable: ", imf_enable) 383 384 if (imf_enable == true) { 385 external_deps += [ "imf:inputmethod_client" ] 386 defines += [ "IMF_ENABLE" ] 387 } 388 389 part_name = "window_manager" 390 subsystem_name = "window" 391 392 if (build_variant == "user") { 393 defines += [ "IS_RELEASE_VERSION" ] 394 } 395} 396 397group("test") { 398 testonly = true 399 deps = [ "test:test" ] 400} 401 402## Build libwm_ndk.so 403ohos_shared_library("libwm_ndk") { 404 output_name = "libnative_window_manager" 405 output_extension = "so" 406 branch_protector_ret = "pac_ret" 407 408 sanitize = { 409 cfi = true 410 cfi_cross_dso = true 411 cfi_vcall_icall_only = true 412 debug = false 413 } 414 415 include_dirs = [ 416 "${window_base_path}/interfaces/kits/ndk/wm", 417 "${window_base_path}/interfaces/inner_kits/wm", 418 ] 419 420 sources = [ "src/oh_window_event_filter.cpp" ] 421 422 deps = [ ":libwm" ] 423 innerapi_tags = [ "ndk" ] 424 425 external_deps = [ 426 "c_utils:utils", 427 "hilog:libhilog", 428 "input:libmmi-client", 429 "input:oh_input_manager", 430 ] 431 432 part_name = "window_manager" 433 subsystem_name = "window" 434} 435