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