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("//build/ohos.gni") 15import("../../accessibility.gni") 16import("../../appgallery.gni") 17import("../../av_session.gni") 18import("../../bluetooth_part.gni") 19import("../../config.gni") 20 21group("audio_policy_packages") { 22 deps = [ 23 ":audio_affinity_config", 24 ":audio_converter_config", 25 ":audio_device_config", 26 ":audio_interrupt_policy_config", 27 ":audio_policy_service", 28 ":audio_strategy_router", 29 ":audio_usage_strategy", 30 ":audio_volume_config", 31 "safe_volume_notification:audio_safe_volume_notification_impl", 32 ] 33 34 if (audio_framework_feature_dtmf_tone) { 35 deps += [ ":audio_tone_dtmf_config" ] 36 } 37} 38 39config("audio_policy_public_config") { 40 include_dirs = [ 41 "common/include", 42 "client/include", 43 "server/include", 44 "server/include/service", 45 "server/include/service/common", 46 "server/include/service/config", 47 "server/include/service/effect", 48 "server/include/service/interface", 49 "server/include/service/listener", 50 "server/include/service/manager", 51 "server/include/service/manager/pnp_server", 52 "server/include/service/routers", 53 "server/include/service/spatialization", 54 "server/src/interface", 55 "server/src/service/concurrency", 56 "server/src/service/interrupt", 57 "server/src/service/session", 58 "safe_volume_notification/include", 59 "../audio_service/client/include", 60 "../audio_service/common/include", 61 "../../frameworks/native/audioinnercall/include", 62 "../../frameworks/native/audiorenderer/include", 63 "../../frameworks/native/audioadapter/include", 64 "../../frameworks/native/audiopolicy/include", 65 "../../frameworks/native/audioutils/include", 66 "../../frameworks/native/bluetoothclient", 67 "../../interfaces/inner_api/native/audiocommon/include", 68 "../../interfaces/inner_api/native/audiomanager/include", 69 ] 70 71 cflags = [ 72 "-Wall", 73 "-Werror", 74 ] 75 76 if (target_cpu == "arm") { 77 cflags += [ "-DBINDER_IPC_32BIT" ] 78 } 79 80 if (accessibility_enable == true) { 81 cflags += [ "-DACCESSIBILITY_ENABLE" ] 82 } 83 84 if (bluetooth_part_enable == true) { 85 cflags += [ "-DBLUETOOTH_ENABLE" ] 86 } 87 88 if (avsession_part_enable == true) { 89 cflags += [ "-DAVSESSION_ENABLE" ] 90 } 91 92 ldflags = [ "-Wl" ] 93} 94 95ohos_shared_library("audio_setting_provider") { 96 stack_protector_ret = true 97 sanitize = { 98 cfi = true 99 cfi_cross_dso = true 100 cfi_vcall_icall_only = true 101 debug = false 102 } 103 install_enable = true 104 105 include_dirs = [ 106 "../../services/audio_policy/server/include/service/manager", 107 "../../interfaces/inner_api/native/audiocommon/include", 108 ] 109 110 sources = [ "server/src/service/manager/audio_setting_provider.cpp" ] 111 112 deps = [ "../../frameworks/native/audioutils:audio_utils" ] 113 114 external_deps = [ 115 "c_utils:utils", 116 "data_share:datashare_common", 117 "data_share:datashare_consumer", 118 "hilog:libhilog", 119 "ipc:ipc_single", 120 "os_account:os_account_innerkits", 121 "samgr:samgr_proxy", 122 ] 123 124 defines = [] 125 if (audio_framework_feature_support_os_account) { 126 defines += [ "SUPPORT_USER_ACCOUNT" ] 127 } 128 129 part_name = "audio_framework" 130 subsystem_name = "multimedia" 131} 132 133ohos_shared_library("audio_policy_service") { 134 stack_protector_ret = true 135 sanitize = { 136 cfi = true 137 cfi_cross_dso = true 138 cfi_vcall_icall_only = true 139 debug = false 140 } 141 install_enable = true 142 sources = [ 143 "client/src/audio_interrupt_group_info.cpp", 144 "client/src/audio_volume_group_info.cpp", 145 "server/src/audio_anahs_manager_listener_proxy.cpp", 146 "server/src/audio_client_tracker_callback_proxy.cpp", 147 "server/src/audio_concurrency_state_listener_proxy.cpp", 148 "server/src/audio_group_handle.cpp", 149 "server/src/audio_policy_client_proxy.cpp", 150 "server/src/audio_policy_manager_listener_proxy.cpp", 151 "server/src/audio_policy_manager_stub.cpp", 152 "server/src/audio_policy_server.cpp", 153 "server/src/audio_policy_server_handler.cpp", 154 "server/src/audio_routing_manager_listener_proxy.cpp", 155 "server/src/audio_spatialization_state_change_listener_proxy.cpp", 156 "server/src/audio_stream_collector.cpp", 157 "server/src/service/audio_affinity_manager.cpp", 158 "server/src/service/audio_device_manager.cpp", 159 "server/src/service/audio_policy_service.cpp", 160 "server/src/service/audio_state_manager.cpp", 161 "server/src/service/concurrency/audio_concurrency_service.cpp", 162 "server/src/service/config/audio_adapter_info.cpp", 163 "server/src/service/config/audio_affinity_parser.cpp", 164 "server/src/service/config/audio_concurrency_parser.cpp", 165 "server/src/service/config/audio_converter_parser.cpp", 166 "server/src/service/config/audio_device_parser.cpp", 167 "server/src/service/config/audio_focus_parser.cpp", 168 "server/src/service/config/audio_policy_parser.cpp", 169 "server/src/service/config/audio_strategy_router_parser.cpp", 170 "server/src/service/config/audio_usage_strategy_parser.cpp", 171 "server/src/service/config/audio_volume_parser.cpp", 172 "server/src/service/data_share_observer_callback.cpp", 173 "server/src/service/device_init_callback.cpp", 174 "server/src/service/effect/audio_effect_config_parser.cpp", 175 "server/src/service/effect/audio_effect_manager.cpp", 176 "server/src/service/interrupt/audio_interrupt_service.cpp", 177 "server/src/service/listener/device_status_listener.cpp", 178 "server/src/service/listener/power_state_listener.cpp", 179 "server/src/service/manager/audio_adapter_manager.cpp", 180 "server/src/service/manager/audio_adapter_manager_handler.cpp", 181 "server/src/service/manager/client_type_manager.cpp", 182 "server/src/service/manager/client_type_manager_handler.cpp", 183 "server/src/service/manager/pnp_server/audio_input_thread.cpp", 184 "server/src/service/manager/pnp_server/audio_pnp_server.cpp", 185 "server/src/service/manager/pnp_server/audio_socket_thread.cpp", 186 "server/src/service/manager/volume_data_maintainer.cpp", 187 "server/src/service/routers/app_select_router.cpp", 188 "server/src/service/routers/audio_router_center.cpp", 189 "server/src/service/routers/cockpit_phone_router.cpp", 190 "server/src/service/routers/default_router.cpp", 191 "server/src/service/routers/package_filter_router.cpp", 192 "server/src/service/routers/pair_device_router.cpp", 193 "server/src/service/routers/privacy_priority_router.cpp", 194 "server/src/service/routers/public_priority_router.cpp", 195 "server/src/service/routers/stream_filter_router.cpp", 196 "server/src/service/routers/user_select_router.cpp", 197 "server/src/service/session/audio_session.cpp", 198 "server/src/service/session/audio_session_service.cpp", 199 "server/src/service/session/audio_session_timer.cpp", 200 "server/src/service/spatialization/audio_spatialization_service.cpp", 201 ] 202 203 defines = [] 204 if (audio_framework_feature_double_pnp_detect) { 205 defines += [ "AUDIO_DOUBLE_PNP_DETECT" ] 206 } 207 208 if (build_variant == "user") { 209 defines += [ "AUDIO_BUILD_VARIANT_USER" ] 210 } else if (build_variant == "root") { 211 defines += [ "AUDIO_BUILD_VARIANT_ROOT" ] 212 } 213 214 if (audio_framework_feature_support_os_account) { 215 defines += [ "SUPPORT_USER_ACCOUNT" ] 216 } 217 218 if (audio_framework_feature_dtmf_tone) { 219 sources += [ "server/src/service/config/audio_tone_parser.cpp" ] 220 defines += [ "FEATURE_DTMF_TONE" ] 221 } 222 223 public_configs = [ ":audio_policy_public_config" ] 224 225 deps = [ 226 "../../frameworks/native/audioadapter:pulse_audio_service_adapter", 227 "../../frameworks/native/audioinnercall:audio_inner_call", 228 "../../frameworks/native/audioutils:audio_utils", 229 "../audio_policy:audio_config.para", 230 "../audio_policy:audio_config.para.dac", 231 "../audio_policy:audio_setting_provider", 232 "../audio_service:audio_client", 233 "../audio_service:audio_common", 234 ] 235 236 external_deps = [ 237 "ability_base:session_info", 238 "ability_base:want", 239 "ability_base:zuri", 240 "ability_runtime:ability_connect_callback_stub", 241 "ability_runtime:ability_context_native", 242 "ability_runtime:app_context", 243 "ability_runtime:dataobs_manager", 244 "ability_runtime:extension_manager", 245 "access_token:libaccesstoken_sdk", 246 "access_token:libprivacy_sdk", 247 "access_token:libtokenid_sdk", 248 "access_token:libtokensetproc_shared", 249 "bounds_checking_function:libsec_shared", 250 "bundle_framework:appexecfwk_base", 251 "bundle_framework:appexecfwk_core", 252 "c_utils:utils", 253 "data_share:datashare_common", 254 "data_share:datashare_consumer", 255 "drivers_interface_audio:libaudio_proxy_4.0", 256 "eventhandler:libeventhandler", 257 "hdf_core:libhdf_host", 258 "hdf_core:libhdf_ipc_adapter", 259 "hdf_core:libhdf_utils", 260 "hdf_core:libhdi", 261 "hdf_core:libpub_utils", 262 "hilog:libhilog", 263 "hisysevent:libhisysevent", 264 "init:libbegetutil", 265 "ipc:ipc_single", 266 "kv_store:distributeddata_inner", 267 "media_foundation:media_monitor_client", 268 "media_foundation:media_monitor_common", 269 "os_account:os_account_innerkits", 270 "power_manager:power_setting", 271 "power_manager:powermgr_client", 272 "pulseaudio:pulse", 273 "safwk:system_ability_fwk", 274 "samgr:samgr_proxy", 275 ] 276 277 public_external_deps = [ 278 "libxml2:libxml2", 279 "openssl:libcrypto_shared", 280 ] 281 282 if (audio_framework_config_policy_enable) { 283 defines += [ "USE_CONFIG_POLICY" ] 284 external_deps += [ "config_policy:configpolicy_util" ] 285 } 286 287 if (appgallery_part_enable == true) { 288 defines += [ "FEATURE_APPGALLERY" ] 289 } 290 291 if (bluetooth_part_enable == true) { 292 deps += [ "../../frameworks/native/bluetoothclient:audio_bluetooth_client" ] 293 external_deps += [ "bluetooth:btframework" ] 294 } 295 296 if (avsession_part_enable == true) { 297 external_deps += [ 298 "ability_base:want", 299 "ability_runtime:wantagent_innerkits", 300 "av_session:avsession_client", 301 "input:libmmi-client", 302 ] 303 } 304 305 if (audio_framework_feature_input) { 306 defines += [ "FEATURE_MULTIMODALINPUT_INPUT" ] 307 external_deps += [ "input:libmmi-client" ] 308 } 309 310 if (audio_framework_feature_device_manager) { 311 defines += [ "FEATURE_DEVICE_MANAGER" ] 312 external_deps += [ "device_manager:devicemanagersdk" ] 313 } 314 315 subsystem_name = "multimedia" 316 part_name = "audio_framework" 317} 318 319ohos_prebuilt_etc("audio_interrupt_policy_config") { 320 source = "server/config/audio_interrupt_policy_config.xml" 321 322 subsystem_name = "multimedia" 323 relative_install_dir = "audio" 324 part_name = "audio_framework" 325} 326 327ohos_prebuilt_etc("audio_strategy_router") { 328 source = "server/config/audio_strategy_router.xml" 329 330 subsystem_name = "multimedia" 331 relative_install_dir = "audio" 332 part_name = "audio_framework" 333} 334 335ohos_prebuilt_etc("audio_usage_strategy") { 336 source = "server/config/audio_usage_strategy.xml" 337 338 subsystem_name = "multimedia" 339 relative_install_dir = "audio" 340 part_name = "audio_framework" 341} 342 343ohos_prebuilt_etc("audio_device_config") { 344 source = "server/config/audio_device_privacy.xml" 345 346 subsystem_name = "multimedia" 347 relative_install_dir = "audio" 348 part_name = "audio_framework" 349} 350 351ohos_prebuilt_etc("audio_volume_config") { 352 source = "server/config/audio_volume_config.xml" 353 354 subsystem_name = "multimedia" 355 relative_install_dir = "audio" 356 part_name = "audio_framework" 357} 358 359ohos_prebuilt_etc("audio_affinity_config") { 360 source = "server/config/audio_affinity_config.xml" 361 362 subsystem_name = "multimedia" 363 relative_install_dir = "audio" 364 part_name = "audio_framework" 365} 366 367if (audio_framework_feature_dtmf_tone) { 368 ohos_prebuilt_etc("audio_tone_dtmf_config") { 369 source = "server/config/audio_tone_dtmf_config.xml" 370 371 subsystem_name = "multimedia" 372 relative_install_dir = "audio" 373 part_name = "audio_framework" 374 } 375} 376 377ohos_prebuilt_etc("audio_converter_config") { 378 source = "server/config/audio_converter_config.xml" 379 380 subsystem_name = "multimedia" 381 relative_install_dir = "audio" 382 part_name = "audio_framework" 383} 384 385ohos_prebuilt_etc("audio_config.para") { 386 source = "etc/audio_config.para" 387 subsystem_name = "multimedia" 388 part_name = "audio_framework" 389 module_install_dir = "etc/param" 390} 391 392ohos_prebuilt_etc("audio_config.para.dac") { 393 source = "etc/audio_config.para.dac" 394 subsystem_name = "multimedia" 395 part_name = "audio_framework" 396 module_install_dir = "etc/param" 397} 398 399config("audio_policy_client_config") { 400 include_dirs = [ 401 "client/include", 402 "common/include", 403 "server/include", 404 "../audio_service/client/include", 405 "../audio_service/common/include", 406 "../../frameworks/native/audiopolicy/include", 407 "../../interfaces/inner_api/native/audiocommon/include", 408 "../../interfaces/inner_api/native/audiomanager/include", 409 ] 410 411 cflags = [ 412 "-Wall", 413 "-Werror", 414 ] 415 416 if (target_cpu == "arm") { 417 cflags += [ "-DBINDER_IPC_32BIT" ] 418 } 419} 420 421ohos_shared_library("audio_policy_client") { 422 branch_protector_ret = "pac_ret" 423 install_enable = true 424 425 defines = [] 426 if (audio_framework_feature_dtmf_tone) { 427 defines += [ "FEATURE_DTMF_TONE" ] 428 } 429 430 sources = [ 431 "../audio_service/client/src/audio_device_descriptor.cpp", 432 "../audio_service/client/src/microphone_descriptor.cpp", 433 "client/src/audio_anahs_manager_listener_stub.cpp", 434 "client/src/audio_client_tracker_callback_stub.cpp", 435 "client/src/audio_concurrency_state_listener_stub.cpp", 436 "client/src/audio_policy_client_stub.cpp", 437 "client/src/audio_policy_client_stub_impl.cpp", 438 "client/src/audio_policy_manager.cpp", 439 "client/src/audio_policy_manager_listener_stub.cpp", 440 "client/src/audio_routing_manager_listener_stub.cpp", 441 "client/src/audio_spatialization_state_change_listener_stub.cpp", 442 "client/src/audio_volume_group_info.cpp", 443 "client/src/proxy/audio_policy_callback_proxy.cpp", 444 "client/src/proxy/audio_policy_microphone_proxy.cpp", 445 "client/src/proxy/audio_policy_proxy.cpp", 446 "client/src/proxy/audio_policy_volume_proxy.cpp", 447 ] 448 449 deps = [ "../../frameworks/native/audioutils:audio_utils" ] 450 451 public_configs = [ ":audio_policy_client_config" ] 452 453 include_dirs = [ "../../frameworks/native/audioutils/include" ] 454 455 external_deps = [ 456 "bounds_checking_function:libsec_shared", 457 "c_utils:utils", 458 "eventhandler:libeventhandler", 459 "hilog:libhilog", 460 "init:libbegetutil", 461 "ipc:ipc_single", 462 "samgr:samgr_proxy", 463 ] 464 subsystem_name = "multimedia" 465 innerapi_tags = [ "platformsdk" ] 466 part_name = "audio_framework" 467 468 ldflags = [ "-Wl,-Bsymbolic" ] 469} 470 471group("audio_policy_test_packages") { 472 testonly = true 473 474 deps = [ 475 ":audio_dump_test", 476 ":audio_policy_test", 477 "test:audio_policy_unittest_packages", 478 ] 479} 480 481ohos_executable("audio_dump_test") { 482 install_enable = false 483 sanitize = { 484 cfi = true 485 cfi_cross_dso = true 486 cfi_vcall_icall_only = true 487 debug = false 488 } 489 sources = [ "test/example/audio_dump_test.cpp" ] 490 491 configs = [ ":audio_policy_client_config" ] 492 493 deps = [ 494 "../audio_policy:audio_policy_client", 495 "../audio_service:audio_client", 496 ] 497 498 include_dirs = [] 499 500 external_deps = [ 501 "bounds_checking_function:libsec_shared", 502 "c_utils:utils", 503 "hilog:libhilog", 504 "ipc:ipc_single", 505 ] 506 507 part_name = "audio_framework" 508 subsystem_name = "multimedia" 509} 510 511ohos_executable("audio_policy_test") { 512 install_enable = false 513 514 sources = [ "test/example/audio_policy_test.cpp" ] 515 516 configs = [ ":audio_policy_client_config" ] 517 518 deps = [ 519 "../audio_policy:audio_policy_client", 520 "../audio_service:audio_client", 521 ] 522 523 include_dirs = [] 524 525 external_deps = [ 526 "bounds_checking_function:libsec_shared", 527 "c_utils:utils", 528 "hilog:libhilog", 529 "ipc:ipc_single", 530 ] 531 532 part_name = "audio_framework" 533 subsystem_name = "multimedia" 534} 535