• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2025 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.
13import("//build/ohos.gni")
14import("//foundation/distributeddatamgr/relational_store/relational_store.gni")
15
16base_sources = [
17  "${relational_store_native_path}/dfx/src/rdb_stat_reporter.cpp",
18  "${relational_store_native_path}/rdb/src/abs_predicates.cpp",
19  "${relational_store_native_path}/rdb/src/abs_rdb_predicates.cpp",
20  "${relational_store_native_path}/rdb/src/abs_result_set.cpp",
21  "${relational_store_native_path}/rdb/src/base_transaction.cpp",
22  "${relational_store_native_path}/rdb/src/big_integer.cpp",
23  "${relational_store_native_path}/rdb/src/cache_result_set.cpp",
24  "${relational_store_native_path}/rdb/src/connection.cpp",
25  "${relational_store_native_path}/rdb/src/connection_pool.cpp",
26  "${relational_store_native_path}/rdb/src/delay_notify.cpp",
27  "${relational_store_native_path}/rdb/src/global_resource.cpp",
28  "${relational_store_native_path}/rdb/src/knowledge_schema_helper.cpp",
29  "${relational_store_native_path}/rdb/src/raw_data_parser.cpp",
30  "${relational_store_native_path}/rdb/src/rdb_helper.cpp",
31  "${relational_store_native_path}/rdb/src/rdb_icu_manager.cpp",
32  "${relational_store_native_path}/rdb/src/rdb_local_db_observer.cpp",
33  "${relational_store_native_path}/rdb/src/rdb_obs_manager.cpp",
34  "${relational_store_native_path}/rdb/src/rdb_perfStat.cpp",
35  "${relational_store_native_path}/rdb/src/rdb_predicates.cpp",
36  "${relational_store_native_path}/rdb/src/rdb_security_manager.cpp",
37  "${relational_store_native_path}/rdb/src/rdb_sql_log.cpp",
38  "${relational_store_native_path}/rdb/src/rdb_sql_statistic.cpp",
39  "${relational_store_native_path}/rdb/src/rdb_sql_utils.cpp",
40  "${relational_store_native_path}/rdb/src/rdb_store.cpp",
41  "${relational_store_native_path}/rdb/src/rdb_store_config.cpp",
42  "${relational_store_native_path}/rdb/src/rdb_store_impl.cpp",
43  "${relational_store_native_path}/rdb/src/rdb_store_manager.cpp",
44  "${relational_store_native_path}/rdb/src/sqlite_connection.cpp",
45  "${relational_store_native_path}/rdb/src/sqlite_default_function.cpp",
46  "${relational_store_native_path}/rdb/src/sqlite_global_config.cpp",
47  "${relational_store_native_path}/rdb/src/sqlite_sql_builder.cpp",
48  "${relational_store_native_path}/rdb/src/sqlite_statement.cpp",
49  "${relational_store_native_path}/rdb/src/sqlite_utils.cpp",
50  "${relational_store_native_path}/rdb/src/step_result_set.cpp",
51  "${relational_store_native_path}/rdb/src/string_utils.cpp",
52  "${relational_store_native_path}/rdb/src/suspender.cpp",
53  "${relational_store_native_path}/rdb/src/trans_db.cpp",
54  "${relational_store_native_path}/rdb/src/transaction.cpp",
55  "${relational_store_native_path}/rdb/src/transaction_impl.cpp",
56  "${relational_store_native_path}/rdb/src/value_object.cpp",
57  "${relational_store_native_path}/rdb/src/values_bucket.cpp",
58  "${relational_store_native_path}/rdb/src/values_buckets.cpp",
59]
60
61if (!is_ohos) {
62  base_sources += [
63    "${relational_store_mock_path}/frameworks/native/rdb/mock.cpp",
64    "${relational_store_native_path}/rdb/mock/src/rdb_fault_hiview_reporter.cpp",
65    "${relational_store_native_path}/rdb/mock/src/rdb_time_utils.cpp",
66  ]
67}
68
69if (is_ohos && !build_ohos_sdk) {
70  config("native_rdb_config") {
71    visibility = [ ":*" ]
72
73    cflags = [ "-Wno-c99-designator" ]
74    include_dirs = [
75      "include",
76      "${relational_store_common_path}/include",
77      "${relational_store_native_path}/rdb_crypt",
78      "${relational_store_native_path}/rdb/include",
79      "${relational_store_native_path}/dfx/include",
80      "${relational_store_native_path}/obs_mgr_adapter",
81    ]
82
83    defines = [
84      "RELATIONAL_STORE",
85      "SQLITE_HAS_CODEC",
86      "RDB_TRACE_ON",
87    ]
88
89    defines += [ "SQLITE_DISTRIBUTE_RELATIONAL" ]
90    if (!defined(global_parts_info) ||
91        defined(global_parts_info.distributeddatamgr_arkdata_database_core)) {
92      defines += [ "ARKDATA_DATABASE_CORE_ENABLE" ]
93    }
94  }
95
96  config("native_rdb_public_config") {
97    visibility = [ ":*" ]
98
99    include_dirs = [
100      "include",
101      "${relational_store_native_path}/rdb/include",
102      "${relational_store_native_path}/dfx/include",
103      "${relational_store_native_path}/obs_mgr_adapter",
104      "${relational_store_innerapi_path}/appdatafwk/include",
105      "../cloud_data/include",
106      "../common_type/include",
107    ]
108  }
109
110  ohos_shared_library("native_rdb") {
111    branch_protector_ret = "pac_ret"
112    sanitize = {
113      boundary_sanitize = true
114      ubsan = true
115      cfi = true
116      cfi_cross_dso = true
117      debug = false
118    }
119
120    part_name = "relational_store"
121    sources = base_sources
122
123    configs = [ ":native_rdb_config" ]
124
125    ldflags = [ "-Wl,--exclude-libs,ALL" ]
126    cflags_cc = [ "-fvisibility=hidden" ]
127    sources += [
128      "${relational_store_native_path}/dfx/src/rdb_fault_hiview_reporter.cpp",
129      "${relational_store_native_path}/dfx/src/rdb_radar_reporter.cpp",
130      "${relational_store_native_path}/rdb/src/abs_shared_result_set.cpp",
131      "${relational_store_native_path}/rdb/src/grd_api_manager.cpp",
132      "${relational_store_native_path}/rdb/src/rd_connection.cpp",
133      "${relational_store_native_path}/rdb/src/rd_statement.cpp",
134      "${relational_store_native_path}/rdb/src/rd_utils.cpp",
135      "${relational_store_native_path}/rdb/src/rdb_manager_impl.cpp",
136      "${relational_store_native_path}/rdb/src/rdb_notifier_stub.cpp",
137      "${relational_store_native_path}/rdb/src/rdb_service_proxy.cpp",
138      "${relational_store_native_path}/rdb/src/rdb_time_utils.cpp",
139      "${relational_store_native_path}/rdb/src/rdb_types_util.cpp",
140      "${relational_store_native_path}/rdb/src/result_set_proxy.cpp",
141      "${relational_store_native_path}/rdb/src/security_policy.cpp",
142      "${relational_store_native_path}/rdb/src/share_block.cpp",
143      "${relational_store_native_path}/rdb/src/shared_block_serializer_info.cpp",
144      "${relational_store_native_path}/rdb/src/sqlite_shared_result_set.cpp",
145      "${relational_store_native_path}/rdb/src/task_executor.cpp",
146    ]
147
148    deps = [
149      "${relational_store_innerapi_path}/appdatafwk:native_appdatafwk",
150      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
151    ]
152
153    external_deps = [
154      "c_utils:utils",
155      "file_api:securitylabel",
156      "hilog:libhilog",
157      "hisysevent:libhisysevent",
158      "hitrace:hitrace_meter",
159      "ipc:ipc_core",
160      "json:nlohmann_json_static",
161      "kv_store:database_utils",
162      "kv_store:datamgr_common",
163      "kv_store:distributeddb_client",
164      "samgr:samgr_proxy",
165      "sqlite:sqlite",
166      "sqlite:sqliteicu",
167    ]
168
169    if (arkdata_db_core_is_exists) {
170      defines = [ "ARKDATA_DB_CORE_IS_EXISTS" ]
171    }
172
173    public_configs = [ ":native_rdb_public_config" ]
174    innerapi_tags = [
175      "platformsdk",
176      "sasdk",
177    ]
178    subsystem_name = "distributeddatamgr"
179  }
180
181  ohos_static_library("native_rdb_static") {
182    branch_protector_ret = "pac_ret"
183    sanitize = {
184      boundary_sanitize = true
185      ubsan = true
186      cfi = true
187      cfi_cross_dso = true
188      debug = false
189    }
190
191    sources = base_sources
192
193    configs = [ ":native_rdb_config" ]
194
195    ldflags = [ "-Wl,--exclude-libs,ALL" ]
196
197    sources += [
198      "${relational_store_native_path}/dfx/src/rdb_fault_hiview_reporter.cpp",
199      "${relational_store_native_path}/dfx/src/rdb_radar_reporter.cpp",
200      "${relational_store_native_path}/rdb/src/abs_shared_result_set.cpp",
201      "${relational_store_native_path}/rdb/src/grd_api_manager.cpp",
202      "${relational_store_native_path}/rdb/src/rd_connection.cpp",
203      "${relational_store_native_path}/rdb/src/rd_statement.cpp",
204      "${relational_store_native_path}/rdb/src/rd_utils.cpp",
205      "${relational_store_native_path}/rdb/src/rdb_manager_impl.cpp",
206      "${relational_store_native_path}/rdb/src/rdb_notifier_stub.cpp",
207      "${relational_store_native_path}/rdb/src/rdb_service_proxy.cpp",
208      "${relational_store_native_path}/rdb/src/rdb_time_utils.cpp",
209      "${relational_store_native_path}/rdb/src/rdb_types_util.cpp",
210      "${relational_store_native_path}/rdb/src/result_set_proxy.cpp",
211      "${relational_store_native_path}/rdb/src/security_policy.cpp",
212      "${relational_store_native_path}/rdb/src/share_block.cpp",
213      "${relational_store_native_path}/rdb/src/shared_block_serializer_info.cpp",
214      "${relational_store_native_path}/rdb/src/sqlite_shared_result_set.cpp",
215      "${relational_store_native_path}/rdb/src/task_executor.cpp",
216    ]
217
218    public_deps = [
219      "${relational_store_innerapi_path}/appdatafwk:native_appdatafwk",
220      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
221    ]
222
223    external_deps = [
224      "c_utils:utils",
225      "file_api:securitylabel",
226      "hilog:libhilog",
227      "hisysevent:libhisysevent",
228      "hitrace:hitrace_meter",
229      "ipc:ipc_core",
230      "json:nlohmann_json_static",
231      "kv_store:database_utils",
232      "kv_store:datamgr_common",
233      "kv_store:distributeddb_client",
234      "samgr:samgr_proxy",
235      "sqlite:sqlite",
236      "sqlite:sqliteicu",
237    ]
238
239    public_configs = [ ":native_rdb_public_config" ]
240
241    subsystem_name = "distributeddatamgr"
242    part_name = "relational_store"
243  }
244} else if (is_mingw) {
245  config("native_rdb_config") {
246    visibility = [ ":*" ]
247
248    include_dirs = [
249      "${relational_store_mock_path}/frameworks/native/rdb",
250      "${relational_store_mock_path}/frameworks/native/rdb/common",
251      "${relational_store_mock_path}/frameworks/native/win32",
252      "mock/include",
253      "${relational_store_common_path}/include",
254      "${relational_store_native_path}/rdb/mock/include",
255      "//commonlibrary/c_utils/base/include",
256      "include",
257      "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
258      "${relational_store_native_path}/rdb_crypt",
259      "${relational_store_native_path}/rdb/include",
260      "${relational_store_native_path}/dfx/include",
261      "${relational_store_native_path}/obs_mgr_adapter",
262      "//third_party/libuv/src/win",
263    ]
264
265    cflags = [ "-includemock.h" ]
266    defines = [
267      "RELATIONAL_STORE",
268      "SQLITE_HAS_CODEC",
269    ]
270
271    defines += [
272      "WINDOWS_PLATFORM",
273      "CROSS_PLATFORM",
274    ]
275    include_dirs += [
276      "//foundation/distributeddatamgr/kv_store/frameworks/common",
277      "//third_party/sqlite/include",
278      "//third_party/json/single_include",
279    ]
280    libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libws2_32.a" ]
281  }
282
283  config("native_rdb_public_config") {
284    visibility = [ ":*" ]
285
286    include_dirs = [
287      "mock/include",
288      "include",
289      "//third_party/libuv/src/win",
290      "../cloud_data/include",
291      "../common_type/include",
292    ]
293  }
294
295  ohos_shared_library("native_rdb") {
296    part_name = "relational_store"
297    sources = base_sources
298
299    configs = [ ":native_rdb_config" ]
300
301    sources += [
302      "${relational_store_mock_path}/frameworks/native/win32/dlfcn.cpp",
303      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
304      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
305    ]
306
307    deps = [
308      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
309      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_windows",
310      "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata:distributeddata_inner_executor",
311      "//third_party/sqlite:sqlite_sdk",
312    ]
313
314    cflags_cc = [ "-std=c++17" ]
315
316    public_configs = [ ":native_rdb_public_config" ]
317    innerapi_tags = [ "platformsdk" ]
318    subsystem_name = "distributeddatamgr"
319  }
320
321  ohos_static_library("native_rdb_static") {
322    sources = base_sources
323
324    configs = [ ":native_rdb_config" ]
325
326    sources += [
327      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
328      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
329    ]
330
331    deps = [
332      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
333      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_windows",
334      "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata:distributeddata_inner_executor",
335      "//third_party/sqlite:sqlite_sdk",
336    ]
337    cflags_cc = [ "-std=c++17" ]
338
339    public_configs = [ ":native_rdb_public_config" ]
340
341    subsystem_name = "distributeddatamgr"
342    part_name = "relational_store"
343  }
344} else if (is_mac) {
345  config("native_rdb_config") {
346    visibility = [ ":*" ]
347
348    include_dirs = [
349      "${relational_store_mock_path}/frameworks/native/rdb",
350      "${relational_store_mock_path}/frameworks/native/rdb/common",
351      "mock/include",
352      "${relational_store_common_path}/include",
353      "${relational_store_native_path}/rdb/mock/include",
354      "//commonlibrary/c_utils/base/include",
355      "include",
356      "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
357      "${relational_store_native_path}/rdb_crypt",
358      "${relational_store_native_path}/rdb/include",
359      "${relational_store_native_path}/dfx/include",
360      "${relational_store_native_path}/obs_mgr_adapter",
361    ]
362
363    cflags = [ "-includemock.h" ]
364    defines = [
365      "RELATIONAL_STORE",
366      "SQLITE_HAS_CODEC",
367    ]
368
369    defines += [
370      "MAC_PLATFORM",
371      "CROSS_PLATFORM",
372    ]
373    include_dirs += [
374      "//foundation/distributeddatamgr/kv_store/frameworks/common",
375      "//third_party/sqlite/include",
376      "//third_party/json/single_include",
377    ]
378  }
379
380  config("native_rdb_public_config") {
381    visibility = [ ":*" ]
382
383    include_dirs = [
384      "mock/include",
385      "include",
386      "../cloud_data/include",
387      "../common_type/include",
388    ]
389  }
390
391  ohos_shared_library("native_rdb") {
392    part_name = "relational_store"
393    sources = base_sources
394
395    configs = [ ":native_rdb_config" ]
396
397    sources += [
398      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
399      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
400    ]
401
402    deps = [
403      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
404      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_mac",
405      "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata:distributeddata_inner_executor",
406      "//third_party/sqlite:sqlite_sdk",
407    ]
408    cflags_cc = [ "-std=c++17" ]
409
410    public_configs = [ ":native_rdb_public_config" ]
411    innerapi_tags = [ "platformsdk" ]
412    subsystem_name = "distributeddatamgr"
413  }
414
415  ohos_static_library("native_rdb_static") {
416    sources = base_sources
417
418    configs = [ ":native_rdb_config" ]
419
420    sources += [
421      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
422      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
423    ]
424
425    deps = [
426      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
427      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_mac",
428      "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata:distributeddata_inner_executor",
429      "//third_party/sqlite:sqlite_sdk",
430    ]
431    cflags_cc = [ "-std=c++17" ]
432
433    public_configs = [ ":native_rdb_public_config" ]
434
435    subsystem_name = "distributeddatamgr"
436    part_name = "relational_store"
437  }
438} else if (is_android) {
439  config("native_rdb_config") {
440    visibility = [ ":*" ]
441
442    include_dirs = [
443      "${relational_store_mock_path}/frameworks/native/rdb",
444      "${relational_store_mock_path}/frameworks/native/rdb/common",
445      "${distributedfile_path}/mod_securitylabel",
446      "${relational_store_common_path}/include",
447      "${relational_store_innerapi_path}/rdb/mock/include",
448      "${relational_store_native_path}/rdb/mock/include",
449      "${relational_store_innerapi_path}/rdb/include",
450      "${relational_store_native_path}/rdb_crypt",
451      "${relational_store_native_path}/rdb/include",
452      "${relational_store_native_path}/dfx/include",
453      "${relational_store_native_path}/obs_mgr_adapter",
454    ]
455
456    cflags = [ "-includemock.h" ]
457    defines = [
458      "RELATIONAL_STORE",
459      "SQLITE_HAS_CODEC",
460    ]
461  }
462
463  config("native_rdb_public_config") {
464    visibility = [ ":*" ]
465
466    include_dirs = [
467      "mock/include",
468      "include",
469      "${relational_store_native_path}/mock/rdb/include",
470      "${relational_store_native_path}/rdb/include",
471      "${relational_store_native_path}/dfx/include",
472      "${relational_store_native_path}/obs_mgr_adapter",
473      "../cloud_data/include",
474      "../common_type/include",
475      "//commonlibrary/c_utils/base/include",
476      "//third_party/json/single_include",
477    ]
478  }
479
480  ohos_source_set("native_rdb") {
481    defines = [
482      "ANDROID_PLATFORM",
483      "CROSS_PLATFORM",
484    ]
485
486    part_name = "relational_store"
487
488    sources = base_sources
489
490    configs = [ ":native_rdb_config" ]
491
492    sources += [
493      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
494      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
495      "${relational_store_native_path}/rdb/src/security_policy.cpp",
496    ]
497    deps = [
498      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
499      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_android",
500      "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata:distributeddata_inner_executor",
501      "//third_party/sqlite:sqlite_static",
502    ]
503    cflags_cc = [ "-std=c++17" ]
504
505    public_configs = [ ":native_rdb_public_config" ]
506    subsystem_name = "distributeddatamgr"
507  }
508} else if (is_ios) {
509  config("native_rdb_config") {
510    visibility = [ ":*" ]
511
512    include_dirs = [
513      "${relational_store_mock_path}/frameworks/native/rdb",
514      "${relational_store_mock_path}/frameworks/native/rdb/common",
515      "${distributedfile_path}/mod_securitylabel",
516      "${relational_store_common_path}/include",
517      "${relational_store_innerapi_path}/rdb/mock/include",
518      "${relational_store_native_path}/rdb/mock/include",
519      "${relational_store_innerapi_path}/rdb/include",
520      "${relational_store_native_path}/rdb_crypt",
521      "${relational_store_native_path}/rdb/include",
522      "${relational_store_native_path}/dfx/include",
523      "${relational_store_native_path}/obs_mgr_adapter",
524    ]
525
526    cflags = [ "-includemock.h" ]
527    defines = [
528      "RELATIONAL_STORE",
529      "SQLITE_HAS_CODEC",
530    ]
531  }
532
533  config("native_rdb_public_config") {
534    visibility = [ ":*" ]
535
536    include_dirs = [
537      "mock/include",
538      "include",
539      "${relational_store_native_path}/rdb/include",
540      "${relational_store_native_path}/dfx/include",
541      "${relational_store_native_path}/obs_mgr_adapter",
542      "../cloud_data/include",
543      "../common_type/include",
544      "//commonlibrary/c_utils/base/include",
545      "//third_party/json/single_include",
546    ]
547  }
548
549  ohos_source_set("native_rdb") {
550    defines = [
551      "IOS_PLATFORM",
552      "CROSS_PLATFORM",
553    ]
554
555    part_name = "relational_store"
556    sources = base_sources
557
558    configs = [ ":native_rdb_config" ]
559
560    sources += [
561      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
562      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
563      "${relational_store_native_path}/rdb/src/security_policy.cpp",
564    ]
565    deps = [
566      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
567      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_ios",
568      "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata:distributeddata_inner_executor",
569      "//third_party/sqlite:sqlite_static",
570    ]
571
572    external_deps = [ "c_utils:utils" ]
573
574    cflags_cc = [ "-std=c++17" ]
575
576    public_configs = [ ":native_rdb_public_config" ]
577    subsystem_name = "distributeddatamgr"
578  }
579} else {
580  not_needed([ "base_sources" ])
581}
582