1# Copyright (c) 2022-2025 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("../../av_session_ohos_sources.gni") 16import("../../bluetooth_part.gni") 17import("../../castplus_cast_engine_part.gni") 18import("../../config.gni") 19import("../../efficiency_manager_part.gni") 20 21group("avsession_server") { 22 deps = [ 23 ":avsession_dynamic_insight", 24 ":avsession_item", 25 ":avsession_service", 26 "../../sa_profile:avsession_sa_profile", 27 "../etc:avsession_service.rc", 28 "../etc:ohos.para.dac", 29 ] 30} 31 32group("avsession_server_static") { 33 deps = [ 34 ":avsession_dynamic_insight", 35 ":avsession_item_static", 36 ":avsession_service_static", 37 "../../sa_profile:avsession_sa_profile", 38 "../etc:avsession_service.rc", 39 "../etc:ohos.para.dac", 40 ] 41} 42 43av_session_ohos_library("avsession_service") { 44 stack_protector_ret = true 45 install_enable = true 46 sanitize = { 47 boundary_sanitize = true 48 cfi = true 49 cfi_cross_dso = true 50 debug = false 51 integer_overflow = true 52 ubsan = true 53 } 54 ipc_sources = [ 55 "ipc/proxy/session_listener_proxy.cpp", 56 "ipc/stub/avsession_callback_stub.cpp", 57 "ipc/stub/avsession_service_stub.cpp", 58 ] 59 60 service_sources = [ 61 "server/audio_device_manager.cpp", 62 "server/avsession_dumper.cpp", 63 "server/avsession_service.cpp", 64 "server/avsession_service_ext.cpp", 65 "server/avsession_users_manager.cpp", 66 "server/background_audio_controller.cpp", 67 "server/focus_session_strategy.cpp", 68 "server/migrate/migrate_avsession_manager.cpp", 69 "server/migrate/migrate_avsession_proxy.cpp", 70 "server/migrate/migrate_avsession_server.cpp", 71 "server/migrate/migrate_avsession_server_for_next.cpp", 72 "server/session_stack.cpp", 73 "server/softbus/softbus_distributed_data_manager.cpp", 74 "server/softbus/softbus_session.cpp", 75 "server/softbus/softbus_session_manager.cpp", 76 "server/softbus/softbus_session_proxy.cpp", 77 "server/softbus/softbus_session_server.cpp", 78 ] 79 80 adapter_sources = [ 81 "adapter/ability_connect_helper.cpp", 82 "adapter/ability_manager_adapter.cpp", 83 "adapter/account_manager_adapter.cpp", 84 "adapter/app_manager_adapter.cpp", 85 "adapter/audio_adapter.cpp", 86 "adapter/bundle_status_adapter.cpp", 87 "adapter/collaboration_manager.cpp", 88 "adapter/key_event_adapter.cpp", 89 "adapter/params_config_operator.cpp", 90 "adapter/session_xcollie.cpp", 91 ] 92 93 sources = ipc_sources + adapter_sources + service_sources 94 95 include_dirs = [ 96 "ipc/base", 97 "ipc/proxy", 98 "ipc/stub", 99 "adapter", 100 "server", 101 "server/migrate", 102 "server/softbus", 103 "server/remote", 104 "../../frameworks/native/session/include", 105 "../../interfaces/inner_api/native/session/include", 106 ] 107 108 cflags = [ 109 "-fPIC", 110 "-fdata-sections", 111 "-ffunction-sections", 112 "-fstack-protector-strong", 113 "-fno-asynchronous-unwind-tables", 114 "-fno-unwind-tables", 115 "-Os", 116 ] 117 118 if (multimedia_av_session_enable_background_audio_control) { 119 cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ] 120 } 121 122 if (!use_libfuzzer) { 123 cflags += [ "-flto" ] 124 ldflags = [ 125 "-flto", 126 "-Wl,--gc-sections", 127 ] 128 } 129 cflags_cc = cflags 130 cflags_cc += [ "-fvisibility-inlines-hidden" ] 131 132 defines = [] 133 if (target_cpu == "arm64" || is_emulator) { 134 system_lib_path = "\"/system/lib64/\"" 135 } else { 136 system_lib_path = "\"/system/lib/\"" 137 } 138 defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ] 139 140 deps = [ 141 "./../../frameworks/common:avsession_common", 142 "./../../utils:avsession_utils", 143 "./../session:avsession_item", 144 ] 145 146 external_deps = [ 147 "ability_base:base", 148 "ability_base:zuri", 149 "ability_runtime:app_manager", 150 "ability_runtime:wantagent_innerkits", 151 "access_token:libaccesstoken_sdk", 152 "access_token:libtokenid_sdk", 153 "access_token:libtokensetproc_shared", 154 "audio_framework:audio_client", 155 "audio_framework:audio_foundation", 156 "background_task_mgr:bgtaskmgr_innerkits", 157 "bundle_framework:appexecfwk_base", 158 "bundle_framework:appexecfwk_core", 159 "c_utils:utils", 160 "device_manager:devicemanagersdk", 161 "distributed_notification_service:ans_innerkits", 162 "dsoftbus:softbus_client", 163 "hilog:libhilog", 164 "image_framework:image_native", 165 "init:libbegetutil", 166 "input:libmmi-client", 167 "ipc:ipc_single", 168 "safwk:system_ability_fwk", 169 "samgr:samgr_proxy", 170 "window_manager:libdm_lite", 171 ] 172 173 if (castplus_cast_engine_enable) { 174 cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ] 175 external_deps += [ "cast_engine:cast_engine_client" ] 176 deps += [ 177 "../../frameworks/native/session:avsession_cast_client", 178 "./../session:avsession_cast_item", 179 "./../session:avsession_router", 180 ] 181 } 182 183 if (bluetooth_part_enable) { 184 cflags += [ "-DBLUETOOTH_ENABLE" ] 185 external_deps += [ "bluetooth:btframework" ] 186 } 187 188 if (efficiency_manager_enable_in_avsession) { 189 cflags += [ "-DEFFICIENCY_MANAGER_ENABLE" ] 190 } 191 192 if (multimedia_av_session_enable_trace_control) { 193 cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ] 194 external_deps += [ "hitrace:hitrace_meter" ] 195 } 196 197 if (multimedia_av_session_enable_sysevent_control) { 198 cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ] 199 external_deps += [ "hisysevent:libhisysevent" ] 200 } 201 202 if (multimedia_av_session_enable_hicollie) { 203 external_deps += [ "hicollie:libhicollie" ] 204 defines += [ "HICOLLIE_ENABLE" ] 205 } 206 207 if (av_session_enable_start_stop_on_demand) { 208 defines += [ "START_STOP_ON_DEMAND_ENABLE" ] 209 } 210 211 if (use_libfuzzer || use_clang_coverage) { 212 defines += [ "TEST_COVERAGE" ] 213 } 214 215 public_external_deps = [ 216 "data_object:distributeddataobject_impl", 217 "jsoncpp:jsoncpp", 218 "openssl:libcrypto_shared", 219 "relational_store:native_rdb", 220 ] 221 222 subsystem_name = "multimedia" 223 part_name = "av_session" 224 version_script = "avsession_service.versionscript" 225} 226 227if (castplus_cast_engine_enable) { 228 av_session_ohos_library("avsession_router") { 229 install_enable = true 230 sanitize = { 231 boundary_sanitize = true 232 cfi = true 233 cfi_cross_dso = true 234 debug = false 235 integer_overflow = true 236 ubsan = true 237 } 238 ipc_sources = [] 239 240 service_sources = [ 241 "server/avcast_provider_manager.cpp", 242 "server/avrouter.cpp", 243 "server/avrouter_impl.cpp", 244 "server/hw_cast_data_source_descriptor.cpp", 245 "server/hw_cast_provider.cpp", 246 "server/hw_cast_provider_session.cpp", 247 "server/hw_cast_stream_player.cpp", 248 ] 249 250 adapter_sources = [] 251 252 sources = ipc_sources + adapter_sources + service_sources 253 254 include_dirs = [ 255 "./../../frameworks/native/session/include", 256 "./../../interfaces/inner_api/native/session/include", 257 "./adapter", 258 "./server", 259 "./ipc/stub", 260 ] 261 262 cflags = [ 263 "-fPIC", 264 "-fdata-sections", 265 "-ffunction-sections", 266 "-fstack-protector-strong", 267 "-fno-asynchronous-unwind-tables", 268 "-fno-unwind-tables", 269 "-Os", 270 ] 271 272 if (multimedia_av_session_enable_background_audio_control) { 273 cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ] 274 } 275 276 if (!use_libfuzzer) { 277 cflags += [ "-flto" ] 278 ldflags = [ 279 "-flto", 280 "-Wl,--gc-sections", 281 ] 282 } 283 cflags_cc = cflags 284 cflags_cc += [ "-fvisibility-inlines-hidden" ] 285 286 defines = [] 287 if (target_cpu == "arm64" || is_emulator) { 288 system_lib_path = "\"/system/lib64/\"" 289 } else { 290 system_lib_path = "\"/system/lib/\"" 291 } 292 defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ] 293 294 deps = [ 295 "../../frameworks/common:avsession_common", 296 "../../utils:avsession_utils", 297 ] 298 299 external_deps = [ 300 "ability_base:base", 301 "ability_base:want", 302 "ability_runtime:app_manager", 303 "ability_runtime:wantagent_innerkits", 304 "access_token:libaccesstoken_sdk", 305 "access_token:libtokenid_sdk", 306 "audio_framework:audio_client", 307 "bundle_framework:appexecfwk_base", 308 "bundle_framework:appexecfwk_core", 309 "c_utils:utils", 310 "data_object:distributeddataobject_impl", 311 "device_manager:devicemanagersdk", 312 "graphic_surface:surface", 313 "hilog:libhilog", 314 "image_framework:image_native", 315 "input:libmmi-client", 316 "ipc:ipc_single", 317 "safwk:system_ability_fwk", 318 "samgr:samgr_proxy", 319 ] 320 321 if (castplus_cast_engine_enable) { 322 cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ] 323 external_deps += [ "cast_engine:cast_engine_client" ] 324 service_sources += [ "" ] 325 } 326 327 if (multimedia_av_session_enable_trace_control) { 328 cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ] 329 external_deps += [ "hitrace:hitrace_meter" ] 330 } 331 if (multimedia_av_session_enable_sysevent_control) { 332 cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ] 333 external_deps += [ "hisysevent:libhisysevent" ] 334 } 335 336 subsystem_name = "multimedia" 337 part_name = "av_session" 338 version_script = "avsession_router.versionscript" 339 } 340} 341 342ohos_shared_library("avsession_dynamic_insight") { 343 install_enable = true 344 sanitize = { 345 boundary_sanitize = true 346 cfi = true 347 cfi_cross_dso = true 348 debug = false 349 integer_overflow = true 350 ubsan = true 351 } 352 353 sources = [ "adapter/avsession_dynamic_insight.cpp" ] 354 355 include_dirs = [ 356 "./../../frameworks/native/session/include", 357 "./../../interfaces/inner_api/native/session/include", 358 "./adapter", 359 "ipc/base", 360 ] 361 362 cflags = [ 363 "-fPIC", 364 "-fdata-sections", 365 "-ffunction-sections", 366 "-fstack-protector-strong", 367 "-fno-asynchronous-unwind-tables", 368 "-fno-unwind-tables", 369 ] 370 371 if (!use_libfuzzer) { 372 cflags += [ "-flto" ] 373 ldflags = [ 374 "-flto", 375 "-Wl,--gc-sections", 376 ] 377 } 378 cflags_cc = cflags 379 cflags_cc += [ "-fvisibility-inlines-hidden" ] 380 381 deps = [ 382 "../../frameworks/common:avsession_common", 383 "../../utils:avsession_utils", 384 ] 385 386 external_deps = [ 387 "ability_base:base", 388 "ability_base:want", 389 "ability_runtime:ability_manager", 390 "bundle_framework:appexecfwk_base", 391 "bundle_framework:appexecfwk_core", 392 "c_utils:utils", 393 "hilog:libhilog", 394 "ipc:ipc_single", 395 "samgr:samgr_proxy", 396 ] 397 398 subsystem_name = "multimedia" 399 part_name = "av_session" 400} 401 402av_session_ohos_library("avsession_item") { 403 install_enable = true 404 sanitize = { 405 boundary_sanitize = true 406 cfi = true 407 cfi_cross_dso = true 408 debug = false 409 integer_overflow = true 410 ubsan = true 411 } 412 ipc_sources = [ 413 "ipc/proxy/avcontroller_callback_proxy.cpp", 414 "ipc/proxy/avsession_callback_proxy.cpp", 415 "ipc/stub/avsession_controller_stub.cpp", 416 "ipc/stub/avsession_stub.cpp", 417 ] 418 419 service_sources = [ 420 "server/avcontroller_item.cpp", 421 "server/avsession_item.cpp", 422 "server/hw_cast_display_listener.cpp", 423 "server/remote/json_utils.cpp", 424 "server/remote/remote_session_command_process.cpp", 425 "server/remote/remote_session_sink_proxy.cpp", 426 "server/remote/remote_session_source_proxy.cpp", 427 ] 428 429 adapter_sources = [ 430 "adapter/bundle_status_adapter.cpp", 431 "adapter/collaboration_manager.cpp", 432 "adapter/command_send_limit.cpp", 433 "adapter/plugin_lib.cpp", 434 "adapter/session_xcollie.cpp", 435 ] 436 437 sources = ipc_sources + adapter_sources + service_sources 438 439 include_dirs = [ 440 "./../../frameworks/native/session/include", 441 "./../../interfaces/inner_api/native/session/include", 442 "./ipc/base", 443 "./ipc/proxy", 444 "./ipc/stub", 445 "./adapter", 446 "./server", 447 "./server/remote", 448 ] 449 450 cflags = [ 451 "-fPIC", 452 "-fdata-sections", 453 "-ffunction-sections", 454 "-fstack-protector-strong", 455 "-fno-asynchronous-unwind-tables", 456 "-fno-unwind-tables", 457 "-Os", 458 ] 459 460 if (multimedia_av_session_enable_background_audio_control) { 461 cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ] 462 } 463 464 if (!use_libfuzzer) { 465 cflags += [ "-flto" ] 466 ldflags = [ 467 "-flto", 468 "-Wl,--gc-sections", 469 ] 470 } 471 cflags_cc = cflags 472 cflags_cc += [ "-fvisibility-inlines-hidden" ] 473 474 defines = [] 475 if (target_cpu == "arm64" || is_emulator) { 476 system_lib_path = "\"/system/lib64/\"" 477 } else { 478 system_lib_path = "\"/system/lib/\"" 479 } 480 defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ] 481 482 deps = [ 483 "../../frameworks/common:avsession_common", 484 "../../frameworks/native/session:avsession_client", 485 "../../utils:avsession_utils", 486 ] 487 488 external_deps = [ 489 "ability_base:base", 490 "ability_base:want", 491 "ability_runtime:app_manager", 492 "ability_runtime:wantagent_innerkits", 493 "access_token:libaccesstoken_sdk", 494 "access_token:libtokenid_sdk", 495 "access_token:libtokensetproc_shared", 496 "audio_framework:audio_client", 497 "background_task_mgr:bgtaskmgr_innerkits", 498 "bundle_framework:appexecfwk_base", 499 "bundle_framework:appexecfwk_core", 500 "c_utils:utils", 501 "device_manager:devicemanagersdk", 502 "graphic_surface:surface", 503 "hilog:libhilog", 504 "input:libmmi-client", 505 "ipc:ipc_single", 506 "safwk:system_ability_fwk", 507 "samgr:samgr_proxy", 508 "window_manager:libdm_lite", 509 ] 510 511 if (castplus_cast_engine_enable) { 512 cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ] 513 external_deps += [ "cast_engine:cast_engine_client" ] 514 deps += [ 515 "../../frameworks/native/session:avsession_cast_client", 516 "./../session:avsession_cast_item", 517 "./../session:avsession_router", 518 ] 519 } 520 521 if (bluetooth_part_enable) { 522 cflags += [ "-DBLUETOOTH_ENABLE" ] 523 external_deps += [ "bluetooth:btframework" ] 524 } 525 526 if (multimedia_av_session_enable_trace_control) { 527 cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ] 528 external_deps += [ "hitrace:hitrace_meter" ] 529 } 530 if (multimedia_av_session_enable_sysevent_control) { 531 cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ] 532 external_deps += [ "hisysevent:libhisysevent" ] 533 } 534 535 if (multimedia_av_session_enable_hicollie) { 536 external_deps += [ "hicollie:libhicollie" ] 537 defines += [ "HICOLLIE_ENABLE" ] 538 } 539 540 if (efficiency_manager_enable_in_avsession) { 541 cflags += [ "-DEFFICIENCY_MANAGER_ENABLE" ] 542 } 543 544 if (use_libfuzzer || use_clang_coverage) { 545 defines += [ "TEST_COVERAGE" ] 546 } 547 548 public_external_deps = [ 549 "data_object:distributeddataobject_impl", 550 "jsoncpp:jsoncpp", 551 "openssl:libcrypto_shared", 552 "relational_store:native_rdb", 553 ] 554 555 subsystem_name = "multimedia" 556 part_name = "av_session" 557 version_script = "avsession_item.versionscript" 558} 559 560av_session_ohos_library("avsession_cast_item") { 561 install_enable = true 562 sanitize = { 563 boundary_sanitize = true 564 cfi = true 565 cfi_cross_dso = true 566 debug = false 567 integer_overflow = true 568 ubsan = true 569 } 570 ipc_sources = [ 571 "ipc/proxy/avcast_controller_callback_proxy.cpp", 572 "ipc/stub/avcast_controller_stub.cpp", 573 ] 574 575 service_sources = [ "server/avcast_controller_item.cpp" ] 576 577 adapter_sources = [ 578 "adapter/bundle_status_adapter.cpp", 579 "adapter/session_xcollie.cpp", 580 ] 581 582 sources = ipc_sources + adapter_sources + service_sources 583 584 include_dirs = [ 585 "./../../frameworks/native/session/include", 586 "./../../interfaces/inner_api/native/session/include", 587 "./ipc/base", 588 "./ipc/proxy", 589 "./ipc/stub", 590 "./adapter", 591 "./server", 592 "./server/remote", 593 ] 594 595 cflags = [ 596 "-fPIC", 597 "-fdata-sections", 598 "-ffunction-sections", 599 "-fstack-protector-strong", 600 "-fno-asynchronous-unwind-tables", 601 "-fno-unwind-tables", 602 "-Os", 603 ] 604 605 if (multimedia_av_session_enable_background_audio_control) { 606 cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ] 607 } 608 609 if (!use_libfuzzer) { 610 cflags += [ "-flto" ] 611 ldflags = [ 612 "-flto", 613 "-Wl,--gc-sections", 614 ] 615 } 616 cflags_cc = cflags 617 cflags_cc += [ "-fvisibility-inlines-hidden" ] 618 619 defines = [] 620 if (target_cpu == "arm64" || is_emulator) { 621 system_lib_path = "\"/system/lib64/\"" 622 } else { 623 system_lib_path = "\"/system/lib/\"" 624 } 625 defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ] 626 627 deps = [ 628 "../../frameworks/common:avsession_common", 629 "../../utils:avsession_utils", 630 ] 631 632 external_deps = [ 633 "ability_base:base", 634 "ability_base:want", 635 "ability_runtime:app_manager", 636 "ability_runtime:wantagent_innerkits", 637 "access_token:libaccesstoken_sdk", 638 "access_token:libtokenid_sdk", 639 "audio_framework:audio_client", 640 "bundle_framework:appexecfwk_base", 641 "bundle_framework:appexecfwk_core", 642 "c_utils:utils", 643 "data_object:distributeddataobject_impl", 644 "device_manager:devicemanagersdk", 645 "graphic_surface:surface", 646 "hilog:libhilog", 647 "input:libmmi-client", 648 "ipc:ipc_single", 649 "safwk:system_ability_fwk", 650 "samgr:samgr_proxy", 651 ] 652 653 if (castplus_cast_engine_enable) { 654 cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ] 655 external_deps += [ "cast_engine:cast_engine_client" ] 656 deps += [ "./../session:avsession_router" ] 657 } 658 659 if (multimedia_av_session_enable_trace_control) { 660 cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ] 661 external_deps += [ "hitrace:hitrace_meter" ] 662 } 663 if (multimedia_av_session_enable_sysevent_control) { 664 cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ] 665 external_deps += [ "hisysevent:libhisysevent" ] 666 } 667 668 if (multimedia_av_session_enable_hicollie) { 669 external_deps += [ "hicollie:libhicollie" ] 670 defines += [ "HICOLLIE_ENABLE" ] 671 } 672 673 public_external_deps = [ 674 "jsoncpp:jsoncpp", 675 "openssl:libcrypto_shared", 676 ] 677 678 subsystem_name = "multimedia" 679 part_name = "av_session" 680 version_script = "avsession_cast_item.versionscript" 681} 682