1# Copyright (C) 2022 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. 13 14import("//build/ohos.gni") 15 16is_cross_platform_build = defined(is_arkui_x) && is_arkui_x 17 18# Lets callers do '#include <sqlite3.h>' 19config("sqlite_config") { 20 include_dirs = [ "include" ] 21} 22 23# This is the configuration used to build sqlite itself. 24# It should not be needed outside of this library. 25config("sqlite3_private_config") { 26 visibility = [ ":*" ] 27 include_dirs = [ "include" ] 28} 29 30group("libsqlite") { 31 public_deps = [ ":sqlite" ] 32} 33 34ohos_shared_library("sqlite") { 35 branch_protector_ret = "pac_ret" 36 sources = [ "src/sqlite3.c" ] 37 38 defines = [ 39 "NDEBUG=1", 40 "HAVE_USLEEP=1", 41 "SQLITE_HAVE_ISNAN", 42 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 43 "SQLITE_THREADSAFE=2", 44 "SQLITE_TEMP_STORE=3", 45 "SQLITE_POWERSAFE_OVERWRITE=1", 46 "SQLITE_DEFAULT_FILE_FORMAT=4", 47 "SQLITE_DEFAULT_AUTOVACUUM=1", 48 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 49 "SQLITE_ENABLE_FTS3", 50 "SQLITE_ENABLE_FTS4", 51 "SQLITE_ENABLE_FTS5", 52 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 53 "SQLITE_DEFAULT_FILE_PERMISSIONS=0660", 54 "SQLITE_SECURE_DELETE", 55 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 56 "USE_PREAD64", 57 "fdatasync=fdatasync", 58 "HAVE_MALLOC_H=1", 59 "HAVE_MALLOC_USABLE_SIZE", 60 "SQLITE_DIRECT_OVERFLOW_READ", 61 "SQLITE_HAS_CODEC", 62 "SQLITE_EXPORT_SYMBOLS", 63 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 64 "SQLITE_CODEC_ATTACH_CHANGED", 65 "SQLITE_ENABLE_DROPTABLE_CALLBACK", 66 "OPENSSL_SUPPRESS_DEPRECATED", 67 "LOG_DUMP", 68 "FDSAN_ENABLE", 69 "HARMONY_OS", 70 ] 71 cflags_c = [ 72 "-fvisibility=hidden", 73 "-Wno-implicit-fallthrough", 74 ] 75 if (target_os != "ios") { 76 ldflags = [ "-Wl,--exclude-libs,ALL" ] 77 } 78 deps = [] 79 public_configs = [ ":sqlite_config" ] 80 public_external_deps = [ "c_utils:utils" ] 81 configs = [ ":sqlite3_private_config" ] 82 innerapi_tags = [ "platformsdk_indirect" ] 83 part_name = "sqlite" 84 subsystem_name = "thirdparty" 85 install_images = [ system_base_dir ] 86 relative_install_dir = "platformsdk" 87 if (is_cross_platform_build) { 88 if (target_os == "ios") { 89 deps += [ "//third_party/bounds_checking_function:libsec_shared" ] 90 } else { 91 deps += [ "//commonlibrary/c_utils/base:utils" ] 92 } 93 } else { 94 external_deps = [ 95 "c_utils:utils", 96 "openssl:libcrypto_shared", 97 ] 98 } 99} 100 101ohos_executable("sqlite3") { 102 include_dirs = [ "include" ] 103 sources = [ 104 "src/shell.c", 105 "src/sqlite3.c", 106 ] 107 108 defines = [ 109 "NDEBUG=1", 110 "HAVE_USLEEP=1", 111 "SQLITE_HAVE_ISNAN", 112 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 113 "SQLITE_THREADSAFE=2", 114 "SQLITE_TEMP_STORE=3", 115 "SQLITE_POWERSAFE_OVERWRITE=1", 116 "SQLITE_DEFAULT_FILE_FORMAT=4", 117 "SQLITE_DEFAULT_AUTOVACUUM=1", 118 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 119 "SQLITE_ENABLE_FTS3", 120 "SQLITE_ENABLE_FTS4", 121 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 122 "SQLITE_DEFAULT_FILE_PERMISSIONS=0600", 123 "SQLITE_SECURE_DELETE", 124 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 125 "USE_PREAD64", 126 "fdatasync=fdatasync", 127 "SQLITE_DIRECT_OVERFLOW_READ", 128 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 129 "OPENSSL_SUPPRESS_DEPRECATED", 130 "LOG_DUMP", 131 "FDSAN_ENABLE", 132 "HARMONY_OS", 133 ] 134 135 cflags = [ 136 "-Wno-error=implicit-function-declaration", 137 "-Wno-implicit-fallthrough", 138 ] 139} 140 141if (is_mingw || is_mac) { 142 ohos_shared_library("sqlite_sdk") { 143 include_dirs = [ 144 "include", 145 "//third_party/bounds_checking_function/include", 146 "//third_party/openssl/include", 147 ] 148 149 sources = [ "src/sqlite3.c" ] 150 151 defines = [ 152 "NDEBUG=1", 153 "HAVE_USLEEP=1", 154 "SQLITE_HAVE_ISNAN", 155 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 156 "SQLITE_THREADSAFE=2", 157 "SQLITE_TEMP_STORE=3", 158 "SQLITE_POWERSAFE_OVERWRITE=1", 159 "SQLITE_DEFAULT_FILE_FORMAT=4", 160 "SQLITE_DEFAULT_AUTOVACUUM=1", 161 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 162 "SQLITE_ENABLE_FTS3", 163 "SQLITE_ENABLE_FTS4", 164 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 165 "SQLITE_DEFAULT_FILE_PERMISSIONS=0600", 166 "SQLITE_SECURE_DELETE", 167 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 168 "USE_PREAD64", 169 "fdatasync=fdatasync", 170 "SQLITE_DIRECT_OVERFLOW_READ", 171 "SQLITE_HAS_CODEC", 172 "SQLITE_EXPORT_SYMBOLS", 173 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 174 "OPENSSL_SUPPRESS_DEPRECATED", 175 ] 176 remove_configs = [ "//build/config/compiler:chromium_code" ] 177 deps = [ 178 "//third_party/bounds_checking_function:libsec_shared", 179 "//third_party/openssl:libcrypto_restool", 180 ] 181 if (is_mingw) { 182 libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libws2_32.a" ] 183 } 184 cflags = [ 185 "-Wno-error=implicit-function-declaration", 186 "-Wno-implicit-fallthrough", 187 ] 188 part_name = "sqlite" 189 subsystem_name = "thirdparty" 190 } 191} 192 193if (is_cross_platform_build) { 194 ohos_static_library("sqlite_static") { 195 visibility = [ "//foundation/distributeddatamgr/*" ] 196 visibility += [ "//foundation/multimodalinput/*" ] 197 visibility += 198 [ "//hit/fuzzing_test/projects/multimodal_InputService_fuzzer/*" ] 199 visibility += [ "//foundation/communication/*" ] 200 visibility += [ "//build/common/*" ] 201 visibility += [ ":*" ] 202 visibility += [ "//base/security/*" ] 203 visibility += [ "//third_party/libsoup/*" ] 204 visibility += 205 [ "//foundation/resourceschedule/resource_schedule_service/*" ] 206 visibility += [ "//foundation/bundlemanager/ecological_rule_mgr/*" ] 207 208 sources = [ "src/sqlite3.c" ] 209 210 defines = [ 211 "NDEBUG=1", 212 "HAVE_USLEEP=1", 213 "SQLITE_HAVE_ISNAN", 214 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 215 "SQLITE_THREADSAFE=2", 216 "SQLITE_TEMP_STORE=3", 217 "SQLITE_POWERSAFE_OVERWRITE=1", 218 "SQLITE_DEFAULT_FILE_FORMAT=4", 219 "SQLITE_DEFAULT_AUTOVACUUM=1", 220 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 221 "SQLITE_ENABLE_FTS3", 222 "SQLITE_ENABLE_FTS4", 223 "SQLITE_ENABLE_FTS5", 224 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 225 "SQLITE_DEFAULT_FILE_PERMISSIONS=0660", 226 "SQLITE_SECURE_DELETE", 227 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 228 "USE_PREAD64", 229 "fdatasync=fdatasync", 230 "HAVE_MALLOC_H=1", 231 "HAVE_MALLOC_USABLE_SIZE", 232 "SQLITE_DIRECT_OVERFLOW_READ", 233 "SQLITE_HAS_CODEC", 234 "SQLITE_EXPORT_SYMBOLS", 235 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 236 "SQLITE_CODEC_ATTACH_CHANGED", 237 "SQLITE_ENABLE_DROPTABLE_CALLBACK", 238 "OPENSSL_SUPPRESS_DEPRECATED", 239 ] 240 241 cflags_c = [ 242 "-fvisibility=hidden", 243 "-Wno-implicit-fallthrough", 244 ] 245 246 deps = [ 247 "//third_party/bounds_checking_function:libsec_static", 248 "//third_party/openssl:libcrypto_static", 249 ] 250 public_configs = [ ":sqlite_config" ] 251 configs = [ ":sqlite3_private_config" ] 252 part_name = "sqlite" 253 subsystem_name = "thirdparty" 254 } 255} 256