# 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("../../appgallery.gni") import("../../bluetooth_part.gni") import("../../config.gni") group("audio_policy_packages") { deps = [ ":audio_converter_config", ":audio_device_config", ":audio_effect_config", ":audio_interrupt_policy_config", ":audio_policy_init", ":audio_policy_service", ":audio_strategy_router", ":audio_usage_strategy", ":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", "server/include/service/manager/pnp_server", "server/include/service/routers", "server/include/service/spatialization", "server/src/interface", "server/src/service/concurrency", "server/src/service/interrupt", "server/src/service/session", "../audio_service/client/include", "../audio_service/common/include", "../../frameworks/native/audioinnercall/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_policy_service") { stack_protector_ret = true sanitize = { cfi = true cfi_cross_dso = true cfi_vcall_icall_only = true debug = false } install_enable = true sources = [ "client/src/audio_interrupt_group_info.cpp", "client/src/audio_volume_group_info.cpp", "server/src/audio_client_tracker_callback_proxy.cpp", "server/src/audio_concurrency_state_listener_proxy.cpp", "server/src/audio_dialog_ability_connection.cpp", "server/src/audio_group_handle.cpp", "server/src/audio_policy_client_proxy.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_policy_server_handler.cpp", "server/src/audio_routing_manager_listener_proxy.cpp", "server/src/audio_spatialization_state_change_listener_proxy.cpp", "server/src/audio_stream_collector.cpp", "server/src/service/audio_device_manager.cpp", "server/src/service/audio_policy_service.cpp", "server/src/service/audio_state_manager.cpp", "server/src/service/concurrency/audio_concurrency_service.cpp", "server/src/service/config/audio_adapter_info.cpp", "server/src/service/config/audio_concurrency_parser.cpp", "server/src/service/config/audio_converter_parser.cpp", "server/src/service/config/audio_device_parser.cpp", "server/src/service/config/audio_focus_parser.cpp", "server/src/service/config/audio_policy_parser.cpp", "server/src/service/config/audio_strategy_router_parser.cpp", "server/src/service/config/audio_usage_strategy_parser.cpp", "server/src/service/config/audio_volume_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/interrupt/audio_interrupt_service.cpp", "server/src/service/listener/device_status_listener.cpp", "server/src/service/listener/power_state_listener.cpp", "server/src/service/manager/audio_adapter_manager.cpp", "server/src/service/manager/audio_adapter_manager_handler.cpp", "server/src/service/manager/audio_setting_provider.cpp", "server/src/service/manager/client_type_manager.cpp", "server/src/service/manager/client_type_manager_handler.cpp", "server/src/service/manager/pnp_server/audio_input_thread.cpp", "server/src/service/manager/pnp_server/audio_pnp_server.cpp", "server/src/service/manager/pnp_server/audio_socket_thread.cpp", "server/src/service/manager/volume_data_maintainer.cpp", "server/src/service/routers/audio_router_center.cpp", "server/src/service/routers/cockpit_phone_router.cpp", "server/src/service/routers/default_router.cpp", "server/src/service/routers/package_filter_router.cpp", "server/src/service/routers/pair_device_router.cpp", "server/src/service/routers/privacy_priority_router.cpp", "server/src/service/routers/public_priority_router.cpp", "server/src/service/routers/stream_filter_router.cpp", "server/src/service/routers/user_select_router.cpp", "server/src/service/session/audio_session.cpp", "server/src/service/session/audio_session_service.cpp", "server/src/service/session/audio_session_timer.cpp", "server/src/service/spatialization/audio_spatialization_service.cpp", ] defines = [] if (audio_framework_feature_double_pnp_detect) { defines += [ "AUDIO_DOUBLE_PNP_DETECT" ] } if (build_variant == "user") { defines += [ "AUDIO_BUILD_VARIANT_USER" ] } else if (build_variant == "root") { defines += [ "AUDIO_BUILD_VARIANT_ROOT" ] } if (audio_framework_feature_support_os_account) { defines += [ "SUPPORT_USER_ACCOUNT" ] } 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/audioinnercall:audio_inner_call", "../../frameworks/native/audioutils:audio_utils", "../audio_policy:audio_config.para", "../audio_policy:audio_config.para.dac", "../audio_service:audio_client", "../audio_service:audio_common", ] external_deps = [ "ability_base:want", "ability_base:zuri", "ability_runtime:ability_connect_callback_stub", "ability_runtime:ability_context_native", "ability_runtime:ability_manager", "ability_runtime:app_context", "ability_runtime:dataobs_manager", "ability_runtime:extension_manager", "access_token:libaccesstoken_sdk", "access_token:libprivacy_sdk", "access_token:libtokenid_sdk", "access_token:libtokensetproc_shared", "bounds_checking_function:libsec_shared", "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", "c_utils:utils", "data_share:datashare_common", "data_share:datashare_consumer", "drivers_interface_audio:libaudio_proxy_4.0", "eventhandler:libeventhandler", "hdf_core:libhdf_host", "hdf_core:libhdf_ipc_adapter", "hdf_core:libhdf_utils", "hdf_core:libhdi", "hdf_core:libpub_utils", "hilog:libhilog", "hisysevent:libhisysevent", "init:libbegetutil", "ipc:ipc_single", "kv_store:distributeddata_inner", "media_foundation:media_monitor_client", "media_foundation:media_monitor_common", "os_account:os_account_innerkits", "power_manager:power_setting", "power_manager:powermgr_client", "pulseaudio:pulse", "safwk:system_ability_fwk", "samgr:samgr_proxy", ] public_external_deps = [ "libxml2:libxml2", "openssl:libcrypto_shared", ] if (audio_framework_config_policy_enable) { defines += [ "USE_CONFIG_POLICY" ] external_deps += [ "config_policy:configpolicy_util" ] } if (accessibility_enable == true) { sources += [ "server/src/service/listener/accessibility_config_listener.cpp" ] external_deps += [ "accessibility:accessibility_common", "accessibility:accessibilityconfig", ] } if (appgallery_part_enable == true) { defines += [ "FEATURE_APPGALLERY" ] } if (bluetooth_part_enable == true) { deps += [ "../../frameworks/native/bluetoothclient:audio_bluetooth_client" ] external_deps += [ "bluetooth:btframework" ] } if (audio_framework_feature_input) { defines += [ "FEATURE_MULTIMODALINPUT_INPUT" ] external_deps += [ "input:libmmi-client" ] } if (audio_framework_feature_device_manager) { defines += [ "FEATURE_DEVICE_MANAGER" ] external_deps += [ "device_manager:devicemanagersdk" ] } 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_strategy_router") { source = "server/config/audio_strategy_router.xml" subsystem_name = "multimedia" relative_install_dir = "audio" part_name = "audio_framework" } ohos_prebuilt_etc("audio_usage_strategy") { source = "server/config/audio_usage_strategy.xml" subsystem_name = "multimedia" relative_install_dir = "audio" part_name = "audio_framework" } ohos_prebuilt_etc("audio_device_config") { source = "server/config/audio_device_privacy.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_converter_config") { source = "server/config/audio_converter_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") { branch_protector_ret = "pac_ret" install_enable = true defines = [] if (audio_framework_feature_dtmf_tone) { defines += [ "FEATURE_DTMF_TONE" ] } sources = [ "../audio_service/client/src/audio_device_descriptor.cpp", "../audio_service/client/src/microphone_descriptor.cpp", "client/src/audio_client_tracker_callback_stub.cpp", "client/src/audio_concurrency_state_listener_stub.cpp", "client/src/audio_policy_client_stub.cpp", "client/src/audio_policy_client_stub_impl.cpp", "client/src/audio_policy_manager.cpp", "client/src/audio_policy_manager_listener_stub.cpp", "client/src/audio_routing_manager_listener_stub.cpp", "client/src/audio_spatialization_state_change_listener_stub.cpp", "client/src/audio_volume_group_info.cpp", "client/src/proxy/audio_policy_callback_proxy.cpp", "client/src/proxy/audio_policy_microphone_proxy.cpp", "client/src/proxy/audio_policy_proxy.cpp", "client/src/proxy/audio_policy_volume_proxy.cpp", ] deps = [ "../../frameworks/native/audioutils:audio_utils" ] public_configs = [ ":audio_policy_client_config" ] include_dirs = [ "../../frameworks/native/audioutils/include" ] external_deps = [ "bounds_checking_function:libsec_shared", "c_utils:utils", "eventhandler:libeventhandler", "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_dump_test", ":audio_policy_test", ] } ohos_executable("audio_dump_test") { install_enable = false sanitize = { cfi = true cfi_cross_dso = true cfi_vcall_icall_only = true debug = false } sources = [ "test/example/audio_dump_test.cpp" ] configs = [ ":audio_policy_client_config" ] deps = [ "../audio_policy:audio_policy_client", "../audio_service:audio_client", ] include_dirs = [] external_deps = [ "bounds_checking_function:libsec_shared", "c_utils:utils", "hilog:libhilog", "ipc:ipc_single", ] part_name = "audio_framework" subsystem_name = "multimedia" } 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", ] include_dirs = [] external_deps = [ "bounds_checking_function:libsec_shared", "c_utils:utils", "hilog:libhilog", "ipc:ipc_single", ] part_name = "audio_framework" subsystem_name = "multimedia" }