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