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