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