# Copyright (c) 2021-2023 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/ohos.gni") import("../../accessibility.gni") import("../../bluetooth_part.gni") import("../../config.gni") pulseaudio_build_path = "//third_party/pulseaudio/ohosbuild" group("audio_policy_packages") { deps = [ ":audio_dump", ":audio_effect_config", ":audio_interrupt_policy_config", ":audio_policy_init", ":audio_policy_service", ":audio_volume_config", ] if (audio_framework_feature_dtmf_tone) { deps += [ ":audio_tone_dtmf_config" ] } } ohos_prebuilt_etc("audio_policy_init") { source = "etc/audio_policy.cfg" relative_install_dir = "init" part_name = "audio_framework" subsystem_name = "multimedia" } config("audio_policy_public_config") { include_dirs = [ "common/include", "client/include", "server/include", "server/include/service", "server/include/service/common", "server/include/service/config", "server/include/service/effect", "server/include/service/interface", "server/include/service/listener", "server/include/service/manager", "../audio_service/client/include", "../audio_service/common/include", "../../frameworks/native/audiorenderer/include", "../../frameworks/native/audioadapter/include", "../../frameworks/native/audiopolicy/include", "../../frameworks/native/audioutils/include", "../../frameworks/native/bluetoothclient", "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiomanager/include", ] cflags = [ "-Wall", "-Werror", ] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } if (accessibility_enable == true) { cflags += [ "-DACCESSIBILITY_ENABLE" ] } if (bluetooth_part_enable == true) { cflags += [ "-DBLUETOOTH_ENABLE" ] } ldflags = [ "-Wl" ] } ohos_shared_library("audio_dump") { sanitize = { cfi = true cfi_cross_dso = true debug = false blocklist = "../../cfi_blocklist.txt" } install_enable = true sources = [ "server/src/service/dump/audio_service_dump.cpp" ] public_configs = [ ":audio_policy_public_config" ] deps = [ "$pulseaudio_build_path/src/pulse:pulse", "//third_party/bounds_checking_function:libsec_shared", ] include_dirs = [ "$pulseaudio_build_path/include", "../../../../commonlibrary/c_utils/base/include", "../../../../drivers/peripheral/audio/interfaces/include", "../../../../foundation/communication/bluetooth/interfaces/inner_api/include", "../../../../foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata/include", "../../../../foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include", "../../../../foundation/systemabilitymgr/safwk/services/safwk/include", "../../../../utils/system/safwk/native/include", "//third_party/bounds_checking_function/include", "//third_party/cJSON", "//third_party/libxml2/include", "//third_party/pulseaudio/src", "//third_party/pulseaudio/confgure/src", "//third_party/pulseaudio/include", ] external_deps = [ "c_utils:utils", "hilog:libhilog", ] subsystem_name = "multimedia" part_name = "audio_framework" } ohos_shared_library("audio_policy_service") { sanitize = { cfi = true cfi_cross_dso = true debug = false blocklist = "../../cfi_blocklist.txt" } install_enable = true sources = [ "client/src/audio_interrupt_group_info.cpp", "client/src/audio_volume_group_info.cpp", "server/src/audio_capturer_state_change_listener_proxy.cpp", "server/src/audio_client_tracker_callback_proxy.cpp", "server/src/audio_group_handle.cpp", "server/src/audio_policy_manager_listener_proxy.cpp", "server/src/audio_policy_manager_stub.cpp", "server/src/audio_policy_server.cpp", "server/src/audio_renderer_state_change_listener_proxy.cpp", "server/src/audio_ringermode_update_listener_proxy.cpp", "server/src/audio_routing_manager_listener_proxy.cpp", "server/src/audio_stream_collector.cpp", "server/src/audio_stream_event_dispatcher.cpp", "server/src/audio_volume_key_event_callback_proxy.cpp", "server/src/service/audio_policy_service.cpp", "server/src/service/config/audio_focus_parser.cpp", "server/src/service/config/audio_volume_parser.cpp", "server/src/service/config/xml_parser.cpp", "server/src/service/data_share_observer_callback.cpp", "server/src/service/device_init_callback.cpp", "server/src/service/effect/audio_effect_config_parser.cpp", "server/src/service/effect/audio_effect_manager.cpp", "server/src/service/listener/device_status_listener.cpp", "server/src/service/manager/audio_adapter_manager.cpp", ] defines = [] if (audio_framework_feature_dtmf_tone) { sources += [ "server/src/service/config/audio_tone_parser.cpp" ] defines += [ "FEATURE_DTMF_TONE" ] } public_configs = [ ":audio_policy_public_config" ] deps = [ "../../frameworks/native/audioadapter:pulse_audio_service_adapter", "../../frameworks/native/audioutils:audio_utils", "../audio_policy:audio_config.para", "../audio_policy:audio_config.para.dac", "../audio_policy:audio_dump", "../audio_service:audio_client", "../audio_service:audio_common", "//third_party/libxml2:xml2", ] include_dirs = [ "$pulseaudio_build_path/include", "../../../../commonlibrary/c_utils/base/include", "../../../../drivers/peripheral/audio/interfaces/include", "../../../../foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include", "../../../../foundation/systemabilitymgr/safwk/services/safwk/include", "../../../../foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata/include", "../../../../foundation/distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include/", "//third_party/libxml2/include", "//third_party/pulseaudio/src", "//third_party/pulseaudio/confgure/src", "//third_party/pulseaudio/include", ] external_deps = [ "ability_base:want", "ability_base:zuri", "ability_runtime:ability_context_native", "ability_runtime:ability_manager", "ability_runtime:app_context", "ability_runtime:dataobs_manager", "access_token:libaccesstoken_sdk", "access_token:libprivacy_sdk", "access_token:libtoken_setproc", "access_token:libtokenid_sdk", "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", "c_utils:utils", "data_share:datashare_common", "data_share:datashare_consumer", "device_manager:devicemanagersdk", "drivers_interface_audio:audio_idl_headers", "hdf_core:libhdf_ipc_adapter", "hdf_core:libhdi", "hdf_core:libpub_utils", "hilog:libhilog", "hisysevent:libhisysevent", "init:libbegetutil", "input:libmmi-client", "ipc:ipc_single", "kv_store:distributeddata_inner", "safwk:system_ability_fwk", "samgr:samgr_proxy", ] if (audio_framework_config_policy_enable) { defines += [ "USB_CONFIG_POLICY" ] external_deps += [ "config_policy:configpolicy_util" ] } if (accessibility_enable == true) { sources += [ "server/src/service/listener/accessibility_config_listener.cpp" ] external_deps += [ "accessibility:accessibilityconfig" ] } if (bluetooth_part_enable == true) { deps += [ "../../frameworks/native/bluetoothclient:audio_bluetooth_client" ] external_deps += [ "bluetooth:btframework" ] include_dirs += [ "../../../../foundation/communication/bluetooth/interfaces/inner_api/include" ] } subsystem_name = "multimedia" part_name = "audio_framework" } ohos_prebuilt_etc("audio_interrupt_policy_config") { source = "server/config/audio_interrupt_policy_config.xml" subsystem_name = "multimedia" relative_install_dir = "audio" part_name = "audio_framework" } ohos_prebuilt_etc("audio_volume_config") { source = "server/config/audio_volume_config.xml" subsystem_name = "multimedia" relative_install_dir = "audio" part_name = "audio_framework" } if (audio_framework_feature_dtmf_tone) { ohos_prebuilt_etc("audio_tone_dtmf_config") { source = "server/config/audio_tone_dtmf_config.xml" subsystem_name = "multimedia" relative_install_dir = "audio" part_name = "audio_framework" } } ohos_prebuilt_etc("audio_effect_config") { source = "server/config/audio_effect_config.xml" subsystem_name = "multimedia" relative_install_dir = "audio" part_name = "audio_framework" } ohos_prebuilt_etc("audio_config.para") { source = "etc/audio_config.para" part_name = "audio_framework" module_install_dir = "etc/param" } ohos_prebuilt_etc("audio_config.para.dac") { source = "etc/audio_config.para.dac" part_name = "audio_framework" module_install_dir = "etc/param" } config("audio_policy_client_config") { include_dirs = [ "client/include", "common/include", "server/include", "../audio_service/client/include", "../audio_service/common/include", "../../frameworks/native/audiopolicy/include", "../../interfaces/inner_api/native/audiocommon/include", "../../interfaces/inner_api/native/audiomanager/include", ] cflags = [ "-Wall", "-Werror", ] if (target_cpu == "arm") { cflags += [ "-DBINDER_IPC_32BIT" ] } } ohos_shared_library("audio_policy_client") { sanitize = { cfi = true cfi_cross_dso = true debug = false blocklist = "../../cfi_blocklist.txt" } install_enable = true defines = [] if (audio_framework_feature_dtmf_tone) { defines += [ "FEATURE_DTMF_TONE" ] } sources = [ "../audio_service/client/src/audio_device_descriptor.cpp", "client/src/audio_capturer_state_change_listener_stub.cpp", "client/src/audio_client_tracker_callback_stub.cpp", "client/src/audio_policy_manager.cpp", "client/src/audio_policy_manager_listener_stub.cpp", "client/src/audio_policy_proxy.cpp", "client/src/audio_renderer_state_change_listener_stub.cpp", "client/src/audio_ringermode_update_listener_stub.cpp", "client/src/audio_routing_manager_listener_stub.cpp", "client/src/audio_volume_group_info.cpp", "client/src/audio_volume_key_event_callback_stub.cpp", ] public_configs = [ ":audio_policy_client_config" ] include_dirs = [ "//third_party/bounds_checking_function/include" ] external_deps = [ "c_utils:utils", "hilog:libhilog", "init:libbegetutil", "ipc:ipc_single", "samgr:samgr_proxy", ] subsystem_name = "multimedia" innerapi_tags = [ "platformsdk" ] part_name = "audio_framework" ldflags = [ "-Wl,-Bsymbolic" ] } group("audio_policy_test_packages") { deps = [ ":audio_policy_test" ] } ohos_executable("audio_policy_test") { install_enable = false sources = [ "test/example/audio_policy_test.cpp" ] configs = [ ":audio_policy_client_config" ] deps = [ "../audio_policy:audio_policy_client", "../audio_service:audio_client", "//third_party/bounds_checking_function:libsec_shared", ] include_dirs = [ "//third_party/bounds_checking_function/include" ] external_deps = [ "c_utils:utils", "hilog:libhilog", "ipc:ipc_single", ] part_name = "audio_framework" subsystem_name = "multimedia" }