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      "mock/include",
255      "${relational_store_common_path}/include",
256      "${relational_store_native_path}/rdb/mock/include",
257      "//commonlibrary/c_utils/base/include",
258      "include",
259      "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
260      "${relational_store_native_path}/rdb/include",
261      "${relational_store_native_path}/dfx/include",
262      "//third_party/libuv/src/win",
263    ]
264
265    cflags = [ "-includemock.h" ]
266    defines = [
267      "RELATIONAL_STORE",
268      "SQLITE_HAS_CODEC",
269    ]
270
271    if (relational_store_rdb_support_icu) {
272      include_dirs += [
273        "//third_party/icu/icu4c/source",
274        "//third_party/icu/icu4c/source/i18n",
275        "//third_party/icu/icu4c/source/common",
276      ]
277      defines += [ "RDB_SUPPORT_ICU" ]
278    }
279
280    defines += [ "WINDOWS_PLATFORM" ]
281    include_dirs += [
282      "//foundation/distributeddatamgr/kv_store/frameworks/common",
283      "//third_party/sqlite/include",
284    ]
285    libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libws2_32.a" ]
286  }
287
288  config("native_rdb_public_config") {
289    visibility = [ ":*" ]
290
291    include_dirs = [
292      "mock/include",
293      "include",
294      "//third_party/libuv/src/win",
295      "../cloud_data/include",
296      "../common_type/include",
297    ]
298  }
299
300  base_deps = [
301    "//third_party/icu/icu4c:shared_icui18n",
302    "//third_party/icu/icu4c:shared_icuuc",
303  ]
304
305  ohos_shared_library("native_rdb") {
306    part_name = "relational_store"
307    sources = base_sources
308
309    configs = [ ":native_rdb_config" ]
310
311    deps = base_deps
312
313    sources += [
314      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
315      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
316    ]
317
318    deps += [
319      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
320      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_windows",
321      "//third_party/sqlite:sqlite_sdk",
322    ]
323
324    cflags_cc = [ "-std=c++17" ]
325
326    public_configs = [ ":native_rdb_public_config" ]
327    innerapi_tags = [ "platformsdk" ]
328    subsystem_name = "distributeddatamgr"
329  }
330
331  ohos_static_library("native_rdb_static") {
332    sources = base_sources
333
334    configs = [ ":native_rdb_config" ]
335
336    deps = base_deps
337
338    sources += [
339      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
340      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
341    ]
342
343    deps += [
344      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
345      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_windows",
346      "//third_party/sqlite:sqlite_sdk",
347    ]
348    cflags_cc = [ "-std=c++17" ]
349
350    public_configs = [ ":native_rdb_public_config" ]
351
352    subsystem_name = "distributeddatamgr"
353    part_name = "relational_store"
354  }
355} else if (is_mac) {
356  config("native_rdb_config") {
357    visibility = [ ":*" ]
358
359    include_dirs = [
360      "${relational_store_mock_path}/frameworks/native/rdb",
361      "mock/include",
362      "${relational_store_common_path}/include",
363      "${relational_store_native_path}/rdb/mock/include",
364      "//commonlibrary/c_utils/base/include",
365      "include",
366      "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
367      "${relational_store_native_path}/rdb/include",
368      "${relational_store_native_path}/dfx/include",
369    ]
370
371    cflags = [ "-includemock.h" ]
372    defines = [
373      "RELATIONAL_STORE",
374      "SQLITE_HAS_CODEC",
375    ]
376
377    if (relational_store_rdb_support_icu) {
378      include_dirs += [
379        "//third_party/icu/icu4c/source",
380        "//third_party/icu/icu4c/source/i18n",
381        "//third_party/icu/icu4c/source/common",
382      ]
383      defines += [ "RDB_SUPPORT_ICU" ]
384    }
385
386    defines += [ "MAC_PLATFORM" ]
387    include_dirs += [
388      "//foundation/distributeddatamgr/kv_store/frameworks/common",
389      "//third_party/sqlite/include",
390    ]
391  }
392
393  config("native_rdb_public_config") {
394    visibility = [ ":*" ]
395
396    include_dirs = [
397      "mock/include",
398      "include",
399      "../cloud_data/include",
400      "../common_type/include",
401    ]
402  }
403
404  base_deps = [
405    "//third_party/icu/icu4c:shared_icui18n",
406    "//third_party/icu/icu4c:shared_icuuc",
407  ]
408
409  ohos_shared_library("native_rdb") {
410    part_name = "relational_store"
411    sources = base_sources
412
413    configs = [ ":native_rdb_config" ]
414
415    deps = base_deps
416
417    sources += [
418      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
419      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
420    ]
421    deps += [
422      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
423      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_mac",
424      "//third_party/sqlite:sqlite_sdk",
425    ]
426    cflags_cc = [ "-std=c++17" ]
427
428    public_configs = [ ":native_rdb_public_config" ]
429    innerapi_tags = [ "platformsdk" ]
430    subsystem_name = "distributeddatamgr"
431  }
432
433  ohos_static_library("native_rdb_static") {
434    sources = base_sources
435
436    configs = [ ":native_rdb_config" ]
437
438    deps = base_deps
439
440    sources += [
441      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
442      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
443    ]
444    deps += [
445      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
446      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_mac",
447      "//third_party/sqlite:sqlite_sdk",
448    ]
449    cflags_cc = [ "-std=c++17" ]
450
451    public_configs = [ ":native_rdb_public_config" ]
452
453    subsystem_name = "distributeddatamgr"
454    part_name = "relational_store"
455  }
456} else if (is_android) {
457  config("native_rdb_config") {
458    visibility = [ ":*" ]
459
460    include_dirs = [
461      "${relational_store_mock_path}/frameworks/native/rdb",
462      "${distributedfile_path}/mod_securitylabel",
463      "${relational_store_common_path}/include",
464      "${relational_store_innerapi_path}/rdb/mock/include",
465      "${relational_store_native_path}/rdb/mock/include",
466      "${relational_store_innerapi_path}/rdb/include",
467      "${relational_store_native_path}/rdb/include",
468      "${relational_store_native_path}/dfx/include",
469    ]
470
471    cflags = [ "-includemock.h" ]
472    defines = [
473      "RELATIONAL_STORE",
474      "SQLITE_HAS_CODEC",
475    ]
476
477    if (relational_store_rdb_support_icu) {
478      include_dirs += [
479        "//third_party/icu/icu4c/source",
480        "//third_party/icu/icu4c/source/i18n",
481        "//third_party/icu/icu4c/source/common",
482      ]
483      defines += [ "RDB_SUPPORT_ICU" ]
484    }
485  }
486
487  config("native_rdb_public_config") {
488    visibility = [ ":*" ]
489
490    include_dirs = [
491      "mock/include",
492      "include",
493      "${relational_store_native_path}/mock/rdb/include",
494      "${relational_store_native_path}/rdb/include",
495      "${relational_store_native_path}/dfx/include",
496      "../cloud_data/include",
497      "../common_type/include",
498      "//commonlibrary/c_utils/base/include",
499    ]
500  }
501
502  base_deps = [ "${plugins_path}/libs/icu:icu_android" ]
503
504  ohos_source_set("native_rdb") {
505    defines = [ "ANDROID_PLATFORM" ]
506
507    part_name = "relational_store"
508
509    sources = base_sources
510
511    configs = [ ":native_rdb_config" ]
512
513    deps = base_deps
514
515    sources += [
516      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
517      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
518      "${relational_store_native_path}/rdb/src/security_policy.cpp",
519    ]
520    deps += [
521      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
522      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_android",
523      "//third_party/sqlite:sqlite_static",
524    ]
525    cflags_cc = [ "-std=c++17" ]
526
527    public_configs = [ ":native_rdb_public_config" ]
528    subsystem_name = "distributeddatamgr"
529  }
530} else if (is_ios) {
531  config("native_rdb_config") {
532    visibility = [ ":*" ]
533
534    include_dirs = [
535      "${relational_store_mock_path}/frameworks/native/rdb",
536      "${distributedfile_path}/mod_securitylabel",
537      "${relational_store_common_path}/include",
538      "${relational_store_innerapi_path}/rdb/mock/include",
539      "${relational_store_native_path}/rdb/mock/include",
540      "${relational_store_innerapi_path}/rdb/include",
541      "${relational_store_native_path}/rdb/include",
542      "${relational_store_native_path}/dfx/include",
543    ]
544
545    cflags = [ "-includemock.h" ]
546    defines = [
547      "RELATIONAL_STORE",
548      "SQLITE_HAS_CODEC",
549    ]
550
551    if (relational_store_rdb_support_icu) {
552      include_dirs += [
553        "//third_party/icu/icu4c/source",
554        "//third_party/icu/icu4c/source/i18n",
555        "//third_party/icu/icu4c/source/common",
556      ]
557      defines += [ "RDB_SUPPORT_ICU" ]
558    }
559  }
560
561  config("native_rdb_public_config") {
562    visibility = [ ":*" ]
563
564    include_dirs = [
565      "mock/include",
566      "include",
567      "${relational_store_native_path}/rdb/include",
568      "${relational_store_native_path}/dfx/include",
569      "../cloud_data/include",
570      "../common_type/include",
571      "//commonlibrary/c_utils/base/include",
572    ]
573  }
574
575  base_deps = [ "${plugins_path}/libs/icu:icu_ios" ]
576
577  ohos_source_set("native_rdb") {
578    defines = [ "IOS_PLATFORM" ]
579
580    part_name = "relational_store"
581    sources = base_sources
582
583    configs = [ ":native_rdb_config" ]
584
585    deps = base_deps
586
587    sources += [
588      "${relational_store_native_path}/rdb/mock/src/rdb_radar_reporter.cpp",
589      "${relational_store_native_path}/rdb/mock/src/task_executor.cpp",
590      "${relational_store_native_path}/rdb/src/security_policy.cpp",
591    ]
592    deps += [
593      "${relational_store_innerapi_path}/appdatafwk:relational_common_base",
594      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_ios",
595      "//third_party/sqlite:sqlite_static",
596    ]
597
598    external_deps = [ "c_utils:utils" ]
599
600    cflags_cc = [ "-std=c++17" ]
601
602    public_configs = [ ":native_rdb_public_config" ]
603    subsystem_name = "distributeddatamgr"
604  }
605} else {
606  not_needed([ "base_sources" ])
607}
608