1# Copyright (c) 2021-2022 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("//drivers/hdf_core/adapter/uhdf2/uhdf.gni") 16 17pulseaudio_dir = "//third_party/pulseaudio" 18pulseaudio_build_path = "//third_party/pulseaudio/ohosbuild" 19 20group("audio_service_packages") { 21 deps = [ 22 ":audio_service", 23 ":audio_service_init", 24 ] 25} 26 27config("audio_client_public_config") { 28 include_dirs = [ 29 "//foundation/multimedia/audio_framework/frameworks/native/audiopolicy/include", 30 "//foundation/multimedia/audio_framework/frameworks/native/audioutils/include", 31 "//foundation/multimedia/audio_framework/frameworks/native/audiostream/include", 32 "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiocapturer/include", 33 "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiocommon/include", 34 "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiomanager/include", 35 "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiorenderer/include", 36 "//foundation/multimedia/audio_framework/services/audio_service/client/include", 37 "//foundation/multimedia/audio_framework/services/audio_service/common/include", 38 "//foundation/multimedia/audio_framework/services/audio_policy/client/include", 39 "//foundation/multimedia/audio_framework/services/audio_policy/common/include", 40 "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include", 41 "//utils/system/safwk/native/include", 42 "//commonlibrary/c_utils/base/include", 43 "$pulseaudio_dir/src", 44 "$pulseaudio_dir/confgure/src", 45 "$pulseaudio_dir/include", 46 "$pulseaudio_build_path/include", 47 "//third_party/bounds_checking_function/include", 48 ] 49 50 cflags = [ 51 "-Wall", 52 "-Werror", 53 ] 54 55 if (target_cpu == "arm") { 56 cflags += [ "-DBINDER_IPC_32BIT" ] 57 } 58} 59 60ohos_shared_library("audio_client") { 61 sanitize = { 62 cfi = true 63 debug = false 64 blocklist = "//foundation/multimedia/audio_framework/cfi_blocklist.txt" 65 } 66 install_enable = true 67 sources = [ 68 "client/src/audio_device_descriptor.cpp", 69 "client/src/audio_group_manager.cpp", 70 "client/src/audio_manager_listener_stub.cpp", 71 "client/src/audio_manager_proxy.cpp", 72 "client/src/audio_routing_manager.cpp", 73 "client/src/audio_stream_manager.cpp", 74 "client/src/audio_stream_tracker.cpp", 75 "client/src/audio_system_manager.cpp", 76 ] 77 78 public_configs = [ ":audio_client_public_config" ] 79 80 deps = [ 81 "//foundation/multimedia/audio_framework/frameworks/native/audioutils:audio_utils", 82 "//foundation/multimedia/audio_framework/services/audio_policy:audio_policy_client", 83 ] 84 85 if ("${product_name}" != "ohcore") { 86 sources += [ 87 "client/src/audio_service_client.cpp", 88 "client/src/audio_stream.cpp", 89 ] 90 deps += [ 91 "$pulseaudio_build_path/src/pulse:pulse", 92 ] 93 } 94 95 external_deps = [ 96 "c_utils:utils", 97 "eventhandler:libeventhandler", 98 "hisysevent_native:libhisysevent", 99 "hiviewdfx_hilog_native:libhilog", 100 "ipc:ipc_core", 101 "samgr:samgr_proxy", 102 ] 103 subsystem_name = "multimedia" 104 part_name = "multimedia_audio_framework" 105} 106 107ohos_prebuilt_etc("audio_service_init") { 108 source = "etc/pulseaudio.cfg" 109 relative_install_dir = "init" 110 part_name = "multimedia_audio_framework" 111 subsystem_name = "multimedia" 112} 113 114config("audio_service_config") { 115 visibility = [ ":*" ] 116 117 include_dirs = [ 118 "common/include", 119 "server/include", 120 "client/include", 121 "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiocommon/include", 122 "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiomanager/include", 123 "//foundation/multimedia/audio_framework/frameworks/native/audiopolicy/include", 124 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink/common", 125 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink/primary", 126 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink/remote", 127 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink/file", 128 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink/bluetooth", 129 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/source/common", 130 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/source/primary", 131 "//drivers/peripheral/audio/interfaces/include", 132 ] 133 134 if (target_cpu == "arm") { 135 cflags = [ "-DBINDER_IPC_32BIT" ] 136 } 137} 138 139ohos_shared_library("audio_service") { 140 sanitize = { 141 cfi = true 142 debug = false 143 blocklist = "//foundation/multimedia/audio_framework/cfi_blocklist.txt" 144 } 145 install_enable = true 146 147 sources = [ 148 "server/src/audio_manager_listener_proxy.cpp", 149 "server/src/audio_manager_stub.cpp", 150 "server/src/audio_server.cpp", 151 ] 152 153 configs = [ ":audio_service_config" ] 154 155 if ("${product_name}" == "m40") { 156 cflags = [ "-DPRODUCT_M40" ] 157 } 158 159 deps = [ 160 "$pulseaudio_build_path/src/daemon:pulseaudio", 161 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink:audio_renderer_sink", 162 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink:bluetooth_renderer_sink", 163 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink:remote_audio_renderer_sink", 164 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink:renderer_sink_adapter", 165 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/source:audio_capturer_source", 166 ] 167 168 external_deps = [ 169 "access_token:libaccesstoken_sdk", 170 "c_utils:utils", 171 "hiviewdfx_hilog_native:libhilog", 172 "ipc:ipc_core", 173 "power_manager:powermgr_client", 174 "safwk:system_ability_fwk", 175 "samgr:samgr_proxy", 176 ] 177 178 subsystem_name = "multimedia" 179 part_name = "multimedia_audio_framework" 180} 181 182group("audio_service_test_packages") { 183 deps = [ 184 ":audio_hdi_device_test", 185 ":audio_multichannel_test", 186 ":audio_service_playback_test", 187 ":audio_service_record_test", 188 ] 189} 190 191ohos_executable("audio_hdi_device_test") { 192 install_enable = false 193 194 include_dirs = [ 195 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink", 196 "//foundation/multimedia/audio_framework/interfaces/inner_api/native/audiocommon/include", 197 "//foundation/multimedia/audio_framework/frameworks/native/audioutils/include", 198 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink/common", 199 "//commonlibrary/c_utils/base/include", 200 "//base/hiviewdfx/hilog/interfaces/native/innerkits/include", 201 "//drivers/peripheral/audio/interfaces/include", 202 "//commonlibrary/c_utils/base/include", 203 ] 204 205 sources = [ "test/example/audio_hdi_device_test.cpp" ] 206 207 deps = [ 208 "//foundation/multimedia/audio_framework/frameworks/native/audioutils:audio_utils", 209 "//foundation/multimedia/audio_framework/frameworks/native/hdiadapter/sink:fast_audio_renderer_sink", 210 ] 211 212 external_deps = [ "hiviewdfx_hilog_native:libhilog" ] 213 214 part_name = "multimedia_audio_framework" 215 subsystem_name = "multimedia" 216} 217 218ohos_executable("audio_service_playback_test") { 219 install_enable = false 220 221 sources = [ "test/example/playback_test.cpp" ] 222 223 configs = [ ":audio_client_public_config" ] 224 225 deps = [ ":audio_client" ] 226 227 external_deps = [ "hiviewdfx_hilog_native:libhilog" ] 228 229 part_name = "multimedia_audio_framework" 230 subsystem_name = "multimedia" 231} 232 233ohos_executable("audio_service_record_test") { 234 install_enable = false 235 236 sources = [ "test/example/record_test.cpp" ] 237 238 configs = [ ":audio_client_public_config" ] 239 240 deps = [ ":audio_client" ] 241 242 external_deps = [ "hiviewdfx_hilog_native:libhilog" ] 243 244 part_name = "multimedia_audio_framework" 245 subsystem_name = "multimedia" 246} 247 248ohos_executable("audio_multichannel_test") { 249 install_enable = false 250 251 sources = [ "test/example/audio_multichannel_test.cpp" ] 252 253 configs = [ ":audio_client_public_config" ] 254 255 deps = [ ":audio_client" ] 256 257 external_deps = [ "hiviewdfx_hilog_native:libhilog" ] 258 259 part_name = "multimedia_audio_framework" 260 subsystem_name = "multimedia" 261} 262