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