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