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("//build/ohos/ace/ace.gni")
16import("../../../config.gni")
17import("../../../multimedia_aafwk.gni")
18
19ohos_shared_library("audio") {
20  sanitize = {
21    cfi = true
22    cfi_cross_dso = true
23    cfi_vcall_icall_only = true
24    debug = false
25  }
26  include_dirs = [
27    "common",
28    "audiorenderer",
29    "audiorenderer/callback",
30    "audiocapturer",
31    "audiocapturer/callback",
32    "audiomanager",
33    "audiomanager/callback",
34    "asrcontroller",
35  ]
36
37  if (audio_framework_feature_new_napi) {
38    sources = [
39      "asrcontroller/napi_asr_processing_controller.cpp",
40      "audiocapturer/callback/napi_audio_capturer_callbacks.cpp",
41      "audiocapturer/callback/napi_audio_capturer_device_change_callback.cpp",
42      "audiocapturer/callback/napi_audio_capturer_info_change_callback.cpp",
43      "audiocapturer/callback/napi_audio_capturer_read_data_callback.cpp",
44      "audiocapturer/callback/napi_capturer_period_position_callback.cpp",
45      "audiocapturer/callback/napi_capturer_position_callback.cpp",
46      "audiocapturer/napi_audio_capturer.cpp",
47      "audiomanager/callback/napi_audio_capturer_state_callback.cpp",
48      "audiomanager/callback/napi_audio_manager_callbacks.cpp",
49      "audiomanager/callback/napi_audio_manager_interrupt_callback.cpp",
50      "audiomanager/callback/napi_audio_micstatechange_callback.cpp",
51      "audiomanager/callback/napi_audio_renderer_state_callback.cpp",
52      "audiomanager/callback/napi_audio_ringermode_callback.cpp",
53      "audiomanager/callback/napi_audio_rounting_available_devicechange_callback.cpp",
54      "audiomanager/callback/napi_audio_routing_manager_callbacks.cpp",
55      "audiomanager/callback/napi_audio_session_callback.cpp",
56      "audiomanager/callback/napi_audio_spatialization_manager_callback.cpp",
57      "audiomanager/callback/napi_audio_volume_key_event.cpp",
58      "audiomanager/napi_audio_interrupt_manager.cpp",
59      "audiomanager/napi_audio_manager.cpp",
60      "audiomanager/napi_audio_routing_manager.cpp",
61      "audiomanager/napi_audio_session_manager.cpp",
62      "audiomanager/napi_audio_spatialization_manager.cpp",
63      "audiomanager/napi_audio_stream_manager.cpp",
64      "audiomanager/napi_audio_volume_group_manager.cpp",
65      "audiomanager/napi_audio_volume_manager.cpp",
66      "audiorenderer/callback/napi_audio_renderer_callback.cpp",
67      "audiorenderer/callback/napi_audio_renderer_device_change_callback.cpp",
68      "audiorenderer/callback/napi_audio_renderer_policy_service_died_callback.cpp",
69      "audiorenderer/callback/napi_audio_renderer_write_data_callback.cpp",
70      "audiorenderer/callback/napi_renderer_data_request_callback.cpp",
71      "audiorenderer/callback/napi_renderer_period_position_callback.cpp",
72      "audiorenderer/callback/napi_renderer_position_callback.cpp",
73      "audiorenderer/napi_audio_renderer.cpp",
74      "common/napi_async_work.cpp",
75      "common/napi_audio_entry.cpp",
76      "common/napi_audio_enum.cpp",
77      "common/napi_audio_error.cpp",
78      "common/napi_param_utils.cpp",
79    ]
80  }
81
82  deps = [
83    "../../../services/audio_policy:audio_policy_client",
84    "../../../services/audio_service:audio_client",
85    "../../native/audiocapturer:audio_capturer",
86    "../../native/audiorenderer:audio_renderer",
87    "../../native/audioutils:audio_utils",
88  ]
89
90  defines = []
91  if (audio_framework_feature_dtmf_tone) {
92    defines += [ "FEATURE_DTMF_TONE" ]
93
94    sources += [ "audiorenderer/napi_toneplayer.cpp" ]
95
96    deps += [ "../../native/toneplayer:audio_toneplayer" ]
97  }
98
99  external_deps = [
100    "ability_base:session_info",
101    "ability_base:want",
102    "ability_runtime:abilitykit_native",
103    "ability_runtime:extensionkit_native",
104    "ability_runtime:mission_info",
105    "ability_runtime:napi_base_context",
106    "ability_runtime:wantagent_innerkits",
107    "bundle_framework:appexecfwk_base",
108    "c_utils:utils",
109    "eventhandler:libeventhandler",
110    "hilog:libhilog",
111    "init:libbegetutil",
112    "ipc:ipc_single",
113    "libuv:uv",
114    "napi:ace_napi",
115  ]
116
117  if (audio_framework_feature_hiview_enable) {
118    defines += [ "FEATURE_HIVIEW_ENABLE" ]
119    external_deps += [ "hiview:libxpower_event_js" ]
120  }
121
122  relative_install_dir = "module/multimedia"
123  part_name = "audio_framework"
124  subsystem_name = "multimedia"
125}
126