1# Copyright (c) 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("../../../config.gni")
16
17config("audio_config") {
18  include_dirs = [
19    "../audiocapturer/include",
20    "../audiorenderer/include",
21    "../../../interfaces/inner_api/native/audiocapturer/include",
22    "../../../interfaces/inner_api/native/audiocommon/include",
23    "../../../interfaces/inner_api/native/audiomanager/include",
24    "../../../interfaces/inner_api/native/audiorenderer/include",
25    "../../../interfaces/inner_api/native/audiostream/include",
26    "../../../services/audio_service/client/include",
27  ]
28
29  cflags = [
30    "-Wall",
31    "-Werror",
32  ]
33}
34
35if (!audio_framework_feature_opensl_es) {
36  group("opensles") {
37    deps = []
38  }
39} else {
40  ohos_shared_library("opensles") {
41    sanitize = {
42      cfi = true
43      cfi_cross_dso = true
44      cfi_vcall_icall_only = true
45      debug = false
46    }
47    include_dirs = [
48      "include",
49      "../../../interfaces/inner_api/native/andiocapturer/include/",
50      "../../../interfaces/inner_api/native/andiomanager/include/",
51      "../../../interfaces/inner_api/native/andiorenderer/include/",
52    ]
53
54    configs = [ ":audio_config" ]
55
56    sources = [
57      "src/adapter/audiocapturer_adapter.cpp",
58      "src/adapter/audioplayer_adapter.cpp",
59      "src/adapter/readorwritecallback_adapter.cpp",
60      "src/itf/engine_itf.cpp",
61      "src/itf/object_itf.cpp",
62      "src/itf/openharmony_buffer_queue_itf.cpp",
63      "src/itf/play_itf.cpp",
64      "src/itf/record_itf.cpp",
65      "src/itf/volume_itf.cpp",
66      "src/obj/audiocapturer_obj.cpp",
67      "src/obj/audioplayer_obj.cpp",
68      "src/obj/engine_obj.cpp",
69      "src/obj/output_mix_obj.cpp",
70      "src/util/builder.cpp",
71      "src/util/table_struct.cpp",
72    ]
73
74    cflags = [ "-Werror" ]
75
76    deps = [
77      "../../../services/audio_service:audio_client",
78      "../audiocapturer:audio_capturer",
79      "../audiorenderer:audio_renderer",
80    ]
81
82    external_deps = [
83      "c_utils:utils",
84      "hilog:libhilog",
85      "ipc:ipc_single",
86      "opensles:libSLES",
87    ]
88
89    output_name = "OpenSLES"
90    output_extension = "so"
91    innerapi_tags = [ "platformsdk" ]
92    subsystem_name = "multimedia"
93    part_name = "audio_framework"
94  }
95}
96
97group("audio_opensles_test_packages") {
98  deps = [
99    ":audio_opensles_player_test",
100    ":audio_opensles_recorder_test",
101  ]
102}
103
104config("audio_operation_config") {
105  include_dirs = [
106    "../audiocapturer/include",
107    "../audiorenderer/include",
108    "../../../interfaces/inner_api/native/audiocapturer/include",
109    "../../../interfaces/inner_api/native/audiocommon/include",
110    "../../../interfaces/inner_api/native/audiomanager/include",
111    "../../../interfaces/inner_api/native/audiorenderer/include",
112    "../../../interfaces/inner_api/native/audiostream/include",
113    "../../../services/audio_service/client/include",
114    "../../../services/audio_service/test/example",
115  ]
116
117  cflags = [
118    "-Wall",
119    "-Werror",
120  ]
121}
122
123config("audio_opensles_config") {
124  include_dirs = [ "include" ]
125}
126
127if (!audio_framework_feature_opensl_es) {
128  group("audio_opensles_player_test") {
129    deps = []
130  }
131} else {
132  ohos_executable("audio_opensles_player_test") {
133    install_enable = false
134
135    sources = [ "test/example/audio_opensles_player_test.cpp" ]
136
137    configs = [
138      ":audio_opensles_config",
139      ":audio_operation_config",
140    ]
141
142    deps = [ ":opensles" ]
143
144    external_deps = [
145      "hilog:libhilog",
146      "opensles:libSLES",
147      "pulseaudio:pulse",
148    ]
149
150    part_name = "audio_framework"
151    subsystem_name = "multimedia"
152  }
153}
154
155if (!audio_framework_feature_opensl_es) {
156  group("audio_opensles_recorder_test") {
157    deps = []
158  }
159} else {
160  ohos_executable("audio_opensles_recorder_test") {
161    install_enable = false
162
163    sources = [ "test/example/audio_opensles_recorder_test.cpp" ]
164
165    configs = [
166      ":audio_opensles_config",
167      ":audio_operation_config",
168    ]
169
170    deps = [ ":opensles" ]
171
172    external_deps = [
173      "bounds_checking_function:libsec_shared",
174      "hilog:libhilog",
175      "opensles:libSLES",
176      "pulseaudio:pulse",
177    ]
178
179    part_name = "audio_framework"
180    subsystem_name = "multimedia"
181  }
182}
183