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