• 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_device_config",
24    ":audio_dump",
25    ":audio_effect_config",
26    ":audio_interrupt_policy_config",
27    ":audio_policy_service",
28    ":audio_strategy_router",
29    ":audio_usage_strategy",
30    ":audio_volume_config",
31  ]
32
33  if (audio_framework_feature_dtmf_tone) {
34    deps += [ ":audio_tone_dtmf_config" ]
35  }
36}
37
38config("audio_policy_public_config") {
39  include_dirs = [
40    "common/include",
41    "client/include",
42    "server/include",
43    "server/include/service",
44    "server/include/service/common",
45    "server/include/service/config",
46    "server/include/service/effect",
47    "server/include/service/interface",
48    "server/include/service/listener",
49    "server/include/service/manager",
50    "server/include/service/manager/pnp_server",
51    "server/include/service/routers",
52    "server/include/service/spatialization",
53    "../audio_service/client/include",
54    "../audio_service/common/include",
55    "../../frameworks/native/audiorenderer/include",
56    "../../frameworks/native/audioadapter/include",
57    "../../frameworks/native/audiopolicy/include",
58    "../../frameworks/native/audioutils/include",
59    "../../frameworks/native/bluetoothclient",
60    "../../interfaces/inner_api/native/audiocommon/include",
61    "../../interfaces/inner_api/native/audiomanager/include",
62  ]
63
64  cflags = [
65    "-Wall",
66    "-Werror",
67  ]
68
69  if (target_cpu == "arm") {
70    cflags += [ "-DBINDER_IPC_32BIT" ]
71  }
72
73  if (accessibility_enable == true) {
74    cflags += [ "-DACCESSIBILITY_ENABLE" ]
75  }
76
77  if (bluetooth_part_enable == true) {
78    cflags += [ "-DBLUETOOTH_ENABLE" ]
79  }
80
81  ldflags = [ "-Wl" ]
82}
83
84ohos_shared_library("audio_dump") {
85  sanitize = {
86    cfi = true
87    cfi_cross_dso = true
88    debug = false
89    blocklist = "../../cfi_blocklist.txt"
90  }
91  install_enable = true
92  sources = [ "server/src/service/dump/audio_service_dump.cpp" ]
93
94  public_configs = [ ":audio_policy_public_config" ]
95
96  deps = [
97    "$pulseaudio_build_path/src/pulse:pulse",
98    "//third_party/bounds_checking_function:libsec_shared",
99  ]
100
101  include_dirs = [
102    "$pulseaudio_build_path/include",
103    "../../../../commonlibrary/c_utils/base/include",
104    "../../../../drivers/peripheral/audio/interfaces/include",
105    "../../../../foundation/communication/bluetooth/interfaces/inner_api/include",
106    "../../../../foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata/include",
107    "../../../../foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include",
108    "../../../../foundation/systemabilitymgr/safwk/services/safwk/include",
109    "../../../../utils/system/safwk/native/include",
110    "//third_party/bounds_checking_function/include",
111    "//third_party/cJSON",
112    "//third_party/libxml2/include",
113    "//third_party/pulseaudio/src",
114    "//third_party/pulseaudio/confgure/src",
115    "//third_party/pulseaudio/include",
116  ]
117
118  external_deps = [
119    "c_utils:utils",
120    "hilog:libhilog",
121  ]
122
123  subsystem_name = "multimedia"
124  part_name = "audio_framework"
125}
126
127ohos_shared_library("audio_policy_service") {
128  stack_protector_ret = true
129  sanitize = {
130    cfi = true
131    cfi_cross_dso = true
132    debug = false
133    blocklist = "../../cfi_blocklist.txt"
134  }
135  install_enable = true
136  sources = [
137    "client/src/audio_interrupt_group_info.cpp",
138    "client/src/audio_volume_group_info.cpp",
139    "server/src/audio_client_tracker_callback_proxy.cpp",
140    "server/src/audio_group_handle.cpp",
141    "server/src/audio_policy_client_proxy.cpp",
142    "server/src/audio_policy_manager_listener_proxy.cpp",
143    "server/src/audio_policy_manager_stub.cpp",
144    "server/src/audio_policy_server.cpp",
145    "server/src/audio_policy_server_handler.cpp",
146    "server/src/audio_routing_manager_listener_proxy.cpp",
147    "server/src/audio_spatialization_state_change_listener_proxy.cpp",
148    "server/src/audio_stream_collector.cpp",
149    "server/src/service/audio_device_manager.cpp",
150    "server/src/service/audio_policy_service.cpp",
151    "server/src/service/audio_state_manager.cpp",
152    "server/src/service/config/audio_device_parser.cpp",
153    "server/src/service/config/audio_focus_parser.cpp",
154    "server/src/service/config/audio_strategy_router_parser.cpp",
155    "server/src/service/config/audio_usage_strategy_parser.cpp",
156    "server/src/service/config/audio_volume_parser.cpp",
157    "server/src/service/config/xml_parser.cpp",
158    "server/src/service/data_share_observer_callback.cpp",
159    "server/src/service/device_init_callback.cpp",
160    "server/src/service/effect/audio_effect_config_parser.cpp",
161    "server/src/service/effect/audio_effect_manager.cpp",
162    "server/src/service/listener/device_status_listener.cpp",
163    "server/src/service/listener/power_state_listener.cpp",
164    "server/src/service/manager/audio_adapter_manager.cpp",
165    "server/src/service/manager/pnp_server/audio_input_thread.cpp",
166    "server/src/service/manager/pnp_server/audio_pnp_server.cpp",
167    "server/src/service/manager/pnp_server/audio_socket_thread.cpp",
168    "server/src/service/routers/audio_router_center.cpp",
169    "server/src/service/routers/cockpit_phone_router.cpp",
170    "server/src/service/routers/default_router.cpp",
171    "server/src/service/routers/package_filter_router.cpp",
172    "server/src/service/routers/pair_device_router.cpp",
173    "server/src/service/routers/privacy_priority_router.cpp",
174    "server/src/service/routers/public_priority_router.cpp",
175    "server/src/service/routers/stream_filter_router.cpp",
176    "server/src/service/routers/user_select_router.cpp",
177    "server/src/service/spatialization/audio_spatialization_service.cpp",
178  ]
179
180  defines = []
181  if (audio_framework_feature_double_pnp_detect) {
182    defines += [ "AUDIO_DOUBLE_PNP_DETECT" ]
183  }
184
185  if (audio_framework_feature_dtmf_tone) {
186    sources += [ "server/src/service/config/audio_tone_parser.cpp" ]
187    defines += [ "FEATURE_DTMF_TONE" ]
188  }
189
190  public_configs = [ ":audio_policy_public_config" ]
191
192  deps = [
193    "../../frameworks/native/audioadapter:pulse_audio_service_adapter",
194    "../../frameworks/native/audioutils:audio_utils",
195    "../audio_policy:audio_config.para",
196    "../audio_policy:audio_config.para.dac",
197    "../audio_policy:audio_dump",
198    "../audio_service:audio_client",
199    "../audio_service:audio_common",
200    "//third_party/libxml2:xml2",
201  ]
202
203  include_dirs = [
204    "$pulseaudio_build_path/include",
205    "../../../../commonlibrary/c_utils/base/include",
206    "../../../../drivers/peripheral/audio/interfaces/include",
207    "../../../../drivers/peripheral/audio/hal/hdi_binder/server/include/",
208    "../../../../drivers/peripheral/audio/hdi_service/primary_impl/include/",
209    "//third_party/libxml2/include",
210    "//third_party/pulseaudio/src",
211    "//third_party/pulseaudio/confgure/src",
212    "//third_party/pulseaudio/include",
213  ]
214
215  external_deps = [
216    "ability_base:want",
217    "ability_base:zuri",
218    "ability_runtime:ability_context_native",
219    "ability_runtime:ability_manager",
220    "ability_runtime:app_context",
221    "ability_runtime:dataobs_manager",
222    "access_token:libaccesstoken_sdk",
223    "access_token:libprivacy_sdk",
224    "access_token:libtoken_setproc",
225    "access_token:libtokenid_sdk",
226    "bundle_framework:appexecfwk_base",
227    "bundle_framework:appexecfwk_core",
228    "c_utils:utils",
229    "data_share:datashare_common",
230    "data_share:datashare_consumer",
231    "drivers_interface_audio:audio_idl_headers",
232    "eventhandler:libeventhandler",
233    "hdf_core:libhdf_host",
234    "hdf_core:libhdf_ipc_adapter",
235    "hdf_core:libhdf_utils",
236    "hdf_core:libhdi",
237    "hdf_core:libpub_utils",
238    "hilog:libhilog",
239    "hisysevent:libhisysevent",
240    "init:libbegetutil",
241    "ipc:ipc_single",
242    "kv_store:distributeddata_inner",
243    "power_manager:power_setting",
244    "power_manager:powermgr_client",
245    "safwk:system_ability_fwk",
246    "samgr:samgr_proxy",
247  ]
248
249  if (audio_framework_config_policy_enable) {
250    defines += [ "USE_CONFIG_POLICY" ]
251    external_deps += [ "config_policy:configpolicy_util" ]
252  }
253
254  if (accessibility_enable == true) {
255    sources +=
256        [ "server/src/service/listener/accessibility_config_listener.cpp" ]
257    external_deps += [ "accessibility:accessibilityconfig" ]
258  }
259
260  if (bluetooth_part_enable == true) {
261    deps += [ "../../frameworks/native/bluetoothclient:audio_bluetooth_client" ]
262    external_deps += [ "bluetooth:btframework" ]
263    include_dirs += [ "../../../../foundation/communication/bluetooth/interfaces/inner_api/include" ]
264  }
265
266  if (audio_framework_feature_input) {
267    defines += [ "FEATURE_MULTIMODALINPUT_INPUT" ]
268    external_deps += [ "input:libmmi-client" ]
269  }
270
271  if (audio_framework_feature_device_manager) {
272    defines += [ "FEATURE_DEVICE_MANAGER" ]
273    external_deps += [ "device_manager:devicemanagersdk" ]
274  }
275
276  subsystem_name = "multimedia"
277  part_name = "audio_framework"
278}
279
280ohos_prebuilt_etc("audio_interrupt_policy_config") {
281  source = "server/config/audio_interrupt_policy_config.xml"
282
283  subsystem_name = "multimedia"
284  relative_install_dir = "audio"
285  part_name = "audio_framework"
286}
287
288ohos_prebuilt_etc("audio_strategy_router") {
289  source = "server/config/audio_strategy_router.xml"
290
291  subsystem_name = "multimedia"
292  relative_install_dir = "audio"
293  part_name = "audio_framework"
294}
295
296ohos_prebuilt_etc("audio_usage_strategy") {
297  source = "server/config/audio_usage_strategy.xml"
298
299  subsystem_name = "multimedia"
300  relative_install_dir = "audio"
301  part_name = "audio_framework"
302}
303
304ohos_prebuilt_etc("audio_device_config") {
305  source = "server/config/audio_device_privacy.xml"
306
307  subsystem_name = "multimedia"
308  relative_install_dir = "audio"
309  part_name = "audio_framework"
310}
311
312ohos_prebuilt_etc("audio_volume_config") {
313  source = "server/config/audio_volume_config.xml"
314
315  subsystem_name = "multimedia"
316  relative_install_dir = "audio"
317  part_name = "audio_framework"
318}
319
320if (audio_framework_feature_dtmf_tone) {
321  ohos_prebuilt_etc("audio_tone_dtmf_config") {
322    source = "server/config/audio_tone_dtmf_config.xml"
323
324    subsystem_name = "multimedia"
325    relative_install_dir = "audio"
326    part_name = "audio_framework"
327  }
328}
329
330ohos_prebuilt_etc("audio_effect_config") {
331  source = "server/config/audio_effect_config.xml"
332
333  subsystem_name = "multimedia"
334  relative_install_dir = "audio"
335  part_name = "audio_framework"
336}
337
338ohos_prebuilt_etc("audio_config.para") {
339  source = "etc/audio_config.para"
340  part_name = "audio_framework"
341  module_install_dir = "etc/param"
342}
343
344ohos_prebuilt_etc("audio_config.para.dac") {
345  source = "etc/audio_config.para.dac"
346  part_name = "audio_framework"
347  module_install_dir = "etc/param"
348}
349
350config("audio_policy_client_config") {
351  include_dirs = [
352    "client/include",
353    "common/include",
354    "server/include",
355    "../audio_service/client/include",
356    "../audio_service/common/include",
357    "../../frameworks/native/audiopolicy/include",
358    "../../interfaces/inner_api/native/audiocommon/include",
359    "../../interfaces/inner_api/native/audiomanager/include",
360  ]
361
362  cflags = [
363    "-Wall",
364    "-Werror",
365  ]
366
367  if (target_cpu == "arm") {
368    cflags += [ "-DBINDER_IPC_32BIT" ]
369  }
370}
371
372ohos_shared_library("audio_policy_client") {
373  sanitize = {
374    cfi = true
375    debug = false
376    blocklist = "../../cfi_blocklist.txt"
377  }
378  install_enable = true
379
380  defines = []
381  if (audio_framework_feature_dtmf_tone) {
382    defines += [ "FEATURE_DTMF_TONE" ]
383  }
384
385  sources = [
386    "../audio_service/client/src/audio_device_descriptor.cpp",
387    "../audio_service/client/src/microphone_descriptor.cpp",
388    "client/src/audio_client_tracker_callback_stub.cpp",
389    "client/src/audio_policy_callback_proxy.cpp",
390    "client/src/audio_policy_client_stub.cpp",
391    "client/src/audio_policy_client_stub_impl.cpp",
392    "client/src/audio_policy_manager.cpp",
393    "client/src/audio_policy_manager_listener_stub.cpp",
394    "client/src/audio_policy_proxy.cpp",
395    "client/src/audio_routing_manager_listener_stub.cpp",
396    "client/src/audio_spatialization_state_change_listener_stub.cpp",
397    "client/src/audio_volume_group_info.cpp",
398  ]
399
400  deps = [ "../../frameworks/native/audioutils:audio_utils" ]
401
402  public_configs = [ ":audio_policy_client_config" ]
403
404  include_dirs = [
405    "//third_party/bounds_checking_function/include",
406    "../../frameworks/native/audioutils/include",
407  ]
408
409  external_deps = [
410    "c_utils:utils",
411    "eventhandler:libeventhandler",
412    "hilog:libhilog",
413    "init:libbegetutil",
414    "ipc:ipc_single",
415    "samgr:samgr_proxy",
416  ]
417  subsystem_name = "multimedia"
418  innerapi_tags = [ "platformsdk" ]
419  part_name = "audio_framework"
420
421  ldflags = [ "-Wl,-Bsymbolic" ]
422}
423
424group("audio_policy_test_packages") {
425  deps = [ ":audio_policy_test" ]
426}
427
428ohos_executable("audio_policy_test") {
429  install_enable = false
430
431  sources = [ "test/example/audio_policy_test.cpp" ]
432
433  configs = [ ":audio_policy_client_config" ]
434
435  deps = [
436    "../audio_policy:audio_policy_client",
437    "../audio_service:audio_client",
438    "//third_party/bounds_checking_function:libsec_shared",
439  ]
440
441  include_dirs = [ "//third_party/bounds_checking_function/include" ]
442
443  external_deps = [
444    "c_utils:utils",
445    "hilog:libhilog",
446    "ipc:ipc_single",
447  ]
448
449  part_name = "audio_framework"
450  subsystem_name = "multimedia"
451}
452