191ad9d8eSopenharmony_ci# Copyright (C) 2022 Huawei Device Co., Ltd.
291ad9d8eSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
391ad9d8eSopenharmony_ci# you may not use this file except in compliance with the License.
491ad9d8eSopenharmony_ci# You may obtain a copy of the License at
591ad9d8eSopenharmony_ci#
691ad9d8eSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
791ad9d8eSopenharmony_ci#
891ad9d8eSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
991ad9d8eSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
1091ad9d8eSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1191ad9d8eSopenharmony_ci# See the License for the specific language governing permissions and
1291ad9d8eSopenharmony_ci# limitations under the License.
1391ad9d8eSopenharmony_ci
1491ad9d8eSopenharmony_ciimport("//build/ohos.gni")
1591ad9d8eSopenharmony_ci
1691ad9d8eSopenharmony_ciis_cross_platform_build = defined(is_arkui_x) && is_arkui_x
1791ad9d8eSopenharmony_ci
1891ad9d8eSopenharmony_ci# Lets callers do '#include <sqlite3.h>'
1991ad9d8eSopenharmony_ciconfig("sqlite_config") {
2091ad9d8eSopenharmony_ci  include_dirs = [ "include" ]
2191ad9d8eSopenharmony_ci}
2291ad9d8eSopenharmony_ci
2391ad9d8eSopenharmony_ci# This is the configuration used to build sqlite itself.
2491ad9d8eSopenharmony_ci# It should not be needed outside of this library.
2591ad9d8eSopenharmony_ciconfig("sqlite3_private_config") {
2691ad9d8eSopenharmony_ci  visibility = [ ":*" ]
2791ad9d8eSopenharmony_ci  include_dirs = [ "include" ]
2891ad9d8eSopenharmony_ci}
2991ad9d8eSopenharmony_ci
3091ad9d8eSopenharmony_cigroup("libsqlite") {
3191ad9d8eSopenharmony_ci  public_deps = [ ":sqlite" ]
3291ad9d8eSopenharmony_ci}
3391ad9d8eSopenharmony_ci
3491ad9d8eSopenharmony_ciohos_shared_library("sqlite") {
3591ad9d8eSopenharmony_ci  branch_protector_ret = "pac_ret"
3691ad9d8eSopenharmony_ci  sources = [ "src/sqlite3.c" ]
3791ad9d8eSopenharmony_ci
3891ad9d8eSopenharmony_ci  defines = [
3991ad9d8eSopenharmony_ci    "NDEBUG=1",
4091ad9d8eSopenharmony_ci    "HAVE_USLEEP=1",
4191ad9d8eSopenharmony_ci    "SQLITE_HAVE_ISNAN",
4291ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
4391ad9d8eSopenharmony_ci    "SQLITE_THREADSAFE=2",
4491ad9d8eSopenharmony_ci    "SQLITE_TEMP_STORE=3",
4591ad9d8eSopenharmony_ci    "SQLITE_POWERSAFE_OVERWRITE=1",
4691ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_FILE_FORMAT=4",
4791ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_AUTOVACUUM=1",
4891ad9d8eSopenharmony_ci    "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
4991ad9d8eSopenharmony_ci    "SQLITE_ENABLE_FTS3",
5091ad9d8eSopenharmony_ci    "SQLITE_ENABLE_FTS4",
5191ad9d8eSopenharmony_ci    "SQLITE_ENABLE_FTS5",
5291ad9d8eSopenharmony_ci    "SQLITE_OMIT_COMPILEOPTION_DIAGS",
5391ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_FILE_PERMISSIONS=0660",
5491ad9d8eSopenharmony_ci    "SQLITE_SECURE_DELETE",
5591ad9d8eSopenharmony_ci    "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
5691ad9d8eSopenharmony_ci    "USE_PREAD64",
5791ad9d8eSopenharmony_ci    "fdatasync=fdatasync",
5891ad9d8eSopenharmony_ci    "HAVE_MALLOC_H=1",
5991ad9d8eSopenharmony_ci    "HAVE_MALLOC_USABLE_SIZE",
6091ad9d8eSopenharmony_ci    "SQLITE_DIRECT_OVERFLOW_READ",
6191ad9d8eSopenharmony_ci    "SQLITE_HAS_CODEC",
6291ad9d8eSopenharmony_ci    "SQLITE_EXPORT_SYMBOLS",
6391ad9d8eSopenharmony_ci    "SQLITE_SHARED_BLOCK_OPTIMIZATION",
6491ad9d8eSopenharmony_ci    "SQLITE_CODEC_ATTACH_CHANGED",
6591ad9d8eSopenharmony_ci    "SQLITE_ENABLE_DROPTABLE_CALLBACK",
6691ad9d8eSopenharmony_ci    "OPENSSL_SUPPRESS_DEPRECATED",
6791ad9d8eSopenharmony_ci    "LOG_DUMP",
6891ad9d8eSopenharmony_ci    "FDSAN_ENABLE",
6991ad9d8eSopenharmony_ci    "HARMONY_OS",
7091ad9d8eSopenharmony_ci  ]
7191ad9d8eSopenharmony_ci  cflags_c = [
7291ad9d8eSopenharmony_ci    "-fvisibility=hidden",
7391ad9d8eSopenharmony_ci    "-Wno-implicit-fallthrough",
7491ad9d8eSopenharmony_ci  ]
7591ad9d8eSopenharmony_ci  if (target_os != "ios") {
7691ad9d8eSopenharmony_ci    ldflags = [ "-Wl,--exclude-libs,ALL" ]
7791ad9d8eSopenharmony_ci  }
7891ad9d8eSopenharmony_ci  deps = []
7991ad9d8eSopenharmony_ci  public_configs = [ ":sqlite_config" ]
8091ad9d8eSopenharmony_ci  public_external_deps = [ "c_utils:utils" ]
8191ad9d8eSopenharmony_ci  configs = [ ":sqlite3_private_config" ]
8291ad9d8eSopenharmony_ci  innerapi_tags = [ "platformsdk_indirect" ]
8391ad9d8eSopenharmony_ci  part_name = "sqlite"
8491ad9d8eSopenharmony_ci  subsystem_name = "thirdparty"
8591ad9d8eSopenharmony_ci  install_images = [ system_base_dir ]
8691ad9d8eSopenharmony_ci  relative_install_dir = "platformsdk"
8791ad9d8eSopenharmony_ci  if (is_cross_platform_build) {
8891ad9d8eSopenharmony_ci    if (target_os == "ios") {
8991ad9d8eSopenharmony_ci      deps += [ "//third_party/bounds_checking_function:libsec_shared" ]
9091ad9d8eSopenharmony_ci    } else {
9191ad9d8eSopenharmony_ci      deps += [ "//commonlibrary/c_utils/base:utils" ]
9291ad9d8eSopenharmony_ci    }
9391ad9d8eSopenharmony_ci  } else {
9491ad9d8eSopenharmony_ci    external_deps = [
9591ad9d8eSopenharmony_ci      "c_utils:utils",
9691ad9d8eSopenharmony_ci      "openssl:libcrypto_shared",
9791ad9d8eSopenharmony_ci    ]
9891ad9d8eSopenharmony_ci  }
9991ad9d8eSopenharmony_ci}
10091ad9d8eSopenharmony_ci
10191ad9d8eSopenharmony_ciohos_executable("sqlite3") {
10291ad9d8eSopenharmony_ci  include_dirs = [ "include" ]
10391ad9d8eSopenharmony_ci  sources = [
10491ad9d8eSopenharmony_ci    "src/shell.c",
10591ad9d8eSopenharmony_ci    "src/sqlite3.c",
10691ad9d8eSopenharmony_ci  ]
10791ad9d8eSopenharmony_ci
10891ad9d8eSopenharmony_ci  defines = [
10991ad9d8eSopenharmony_ci    "NDEBUG=1",
11091ad9d8eSopenharmony_ci    "HAVE_USLEEP=1",
11191ad9d8eSopenharmony_ci    "SQLITE_HAVE_ISNAN",
11291ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
11391ad9d8eSopenharmony_ci    "SQLITE_THREADSAFE=2",
11491ad9d8eSopenharmony_ci    "SQLITE_TEMP_STORE=3",
11591ad9d8eSopenharmony_ci    "SQLITE_POWERSAFE_OVERWRITE=1",
11691ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_FILE_FORMAT=4",
11791ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_AUTOVACUUM=1",
11891ad9d8eSopenharmony_ci    "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
11991ad9d8eSopenharmony_ci    "SQLITE_ENABLE_FTS3",
12091ad9d8eSopenharmony_ci    "SQLITE_ENABLE_FTS4",
12191ad9d8eSopenharmony_ci    "SQLITE_OMIT_COMPILEOPTION_DIAGS",
12291ad9d8eSopenharmony_ci    "SQLITE_DEFAULT_FILE_PERMISSIONS=0600",
12391ad9d8eSopenharmony_ci    "SQLITE_SECURE_DELETE",
12491ad9d8eSopenharmony_ci    "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
12591ad9d8eSopenharmony_ci    "USE_PREAD64",
12691ad9d8eSopenharmony_ci    "fdatasync=fdatasync",
12791ad9d8eSopenharmony_ci    "SQLITE_DIRECT_OVERFLOW_READ",
12891ad9d8eSopenharmony_ci    "SQLITE_SHARED_BLOCK_OPTIMIZATION",
12991ad9d8eSopenharmony_ci    "OPENSSL_SUPPRESS_DEPRECATED",
13091ad9d8eSopenharmony_ci    "LOG_DUMP",
13191ad9d8eSopenharmony_ci    "FDSAN_ENABLE",
13291ad9d8eSopenharmony_ci    "HARMONY_OS",
13391ad9d8eSopenharmony_ci  ]
13491ad9d8eSopenharmony_ci
13591ad9d8eSopenharmony_ci  cflags = [
13691ad9d8eSopenharmony_ci    "-Wno-error=implicit-function-declaration",
13791ad9d8eSopenharmony_ci    "-Wno-implicit-fallthrough",
13891ad9d8eSopenharmony_ci  ]
13991ad9d8eSopenharmony_ci}
14091ad9d8eSopenharmony_ci
14191ad9d8eSopenharmony_ciif (is_mingw || is_mac) {
14291ad9d8eSopenharmony_ci  ohos_shared_library("sqlite_sdk") {
14391ad9d8eSopenharmony_ci    include_dirs = [
14491ad9d8eSopenharmony_ci      "include",
14591ad9d8eSopenharmony_ci      "//third_party/bounds_checking_function/include",
14691ad9d8eSopenharmony_ci      "//third_party/openssl/include",
14791ad9d8eSopenharmony_ci    ]
14891ad9d8eSopenharmony_ci
14991ad9d8eSopenharmony_ci    sources = [ "src/sqlite3.c" ]
15091ad9d8eSopenharmony_ci
15191ad9d8eSopenharmony_ci    defines = [
15291ad9d8eSopenharmony_ci      "NDEBUG=1",
15391ad9d8eSopenharmony_ci      "HAVE_USLEEP=1",
15491ad9d8eSopenharmony_ci      "SQLITE_HAVE_ISNAN",
15591ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
15691ad9d8eSopenharmony_ci      "SQLITE_THREADSAFE=2",
15791ad9d8eSopenharmony_ci      "SQLITE_TEMP_STORE=3",
15891ad9d8eSopenharmony_ci      "SQLITE_POWERSAFE_OVERWRITE=1",
15991ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_FILE_FORMAT=4",
16091ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_AUTOVACUUM=1",
16191ad9d8eSopenharmony_ci      "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
16291ad9d8eSopenharmony_ci      "SQLITE_ENABLE_FTS3",
16391ad9d8eSopenharmony_ci      "SQLITE_ENABLE_FTS4",
16491ad9d8eSopenharmony_ci      "SQLITE_OMIT_COMPILEOPTION_DIAGS",
16591ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_FILE_PERMISSIONS=0600",
16691ad9d8eSopenharmony_ci      "SQLITE_SECURE_DELETE",
16791ad9d8eSopenharmony_ci      "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
16891ad9d8eSopenharmony_ci      "USE_PREAD64",
16991ad9d8eSopenharmony_ci      "fdatasync=fdatasync",
17091ad9d8eSopenharmony_ci      "SQLITE_DIRECT_OVERFLOW_READ",
17191ad9d8eSopenharmony_ci      "SQLITE_HAS_CODEC",
17291ad9d8eSopenharmony_ci      "SQLITE_EXPORT_SYMBOLS",
17391ad9d8eSopenharmony_ci      "SQLITE_SHARED_BLOCK_OPTIMIZATION",
17491ad9d8eSopenharmony_ci      "OPENSSL_SUPPRESS_DEPRECATED",
17591ad9d8eSopenharmony_ci    ]
17691ad9d8eSopenharmony_ci    remove_configs = [ "//build/config/compiler:chromium_code" ]
17791ad9d8eSopenharmony_ci    deps = [
17891ad9d8eSopenharmony_ci      "//third_party/bounds_checking_function:libsec_shared",
17991ad9d8eSopenharmony_ci      "//third_party/openssl:libcrypto_restool",
18091ad9d8eSopenharmony_ci    ]
18191ad9d8eSopenharmony_ci    if (is_mingw) {
18291ad9d8eSopenharmony_ci      libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libws2_32.a" ]
18391ad9d8eSopenharmony_ci    }
18491ad9d8eSopenharmony_ci    cflags = [
18591ad9d8eSopenharmony_ci      "-Wno-error=implicit-function-declaration",
18691ad9d8eSopenharmony_ci      "-Wno-implicit-fallthrough",
18791ad9d8eSopenharmony_ci    ]
18891ad9d8eSopenharmony_ci    part_name = "sqlite"
18991ad9d8eSopenharmony_ci    subsystem_name = "thirdparty"
19091ad9d8eSopenharmony_ci  }
19191ad9d8eSopenharmony_ci}
19291ad9d8eSopenharmony_ci
19391ad9d8eSopenharmony_ciif (is_cross_platform_build) {
19491ad9d8eSopenharmony_ci  ohos_static_library("sqlite_static") {
19591ad9d8eSopenharmony_ci    visibility = [ "//foundation/distributeddatamgr/*" ]
19691ad9d8eSopenharmony_ci    visibility += [ "//foundation/multimodalinput/*" ]
19791ad9d8eSopenharmony_ci    visibility +=
19891ad9d8eSopenharmony_ci        [ "//hit/fuzzing_test/projects/multimodal_InputService_fuzzer/*" ]
19991ad9d8eSopenharmony_ci    visibility += [ "//foundation/communication/*" ]
20091ad9d8eSopenharmony_ci    visibility += [ "//build/common/*" ]
20191ad9d8eSopenharmony_ci    visibility += [ ":*" ]
20291ad9d8eSopenharmony_ci    visibility += [ "//base/security/*" ]
20391ad9d8eSopenharmony_ci    visibility += [ "//third_party/libsoup/*" ]
20491ad9d8eSopenharmony_ci    visibility +=
20591ad9d8eSopenharmony_ci        [ "//foundation/resourceschedule/resource_schedule_service/*" ]
20691ad9d8eSopenharmony_ci    visibility += [ "//foundation/bundlemanager/ecological_rule_mgr/*" ]
20791ad9d8eSopenharmony_ci
20891ad9d8eSopenharmony_ci    sources = [ "src/sqlite3.c" ]
20991ad9d8eSopenharmony_ci
21091ad9d8eSopenharmony_ci    defines = [
21191ad9d8eSopenharmony_ci      "NDEBUG=1",
21291ad9d8eSopenharmony_ci      "HAVE_USLEEP=1",
21391ad9d8eSopenharmony_ci      "SQLITE_HAVE_ISNAN",
21491ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
21591ad9d8eSopenharmony_ci      "SQLITE_THREADSAFE=2",
21691ad9d8eSopenharmony_ci      "SQLITE_TEMP_STORE=3",
21791ad9d8eSopenharmony_ci      "SQLITE_POWERSAFE_OVERWRITE=1",
21891ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_FILE_FORMAT=4",
21991ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_AUTOVACUUM=1",
22091ad9d8eSopenharmony_ci      "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
22191ad9d8eSopenharmony_ci      "SQLITE_ENABLE_FTS3",
22291ad9d8eSopenharmony_ci      "SQLITE_ENABLE_FTS4",
22391ad9d8eSopenharmony_ci      "SQLITE_ENABLE_FTS5",
22491ad9d8eSopenharmony_ci      "SQLITE_OMIT_COMPILEOPTION_DIAGS",
22591ad9d8eSopenharmony_ci      "SQLITE_DEFAULT_FILE_PERMISSIONS=0660",
22691ad9d8eSopenharmony_ci      "SQLITE_SECURE_DELETE",
22791ad9d8eSopenharmony_ci      "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
22891ad9d8eSopenharmony_ci      "USE_PREAD64",
22991ad9d8eSopenharmony_ci      "fdatasync=fdatasync",
23091ad9d8eSopenharmony_ci      "HAVE_MALLOC_H=1",
23191ad9d8eSopenharmony_ci      "HAVE_MALLOC_USABLE_SIZE",
23291ad9d8eSopenharmony_ci      "SQLITE_DIRECT_OVERFLOW_READ",
23391ad9d8eSopenharmony_ci      "SQLITE_HAS_CODEC",
23491ad9d8eSopenharmony_ci      "SQLITE_EXPORT_SYMBOLS",
23591ad9d8eSopenharmony_ci      "SQLITE_SHARED_BLOCK_OPTIMIZATION",
23691ad9d8eSopenharmony_ci      "SQLITE_CODEC_ATTACH_CHANGED",
23791ad9d8eSopenharmony_ci      "SQLITE_ENABLE_DROPTABLE_CALLBACK",
23891ad9d8eSopenharmony_ci      "OPENSSL_SUPPRESS_DEPRECATED",
23991ad9d8eSopenharmony_ci    ]
24091ad9d8eSopenharmony_ci
24191ad9d8eSopenharmony_ci    cflags_c = [
24291ad9d8eSopenharmony_ci      "-fvisibility=hidden",
24391ad9d8eSopenharmony_ci      "-Wno-implicit-fallthrough",
24491ad9d8eSopenharmony_ci    ]
24591ad9d8eSopenharmony_ci
24691ad9d8eSopenharmony_ci    deps = [
24791ad9d8eSopenharmony_ci      "//third_party/bounds_checking_function:libsec_static",
24891ad9d8eSopenharmony_ci      "//third_party/openssl:libcrypto_static",
24991ad9d8eSopenharmony_ci    ]
25091ad9d8eSopenharmony_ci    public_configs = [ ":sqlite_config" ]
25191ad9d8eSopenharmony_ci    configs = [ ":sqlite3_private_config" ]
25291ad9d8eSopenharmony_ci    part_name = "sqlite"
25391ad9d8eSopenharmony_ci    subsystem_name = "thirdparty"
25491ad9d8eSopenharmony_ci  }
25591ad9d8eSopenharmony_ci}
256