1# Copyright (C) 2024 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("//foundation/multimedia/ringtone_library/ringtone_library.gni")
16
17config("ringtone_public_config") {
18  include_dirs = [
19    "${RINGTONE_SCANNER_PATH}/include",
20    "${RINGTONE_RESTORE_PATH}/include",
21    "${RINGTONE_EXTENSION_PATH}/include",
22    "${RINGTONE_DFX_PATH}/include",
23    "${RINGTONE_UTILS_PATH}/include",
24    "${RINGTONE_INTERFACES_PATH}/inner_api/native",
25    "${RINGTONE_SETTING_PATH}/include",
26  ]
27  ldflags = [ "-Wl,--gc-sections" ]
28
29  cflags = [
30    "-Wall",
31    "-Werror",
32    "-fvisibility=hidden",
33    "-fdata-sections",
34    "-ffunction-sections",
35    "-Wno-unused-but-set-variable",
36    "-Os",
37  ]
38
39  cflags_cc = [
40    "-fvisibility-inlines-hidden",
41    "-Os",
42  ]
43
44  if (target_cpu == "arm") {
45    cflags += [ "-DBINDER_IPC_32BIT" ]
46  }
47}
48
49ohos_shared_library("ringtone_data_extension") {
50  install_enable = true
51
52  ringtone_scan_source = [
53    "${RINGTONE_SCANNER_PATH}/src/ringtone_default_setting.cpp",
54    "${RINGTONE_SCANNER_PATH}/src/ringtone_metadata_extractor.cpp",
55    "${RINGTONE_SCANNER_PATH}/src/ringtone_scan_executor.cpp",
56    "${RINGTONE_SCANNER_PATH}/src/ringtone_scanner.cpp",
57    "${RINGTONE_SCANNER_PATH}/src/ringtone_scanner_db.cpp",
58    "${RINGTONE_SCANNER_PATH}/src/ringtone_scanner_manager.cpp",
59    "${RINGTONE_SCANNER_PATH}/src/ringtone_scanner_utils.cpp",
60  ]
61
62  ringtone_dfx_source = [
63    "${RINGTONE_DFX_PATH}/src/dfx_manager.cpp",
64    "${RINGTONE_DFX_PATH}/src/dfx_reporter.cpp",
65    "${RINGTONE_DFX_PATH}/src/dfx_worker.cpp",
66  ]
67
68  ringtone_extension_sources = [
69    "${RINGTONE_EXTENSION_PATH}/src/ringtone_bundle_manager.cpp",
70    "${RINGTONE_EXTENSION_PATH}/src/ringtone_data_command.cpp",
71    "${RINGTONE_EXTENSION_PATH}/src/ringtone_data_manager.cpp",
72    "${RINGTONE_EXTENSION_PATH}/src/ringtone_datashare_extension.cpp",
73    "${RINGTONE_EXTENSION_PATH}/src/ringtone_datashare_stub_impl.cpp",
74    "${RINGTONE_EXTENSION_PATH}/src/ringtone_language_manager.cpp",
75    "${RINGTONE_EXTENSION_PATH}/src/ringtone_rdbstore.cpp",
76    "${RINGTONE_EXTENSION_PATH}/src/ringtone_subscriber.cpp",
77  ]
78
79  sources = ringtone_extension_sources
80  sources += ringtone_scan_source
81  sources += ringtone_dfx_source
82
83  public_configs = [ ":ringtone_public_config" ]
84
85  deps = [
86    ":ringtone_param.para.dac",
87    ":ringtone_scanner_param.para",
88    ":ringtone_setting",
89    ":ringtone_setting_notifications.para",
90    ":ringtone_setting_ringtones.para",
91    ":ringtone_setting_shots.para",
92    ":ringtone_utils",
93    "${RINGTONE_ROOT_PATH}/services/ringtone_helper:ringtone_data_helper",
94  ]
95
96  external_deps = [
97    "ability_base:want",
98    "ability_base:zuri",
99    "ability_runtime:app_context",
100    "ability_runtime:app_manager",
101    "ability_runtime:extensionkit_native",
102    "ability_runtime:runtime",
103    "access_token:libaccesstoken_sdk",
104    "access_token:libprivacy_sdk",
105    "c_utils:utils",
106    "common_event_service:cesfwk_innerkits",
107    "data_share:datashare_common",
108    "data_share:datashare_consumer",
109    "data_share:datashare_provider",
110    "hilog:libhilog",
111    "hisysevent:libhisysevent",
112    "hitrace:hitrace_meter",
113    "init:libbegetutil",
114    "ipc:ipc_core",
115    "libxml2:libxml2",
116    "napi:ace_napi",
117    "player_framework:media_client",
118    "preferences:native_preferences",
119    "relational_store:native_rdb",
120    "relational_store:rdb_data_share_adapter",
121    "samgr:samgr_proxy",
122  ]
123
124  if (!ringtone_link_opt) {
125    sanitize = {
126      cfi = true
127      cfi_cross_dso = true
128      debug = false
129      integer_overflow = true
130      ubsan = true
131      boundary_sanitize = true
132      stack_protector_ret = true
133    }
134  }
135
136  if (ringtone_config_policy_enable) {
137    defines = [ "USE_CONFIG_POLICY" ]
138    external_deps += [ "config_policy:configpolicy_util" ]
139  }
140
141  subsystem_name = "multimedia"
142  part_name = "ringtone_library"
143}
144
145ohos_shared_library("ringtonerestore") {
146  include_dirs = [
147    "${RINGTONE_RESTORE_PATH}/include",
148    "${RINGTONE_UTILS_PATH}/include",
149    "${RINGTONE_INTERFACES_PATH}/inner_api/native",
150  ]
151
152  sources = [
153    "${RINGTONE_RESTORE_PATH}/src/dualfwk_conf_loader.cpp",
154    "${RINGTONE_RESTORE_PATH}/src/dualfwk_conf_parser.cpp",
155    "${RINGTONE_RESTORE_PATH}/src/dualfwk_sound_setting.cpp",
156    "${RINGTONE_RESTORE_PATH}/src/native_module_ohos_ringtone_restore.cpp",
157    "${RINGTONE_RESTORE_PATH}/src/ringtone_dualfwk_restore.cpp",
158    "${RINGTONE_RESTORE_PATH}/src/ringtone_rdb_transaction.cpp",
159    "${RINGTONE_RESTORE_PATH}/src/ringtone_restore.cpp",
160    "${RINGTONE_RESTORE_PATH}/src/ringtone_restore_base.cpp",
161    "${RINGTONE_RESTORE_PATH}/src/ringtone_restore_db_utils.cpp",
162    "${RINGTONE_RESTORE_PATH}/src/ringtone_restore_factory.cpp",
163    "${RINGTONE_RESTORE_PATH}/src/ringtone_restore_napi.cpp",
164  ]
165
166  configs = [ "//build/config/compiler:exceptions" ]
167
168  ldflags = [ "-Wl" ]
169
170  cflags_cc = [
171    "-fvisibility-inlines-hidden",
172    "-Os",
173  ]
174
175  deps = [
176    ":ringtone_data_extension",
177    ":ringtone_setting",
178    ":ringtone_utils",
179  ]
180
181  external_deps = [
182    "ability_base:zuri",
183    "ability_runtime:app_context",
184    "ability_runtime:app_manager",
185    "ability_runtime:extensionkit_native",
186    "ability_runtime:runtime",
187    "access_token:libaccesstoken_sdk",
188    "access_token:libnativetoken",
189    "access_token:libtoken_setproc",
190    "bundle_framework:appexecfwk_core",
191    "c_utils:utils",
192    "data_share:datashare_common",
193    "data_share:datashare_consumer",
194    "data_share:datashare_provider",
195    "hilog:libhilog",
196    "init:libbegetutil",
197    "libxml2:libxml2",
198    "media_library:media_library",
199    "napi:ace_napi",
200    "os_account:os_account_innerkits",
201    "player_framework:media_client",
202    "preferences:native_preferences",
203    "relational_store:native_rdb",
204    "relational_store:rdb_data_share_adapter",
205    "samgr:samgr_proxy",
206  ]
207
208  defines = []
209
210  sanitize = {
211    cfi = true
212    cfi_cross_dso = true
213    debug = false
214  }
215
216  relative_install_dir = "module/multimedia"
217  subsystem_name = "multimedia"
218  part_name = "ringtone_library"
219}
220
221config("ringtone_public_visible_config") {
222  visibility = [ ":*" ]
223}
224
225ohos_shared_library("ringtone_utils") {
226  install_enable = true
227
228  include_dirs = [
229    "${RINGTONE_DFX_PATH}/include",
230    "${RINGTONE_UTILS_PATH}/include",
231    "${RINGTONE_INTERFACES_PATH}/inner_api/native",
232  ]
233
234  sources = [
235    "${RINGTONE_UTILS_PATH}/src/permission_utils.cpp",
236    "${RINGTONE_UTILS_PATH}/src/ringtone_file_utils.cpp",
237    "${RINGTONE_UTILS_PATH}/src/ringtone_mimetype_utils.cpp",
238    "${RINGTONE_UTILS_PATH}/src/ringtone_privacy_manager.cpp",
239    "${RINGTONE_UTILS_PATH}/src/ringtone_rdb_callbacks.cpp",
240    "${RINGTONE_UTILS_PATH}/src/ringtone_utils.cpp",
241  ]
242
243  public_configs = [ ":ringtone_public_visible_config" ]
244
245  cflags = [
246    "-Wall",
247    "-Werror",
248    "-Wno-unused-but-set-variable",
249    "-fdata-sections",
250    "-ffunction-sections",
251    "-Os",
252  ]
253
254  cflags_cc = [
255    "-fvisibility-inlines-hidden",
256    "-Os",
257  ]
258
259  external_deps = [
260    "ability_base:want",
261    "access_token:libaccesstoken_sdk",
262    "access_token:libprivacy_sdk",
263    "access_token:libtokenid_sdk",
264    "bundle_framework:appexecfwk_core",
265    "c_utils:utils",
266    "hilog:libhilog",
267    "hitrace:hitrace_meter",
268    "init:libbegetutil",
269    "ipc:ipc_core",
270    "preferences:native_preferences",
271    "relational_store:native_rdb",
272    "samgr:samgr_proxy",
273  ]
274
275  if (!ringtone_link_opt) {
276    sanitize = {
277      cfi = true
278      cfi_cross_dso = true
279      debug = false
280      integer_overflow = true
281      ubsan = true
282      boundary_sanitize = true
283      stack_protector_ret = true
284    }
285  }
286
287  subsystem_name = "multimedia"
288  part_name = "ringtone_library"
289}
290
291ohos_shared_library("ringtone_setting") {
292  install_enable = true
293  include_dirs = [
294    "${RINGTONE_INTERFACES_PATH}/inner_api/native",
295    "${RINGTONE_SETTING_PATH}/include",
296    "${RINGTONE_UTILS_PATH}/include",
297  ]
298
299  sources = [
300    "${RINGTONE_SETTING_PATH}/src/ringtone_metadata.cpp",
301    "${RINGTONE_SETTING_PATH}/src/ringtone_setting_manager.cpp",
302    "${RINGTONE_SETTING_PATH}/src/vibrate_metadata.cpp",
303  ]
304
305  configs = [ "//build/config/compiler:exceptions" ]
306
307  deps = [ ":ringtone_utils" ]
308
309  public_configs = [ ":ringtone_public_visible_config" ]
310
311  ldflags = [ "-Wl,--gc-sections" ]
312
313  cflags = [
314    "-Wall",
315    "-Werror",
316    "-fvisibility=hidden",
317    "-fdata-sections",
318    "-ffunction-sections",
319    "-Wno-unused-but-set-variable",
320    "-Os",
321  ]
322
323  cflags_cc = [
324    "-fvisibility-inlines-hidden",
325    "-Os",
326  ]
327
328  external_deps = [
329    "c_utils:utils",
330    "hilog:libhilog",
331    "relational_store:native_rdb",
332  ]
333
334  defines = []
335
336  if (!ringtone_link_opt) {
337    sanitize = {
338      cfi = true
339      cfi_cross_dso = true
340      debug = false
341      integer_overflow = true
342      ubsan = true
343      boundary_sanitize = true
344      stack_protector_ret = true
345    }
346  }
347
348  subsystem_name = "multimedia"
349  part_name = "ringtone_library"
350}
351
352ohos_prebuilt_etc("ringtone_scanner_param.para") {
353  source = "etc/ringtone_scanner_param.para"
354  subsystem_name = "multimedia"
355  part_name = "ringtone_library"
356  module_install_dir = "etc/param"
357}
358
359ohos_prebuilt_etc("ringtone_setting_notifications.para") {
360  source = "etc/ringtone_setting_notifications.para"
361  subsystem_name = "multimedia"
362  part_name = "ringtone_library"
363  module_install_dir = "etc/param"
364}
365
366ohos_prebuilt_etc("ringtone_setting_ringtones.para") {
367  source = "etc/ringtone_setting_ringtones.para"
368  subsystem_name = "multimedia"
369  part_name = "ringtone_library"
370  module_install_dir = "etc/param"
371}
372
373ohos_prebuilt_etc("ringtone_setting_shots.para") {
374  source = "etc/ringtone_setting_shots.para"
375  subsystem_name = "multimedia"
376  part_name = "ringtone_library"
377  module_install_dir = "etc/param"
378}
379
380ohos_prebuilt_etc("ringtone_param.para.dac") {
381  source = "etc/ringtone_param.para.dac"
382  subsystem_name = "multimedia"
383  part_name = "ringtone_library"
384  module_install_dir = "etc/param"
385}
386