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("../../config.gni") 16import("../../ressche_part.gni") 17 18pulseaudio_dir = "//third_party/pulseaudio" 19pulseaudio_build_path = "//third_party/pulseaudio/ohosbuild" 20 21group("audio_service_packages") { 22 deps = [ 23 ":audio_common", 24 ":audio_service", 25 ":audio_service_init", 26 ] 27} 28 29ohos_shared_library("audio_common") { 30 sanitize = { 31 cfi = true 32 cfi_cross_dso = true 33 debug = false 34 blocklist = "../../cfi_blocklist.txt" 35 } 36 37 install_enable = true 38 39 include_dirs = [ 40 "common/include", 41 "../../interfaces/inner_api/native/audiocommon/include", 42 ] 43 44 sources = [ 45 "common/src/audio_process_config.cpp", 46 "common/src/linear_pos_time_model.cpp", 47 "common/src/oh_audio_buffer.cpp", 48 ] 49 50 cflags = [ 51 "-Wall", 52 "-Werror", 53 ] 54 if (target_cpu == "arm") { 55 cflags += [ "-DBINDER_IPC_32BIT" ] 56 } 57 58 deps = [ "../../frameworks/native/audioutils:audio_utils" ] 59 60 external_deps = [ 61 "c_utils:utils", 62 "hilog:libhilog", 63 "hisysevent:libhisysevent", 64 "ipc:ipc_single", 65 ] 66 67 subsystem_name = "multimedia" 68 innerapi_tags = [ "platformsdk_indirect" ] 69 part_name = "audio_framework" 70} 71 72config("audio_client_public_config") { 73 include_dirs = [ 74 "client/include", 75 "common/include", 76 "../audio_policy/client/include", 77 "../audio_policy/common/include", 78 "../../frameworks/native/audiopolicy/include", 79 "../../frameworks/native/audiostream/include", 80 "../../frameworks/native/audioutils/include", 81 "../../interfaces/inner_api/native/audiocapturer/include", 82 "../../interfaces/inner_api/native/audiocommon/include", 83 "../../interfaces/inner_api/native/audiomanager/include", 84 "../../interfaces/inner_api/native/audiorenderer/include", 85 ] 86 87 cflags = [ 88 "-Wall", 89 "-Werror", 90 ] 91 92 if (target_cpu == "arm") { 93 cflags += [ "-DBINDER_IPC_32BIT" ] 94 } 95} 96 97ohos_shared_library("audio_client") { 98 sanitize = { 99 cfi = true 100 cfi_cross_dso = true 101 integer_overflow = true 102 debug = false 103 blocklist = "../../cfi_blocklist.txt" 104 } 105 install_enable = true 106 sources = [ 107 "client/src/audio_device_descriptor.cpp", 108 "client/src/audio_group_manager.cpp", 109 "client/src/audio_manager_listener_stub.cpp", 110 "client/src/audio_manager_proxy.cpp", 111 "client/src/audio_process_in_client.cpp", 112 "client/src/audio_process_proxy.cpp", 113 "client/src/audio_routing_manager.cpp", 114 "client/src/audio_service_client.cpp", 115 "client/src/audio_stream.cpp", 116 "client/src/audio_stream_manager.cpp", 117 "client/src/audio_stream_tracker.cpp", 118 "client/src/audio_system_manager.cpp", 119 "client/src/fast_audio_stream.cpp", 120 "client/src/i_audio_stream.cpp", 121 "client/src/policy_provider_stub.cpp", 122 ] 123 124 public_configs = [ ":audio_client_public_config" ] 125 126 deps = [ 127 ":audio_common", 128 "$pulseaudio_build_path/src/pulse:pulse", 129 "../../frameworks/native/audioutils:audio_utils", 130 "../audio_policy:audio_policy_client", 131 ] 132 133 include_dirs = [ 134 "server/include", 135 "$pulseaudio_dir/src", 136 "$pulseaudio_dir/confgure/src", 137 "$pulseaudio_dir/include", 138 "$pulseaudio_build_path/include", 139 "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include", 140 "../../../../utils/system/safwk/native/include", 141 "../../../../commonlibrary/c_utils/base/include", 142 "//third_party/bounds_checking_function/include", 143 ] 144 145 include_dirs += [ multimedia_audio_framework_pulse_audio ] 146 147 external_deps = [ 148 "bundle_framework:appexecfwk_base", 149 "bundle_framework:appexecfwk_core", 150 "c_utils:utils", 151 "eventhandler:libeventhandler", 152 "hilog:libhilog", 153 "hisysevent:libhisysevent", 154 "ipc:ipc_single", 155 "samgr:samgr_proxy", 156 ] 157 158 version_script = "../../audio_framework.versionscript" 159 innerapi_tags = [ "platformsdk" ] 160 161 subsystem_name = "multimedia" 162 part_name = "audio_framework" 163} 164 165ohos_prebuilt_etc("audio_service_init") { 166 source = "etc/pulseaudio.cfg" 167 relative_install_dir = "init" 168 part_name = "audio_framework" 169 subsystem_name = "multimedia" 170} 171 172config("audio_service_config") { 173 visibility = [ ":*" ] 174 visibility += [ "../../test/fuzztest/*" ] 175 176 include_dirs = [ 177 "common/include", 178 "client/include", 179 "server/include", 180 "../audio_policy/server/include/service/effect", 181 "../../frameworks/native/audioeffect/include", 182 "../../frameworks/native/audiopolicy/include", 183 "../../frameworks/native/audioschedule/include", 184 "../../frameworks/native/audioutils/include", 185 "../../frameworks/native/playbackcapturer/include", 186 "../../frameworks/native/hdiadapter/sink/bluetooth", 187 "../../frameworks/native/hdiadapter/sink/common", 188 "../../frameworks/native/hdiadapter/sink/file", 189 "../../frameworks/native/hdiadapter/sink/fast", 190 "../../frameworks/native/hdiadapter/sink/remote", 191 "../../frameworks/native/hdiadapter/sink/remote_fast", 192 "../../frameworks/native/hdiadapter/sink/primary", 193 "../../frameworks/native/hdiadapter/source/common", 194 "../../frameworks/native/hdiadapter/source/fast", 195 "../../frameworks/native/hdiadapter/source/primary", 196 "../../frameworks/native/hdiadapter/source/remote_fast", 197 "../../interfaces/inner_api/native/audiocommon/include", 198 "../../interfaces/inner_api/native/audiomanager/include", 199 ] 200 201 include_dirs += [ multimedia_audio_framework_drivers ] 202 203 if (target_cpu == "arm") { 204 cflags = [ "-DBINDER_IPC_32BIT" ] 205 } 206} 207 208ohos_shared_library("audio_process_service") { 209 sanitize = { 210 cfi = true 211 cfi_cross_dso = true 212 debug = false 213 blocklist = "../../cfi_blocklist.txt" 214 } 215 install_enable = true 216 217 sources = [ 218 "server/src/audio_endpoint.cpp", 219 "server/src/audio_process_in_server.cpp", 220 "server/src/audio_process_stub.cpp", 221 "server/src/audio_service.cpp", 222 "server/src/policy_handler.cpp", 223 "server/src/policy_provider_proxy.cpp", 224 ] 225 226 configs = [ ":audio_service_config" ] 227 228 deps = [ 229 ":audio_common", 230 "../../frameworks/native/audioschedule:audio_schedule", 231 "../../frameworks/native/audioutils:audio_utils", 232 "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink", 233 "../../frameworks/native/hdiadapter/sink:remote_audio_renderer_sink", 234 "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink", 235 "../../frameworks/native/hdiadapter/source:fast_audio_capturer_source", 236 "../../frameworks/native/hdiadapter/source:remote_fast_audio_capturer_source", 237 ] 238 239 public_deps = [ "//third_party/bounds_checking_function:libsec_static" ] 240 241 external_deps = [ 242 "c_utils:utils", 243 "hicollie:libhicollie", 244 "hilog:libhilog", 245 "ipc:ipc_single", 246 ] 247 248 subsystem_name = "multimedia" 249 part_name = "audio_framework" 250} 251 252ohos_shared_library("audio_service") { 253 sanitize = { 254 cfi = true 255 cfi_cross_dso = true 256 debug = false 257 blocklist = "../../cfi_blocklist.txt" 258 } 259 install_enable = true 260 261 sources = [ 262 "server/src/audio_effect_server.cpp", 263 "server/src/audio_manager_listener_proxy.cpp", 264 "server/src/audio_manager_stub.cpp", 265 "server/src/audio_server.cpp", 266 ] 267 268 configs = [ ":audio_service_config" ] 269 270 deps = [ 271 ":audio_common", 272 ":audio_process_service", 273 "$pulseaudio_build_path/src/daemon:pulseaudio", 274 "../../frameworks/native/audioeffect:audio_effect", 275 "../../frameworks/native/audioschedule:audio_schedule", 276 "../../frameworks/native/audioutils:audio_utils", 277 "../../frameworks/native/hdiadapter/sink:audio_renderer_sink", 278 "../../frameworks/native/hdiadapter/sink:bluetooth_renderer_sink", 279 "../../frameworks/native/hdiadapter/sink:remote_audio_renderer_sink", 280 "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink", 281 "../../frameworks/native/hdiadapter/sink:renderer_sink_adapter", 282 "../../frameworks/native/hdiadapter/source:audio_capturer_source", 283 "../../frameworks/native/hdiadapter/source:capturer_source_adapter", 284 "../../frameworks/native/playbackcapturer:playback_capturer", 285 ] 286 287 external_deps = [ 288 "access_token:libaccesstoken_sdk", 289 "c_utils:utils", 290 "hicollie:libhicollie", 291 "hilog:libhilog", 292 "ipc:ipc_single", 293 "power_manager:powermgr_client", 294 "safwk:system_ability_fwk", 295 "samgr:samgr_proxy", 296 ] 297 298 if (ressche_enable == true) { 299 external_deps += [ "resource_schedule_service:ressched_client" ] 300 } 301 302 subsystem_name = "multimedia" 303 part_name = "audio_framework" 304} 305 306group("audio_service_test_packages") { 307 deps = [ 308 ":audio_hdi_device_test", 309 ":audio_multichannel_test", 310 ":audio_process_client_test", 311 ":audio_service_playback_test", 312 ":audio_service_record_test", 313 ] 314} 315 316ohos_executable("audio_process_client_test") { 317 install_enable = false 318 319 include_dirs = [ 320 "../../frameworks/native/audioutils/include", 321 "../../interfaces/inner_api/native/audiocommon/include", 322 "client/include", 323 ] 324 325 sources = [ "test/example/audio_process_client_test.cpp" ] 326 327 deps = [ 328 ":audio_client", 329 "./../../frameworks/native/audioutils:audio_utils", 330 ] 331 332 external_deps = [ 333 "c_utils:utils", 334 "hilog:libhilog", 335 "init:libbegetutil", 336 ] 337 338 part_name = "audio_framework" 339 subsystem_name = "multimedia" 340} 341 342ohos_executable("audio_hdi_device_test") { 343 install_enable = false 344 345 include_dirs = [ 346 "../../frameworks/native/audioutils/include", 347 "../../frameworks/native/hdiadapter/sink", 348 "../../frameworks/native/hdiadapter/sink/common", 349 "../../frameworks/native/hdiadapter/sink/fast", 350 "../../interfaces/inner_api/native/audiocommon/include", 351 ] 352 353 include_dirs += [ multimedia_audio_framework_drivers ] 354 355 cflags = [ "-DDEBUG_DIRECT_USE_HDI" ] 356 357 sources = [ 358 "../../frameworks/native/hdiadapter/sink/remote_fast/remote_fast_audio_renderer_sink.cpp", 359 "test/example/audio_hdi_device_test.cpp", 360 ] 361 362 deps = [ 363 "../../frameworks/native/audioutils:audio_utils", 364 "../../frameworks/native/hdiadapter/sink:fast_audio_renderer_sink", 365 "../../frameworks/native/hdiadapter/sink:remote_fast_audio_renderer_sink", 366 ] 367 368 external_deps = [ 369 "c_utils:utils", 370 "hilog:libhilog", 371 "power_manager:powermgr_client", 372 ] 373 374 part_name = "audio_framework" 375 subsystem_name = "multimedia" 376} 377 378ohos_executable("audio_service_playback_test") { 379 install_enable = false 380 381 sources = [ "test/example/playback_test.cpp" ] 382 383 configs = [ ":audio_client_public_config" ] 384 385 deps = [ ":audio_client" ] 386 387 include_dirs = [ 388 "$pulseaudio_build_path/include", 389 "$pulseaudio_dir/confgure/src", 390 "$pulseaudio_dir/include", 391 "$pulseaudio_dir/src", 392 "../../../../commonlibrary/c_utils/base/include", 393 "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include", 394 "../../../../utils/system/safwk/native/include", 395 "//third_party/bounds_checking_function/include", 396 ] 397 398 external_deps = [ 399 "hilog:libhilog", 400 "ipc:ipc_single", 401 ] 402 403 part_name = "audio_framework" 404 subsystem_name = "multimedia" 405} 406 407ohos_executable("audio_faststream_playback_test") { 408 install_enable = false 409 410 sources = [ "test/example/fast_audio_stream_playback_test.cpp" ] 411 412 configs = [ ":audio_client_public_config" ] 413 414 deps = [ 415 ":audio_client", 416 "../../frameworks/native/audiocapturer:audio_capturer", 417 "../../frameworks/native/audiorenderer:audio_renderer", 418 ] 419 420 include_dirs = [ 421 "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include", 422 "../../../../utils/system/safwk/native/include", 423 "../../../../commonlibrary/c_utils/base/include", 424 "$pulseaudio_dir/src", 425 "$pulseaudio_dir/confgure/src", 426 "$pulseaudio_dir/include", 427 "$pulseaudio_build_path/include", 428 "//third_party/bounds_checking_function/include", 429 ] 430 431 external_deps = [ 432 "hilog:libhilog", 433 "init:libbegetutil", 434 "ipc:ipc_single", 435 ] 436 437 part_name = "audio_framework" 438 subsystem_name = "multimedia" 439} 440 441ohos_executable("audio_service_record_test") { 442 install_enable = false 443 444 sources = [ "test/example/record_test.cpp" ] 445 446 configs = [ ":audio_client_public_config" ] 447 448 include_dirs = [ 449 "$pulseaudio_build_path/include", 450 "$pulseaudio_dir/confgure/src", 451 "$pulseaudio_dir/include", 452 "$pulseaudio_dir/src", 453 "../../../../commonlibrary/c_utils/base/include", 454 "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include", 455 "../../../../utils/system/safwk/native/include", 456 "//third_party/bounds_checking_function/include", 457 ] 458 459 deps = [ ":audio_client" ] 460 461 external_deps = [ 462 "hilog:libhilog", 463 "ipc:ipc_single", 464 ] 465 part_name = "audio_framework" 466 subsystem_name = "multimedia" 467} 468 469ohos_executable("audio_multichannel_test") { 470 install_enable = false 471 472 sources = [ "test/example/audio_multichannel_test.cpp" ] 473 474 configs = [ ":audio_client_public_config" ] 475 476 include_dirs = [ 477 "$pulseaudio_build_path/include", 478 "$pulseaudio_dir/confgure/src", 479 "$pulseaudio_dir/include", 480 "$pulseaudio_dir/src", 481 "../../../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include", 482 "../../../../utils/system/safwk/native/include", 483 "../../../../commonlibrary/c_utils/base/include", 484 "//third_party/bounds_checking_function/include", 485 ] 486 487 deps = [ ":audio_client" ] 488 489 external_deps = [ 490 "hilog:libhilog", 491 "ipc:ipc_single", 492 ] 493 494 part_name = "audio_framework" 495 subsystem_name = "multimedia" 496} 497