• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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