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_dump", 24 ":audio_effect_config", 25 ":audio_interrupt_policy_config", 26 ":audio_policy_init", 27 ":audio_policy_service", 28 ":audio_volume_config", 29 ] 30 31 if (audio_framework_feature_dtmf_tone) { 32 deps += [ ":audio_tone_dtmf_config" ] 33 } 34} 35 36ohos_prebuilt_etc("audio_policy_init") { 37 source = "etc/audio_policy.cfg" 38 relative_install_dir = "init" 39 part_name = "audio_framework" 40 subsystem_name = "multimedia" 41} 42 43config("audio_policy_public_config") { 44 include_dirs = [ 45 "common/include", 46 "client/include", 47 "server/include", 48 "server/include/service", 49 "server/include/service/common", 50 "server/include/service/config", 51 "server/include/service/effect", 52 "server/include/service/interface", 53 "server/include/service/listener", 54 "server/include/service/manager", 55 "../audio_service/client/include", 56 "../audio_service/common/include", 57 "../../frameworks/native/audiorenderer/include", 58 "../../frameworks/native/audioadapter/include", 59 "../../frameworks/native/audiopolicy/include", 60 "../../frameworks/native/audioutils/include", 61 "../../frameworks/native/bluetoothclient", 62 "../../interfaces/inner_api/native/audiocommon/include", 63 "../../interfaces/inner_api/native/audiomanager/include", 64 ] 65 66 cflags = [ 67 "-Wall", 68 "-Werror", 69 ] 70 71 if (target_cpu == "arm") { 72 cflags += [ "-DBINDER_IPC_32BIT" ] 73 } 74 75 if (accessibility_enable == true) { 76 cflags += [ "-DACCESSIBILITY_ENABLE" ] 77 } 78 79 if (bluetooth_part_enable == true) { 80 cflags += [ "-DBLUETOOTH_ENABLE" ] 81 } 82 83 ldflags = [ "-Wl" ] 84} 85 86ohos_shared_library("audio_dump") { 87 sanitize = { 88 cfi = true 89 cfi_cross_dso = true 90 debug = false 91 blocklist = "../../cfi_blocklist.txt" 92 } 93 install_enable = true 94 sources = [ "server/src/service/dump/audio_service_dump.cpp" ] 95 96 public_configs = [ ":audio_policy_public_config" ] 97 98 deps = [ 99 "$pulseaudio_build_path/src/pulse:pulse", 100 "//third_party/bounds_checking_function:libsec_shared", 101 ] 102 103 include_dirs = [ 104 "$pulseaudio_build_path/include", 105 "../../../../commonlibrary/c_utils/base/include", 106 "../../../../drivers/peripheral/audio/interfaces/include", 107 "../../../../foundation/communication/bluetooth/interfaces/inner_api/include", 108 "../../../../foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata/include", 109 "../../../../foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include", 110 "../../../../foundation/systemabilitymgr/safwk/services/safwk/include", 111 "../../../../utils/system/safwk/native/include", 112 "//third_party/bounds_checking_function/include", 113 "//third_party/cJSON", 114 "//third_party/libxml2/include", 115 "//third_party/pulseaudio/src", 116 "//third_party/pulseaudio/confgure/src", 117 "//third_party/pulseaudio/include", 118 ] 119 120 external_deps = [ 121 "c_utils:utils", 122 "hilog:libhilog", 123 ] 124 125 subsystem_name = "multimedia" 126 part_name = "audio_framework" 127} 128 129ohos_shared_library("audio_policy_service") { 130 sanitize = { 131 cfi = true 132 cfi_cross_dso = true 133 debug = false 134 blocklist = "../../cfi_blocklist.txt" 135 } 136 install_enable = true 137 sources = [ 138 "client/src/audio_interrupt_group_info.cpp", 139 "client/src/audio_volume_group_info.cpp", 140 "server/src/audio_capturer_state_change_listener_proxy.cpp", 141 "server/src/audio_client_tracker_callback_proxy.cpp", 142 "server/src/audio_group_handle.cpp", 143 "server/src/audio_policy_manager_listener_proxy.cpp", 144 "server/src/audio_policy_manager_stub.cpp", 145 "server/src/audio_policy_server.cpp", 146 "server/src/audio_renderer_state_change_listener_proxy.cpp", 147 "server/src/audio_ringermode_update_listener_proxy.cpp", 148 "server/src/audio_routing_manager_listener_proxy.cpp", 149 "server/src/audio_stream_collector.cpp", 150 "server/src/audio_stream_event_dispatcher.cpp", 151 "server/src/audio_volume_key_event_callback_proxy.cpp", 152 "server/src/service/audio_policy_service.cpp", 153 "server/src/service/config/audio_focus_parser.cpp", 154 "server/src/service/config/audio_volume_parser.cpp", 155 "server/src/service/config/xml_parser.cpp", 156 "server/src/service/data_share_observer_callback.cpp", 157 "server/src/service/device_init_callback.cpp", 158 "server/src/service/effect/audio_effect_config_parser.cpp", 159 "server/src/service/effect/audio_effect_manager.cpp", 160 "server/src/service/listener/device_status_listener.cpp", 161 "server/src/service/manager/audio_adapter_manager.cpp", 162 ] 163 164 defines = [] 165 if (audio_framework_feature_dtmf_tone) { 166 sources += [ "server/src/service/config/audio_tone_parser.cpp" ] 167 defines += [ "FEATURE_DTMF_TONE" ] 168 } 169 170 public_configs = [ ":audio_policy_public_config" ] 171 172 deps = [ 173 "../../frameworks/native/audioadapter:pulse_audio_service_adapter", 174 "../../frameworks/native/audioutils:audio_utils", 175 "../audio_policy:audio_config.para", 176 "../audio_policy:audio_config.para.dac", 177 "../audio_policy:audio_dump", 178 "../audio_service:audio_client", 179 "../audio_service:audio_common", 180 "//third_party/libxml2:xml2", 181 ] 182 183 include_dirs = [ 184 "$pulseaudio_build_path/include", 185 "../../../../commonlibrary/c_utils/base/include", 186 "../../../../drivers/peripheral/audio/interfaces/include", 187 "../../../../foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include", 188 "../../../../foundation/systemabilitymgr/safwk/services/safwk/include", 189 "../../../../foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata/include", 190 "../../../../foundation/distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include/", 191 "//third_party/libxml2/include", 192 "//third_party/pulseaudio/src", 193 "//third_party/pulseaudio/confgure/src", 194 "//third_party/pulseaudio/include", 195 ] 196 197 external_deps = [ 198 "ability_base:want", 199 "ability_base:zuri", 200 "ability_runtime:ability_context_native", 201 "ability_runtime:ability_manager", 202 "ability_runtime:app_context", 203 "ability_runtime:dataobs_manager", 204 "access_token:libaccesstoken_sdk", 205 "access_token:libprivacy_sdk", 206 "access_token:libtoken_setproc", 207 "access_token:libtokenid_sdk", 208 "bundle_framework:appexecfwk_base", 209 "bundle_framework:appexecfwk_core", 210 "c_utils:utils", 211 "data_share:datashare_common", 212 "data_share:datashare_consumer", 213 "device_manager:devicemanagersdk", 214 "drivers_interface_audio:audio_idl_headers", 215 "hdf_core:libhdf_ipc_adapter", 216 "hdf_core:libhdi", 217 "hdf_core:libpub_utils", 218 "hilog:libhilog", 219 "hisysevent:libhisysevent", 220 "init:libbegetutil", 221 "input:libmmi-client", 222 "ipc:ipc_single", 223 "kv_store:distributeddata_inner", 224 "safwk:system_ability_fwk", 225 "samgr:samgr_proxy", 226 ] 227 228 if (audio_framework_config_policy_enable) { 229 defines += [ "USB_CONFIG_POLICY" ] 230 external_deps += [ "config_policy:configpolicy_util" ] 231 } 232 233 if (accessibility_enable == true) { 234 sources += 235 [ "server/src/service/listener/accessibility_config_listener.cpp" ] 236 external_deps += [ "accessibility:accessibilityconfig" ] 237 } 238 239 if (bluetooth_part_enable == true) { 240 deps += [ "../../frameworks/native/bluetoothclient:audio_bluetooth_client" ] 241 external_deps += [ "bluetooth:btframework" ] 242 include_dirs += [ "../../../../foundation/communication/bluetooth/interfaces/inner_api/include" ] 243 } 244 245 subsystem_name = "multimedia" 246 part_name = "audio_framework" 247} 248 249ohos_prebuilt_etc("audio_interrupt_policy_config") { 250 source = "server/config/audio_interrupt_policy_config.xml" 251 252 subsystem_name = "multimedia" 253 relative_install_dir = "audio" 254 part_name = "audio_framework" 255} 256 257ohos_prebuilt_etc("audio_volume_config") { 258 source = "server/config/audio_volume_config.xml" 259 260 subsystem_name = "multimedia" 261 relative_install_dir = "audio" 262 part_name = "audio_framework" 263} 264 265if (audio_framework_feature_dtmf_tone) { 266 ohos_prebuilt_etc("audio_tone_dtmf_config") { 267 source = "server/config/audio_tone_dtmf_config.xml" 268 269 subsystem_name = "multimedia" 270 relative_install_dir = "audio" 271 part_name = "audio_framework" 272 } 273} 274 275ohos_prebuilt_etc("audio_effect_config") { 276 source = "server/config/audio_effect_config.xml" 277 278 subsystem_name = "multimedia" 279 relative_install_dir = "audio" 280 part_name = "audio_framework" 281} 282 283ohos_prebuilt_etc("audio_config.para") { 284 source = "etc/audio_config.para" 285 part_name = "audio_framework" 286 module_install_dir = "etc/param" 287} 288 289ohos_prebuilt_etc("audio_config.para.dac") { 290 source = "etc/audio_config.para.dac" 291 part_name = "audio_framework" 292 module_install_dir = "etc/param" 293} 294 295config("audio_policy_client_config") { 296 include_dirs = [ 297 "client/include", 298 "common/include", 299 "server/include", 300 "../audio_service/client/include", 301 "../audio_service/common/include", 302 "../../frameworks/native/audiopolicy/include", 303 "../../interfaces/inner_api/native/audiocommon/include", 304 "../../interfaces/inner_api/native/audiomanager/include", 305 ] 306 307 cflags = [ 308 "-Wall", 309 "-Werror", 310 ] 311 312 if (target_cpu == "arm") { 313 cflags += [ "-DBINDER_IPC_32BIT" ] 314 } 315} 316 317ohos_shared_library("audio_policy_client") { 318 sanitize = { 319 cfi = true 320 cfi_cross_dso = true 321 debug = false 322 blocklist = "../../cfi_blocklist.txt" 323 } 324 install_enable = true 325 326 defines = [] 327 if (audio_framework_feature_dtmf_tone) { 328 defines += [ "FEATURE_DTMF_TONE" ] 329 } 330 331 sources = [ 332 "../audio_service/client/src/audio_device_descriptor.cpp", 333 "client/src/audio_capturer_state_change_listener_stub.cpp", 334 "client/src/audio_client_tracker_callback_stub.cpp", 335 "client/src/audio_policy_manager.cpp", 336 "client/src/audio_policy_manager_listener_stub.cpp", 337 "client/src/audio_policy_proxy.cpp", 338 "client/src/audio_renderer_state_change_listener_stub.cpp", 339 "client/src/audio_ringermode_update_listener_stub.cpp", 340 "client/src/audio_routing_manager_listener_stub.cpp", 341 "client/src/audio_volume_group_info.cpp", 342 "client/src/audio_volume_key_event_callback_stub.cpp", 343 ] 344 345 public_configs = [ ":audio_policy_client_config" ] 346 347 include_dirs = [ "//third_party/bounds_checking_function/include" ] 348 349 external_deps = [ 350 "c_utils:utils", 351 "hilog:libhilog", 352 "init:libbegetutil", 353 "ipc:ipc_single", 354 "samgr:samgr_proxy", 355 ] 356 subsystem_name = "multimedia" 357 innerapi_tags = [ "platformsdk" ] 358 part_name = "audio_framework" 359 360 ldflags = [ "-Wl,-Bsymbolic" ] 361} 362 363group("audio_policy_test_packages") { 364 deps = [ ":audio_policy_test" ] 365} 366 367ohos_executable("audio_policy_test") { 368 install_enable = false 369 370 sources = [ "test/example/audio_policy_test.cpp" ] 371 372 configs = [ ":audio_policy_client_config" ] 373 374 deps = [ 375 "../audio_policy:audio_policy_client", 376 "../audio_service:audio_client", 377 "//third_party/bounds_checking_function:libsec_shared", 378 ] 379 380 include_dirs = [ "//third_party/bounds_checking_function/include" ] 381 382 external_deps = [ 383 "c_utils:utils", 384 "hilog:libhilog", 385 "ipc:ipc_single", 386 ] 387 388 part_name = "audio_framework" 389 subsystem_name = "multimedia" 390} 391