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 = [ 32 ":sqlite", 33 ":sqliteicu", 34 ] 35} 36 37ohos_shared_library("sqliteicu") { 38 branch_protector_ret = "pac_ret" 39 sources = [ "src/sqlite3icu.c" ] 40 41 defines = [ 42 "NDEBUG=1", 43 "SQLITE_EXPORT_SYMBOLS", 44 "SQLITE_ENABLE_FTS3", 45 "HARMONY_OS", 46 "SQLITE_ENABLE_ICU", 47 ] 48 cflags_c = [ 49 "-fvisibility=hidden", 50 "-Wno-implicit-fallthrough", 51 ] 52 if (target_os != "ios") { 53 ldflags = [ "-Wl,--exclude-libs,ALL" ] 54 } 55 deps = [ ":sqlite" ] 56 public_configs = [ ":sqlite_config" ] 57 configs = [ ":sqlite3_private_config" ] 58 innerapi_tags = [ "platformsdk_indirect" ] 59 part_name = "sqlite" 60 subsystem_name = "thirdparty" 61 install_images = [ system_base_dir ] 62 relative_install_dir = "platformsdk" 63 external_deps = [] 64 if (is_cross_platform_build) { 65 if (target_os == "ios") { 66 deps += [ "//third_party/bounds_checking_function:libsec_shared" ] 67 } else { 68 deps += [ "//commonlibrary/c_utils/base:utils" ] 69 } 70 } else { 71 external_deps += [ "c_utils:utils" ] 72 } 73 external_deps += [ 74 "icu:shared_icui18n", 75 "icu:shared_icuuc", 76 ] 77} 78 79ohos_shared_library("sqlite") { 80 branch_protector_ret = "pac_ret" 81 sources = [ "src/sqlite3.c" ] 82 83 defines = [ 84 "NDEBUG=1", 85 "HAVE_USLEEP=1", 86 "SQLITE_HAVE_ISNAN", 87 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 88 "SQLITE_THREADSAFE=2", 89 "SQLITE_TEMP_STORE=3", 90 "SQLITE_POWERSAFE_OVERWRITE=1", 91 "SQLITE_DEFAULT_FILE_FORMAT=4", 92 "SQLITE_DEFAULT_AUTOVACUUM=1", 93 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 94 "SQLITE_ENABLE_LOAD_EXTENSION", 95 "SQLITE_ENABLE_FTS3", 96 "SQLITE_ENABLE_FTS3_TOKENIZER", 97 "SQLITE_ENABLE_FTS4", 98 "SQLITE_ENABLE_FTS5", 99 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 100 "SQLITE_DEFAULT_FILE_PERMISSIONS=0660", 101 "SQLITE_SECURE_DELETE", 102 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 103 "USE_PREAD64", 104 "fdatasync=fdatasync", 105 "HAVE_MALLOC_H=1", 106 "HAVE_MALLOC_USABLE_SIZE", 107 "SQLITE_DIRECT_OVERFLOW_READ", 108 "SQLITE_HAS_CODEC", 109 "SQLITE_EXPORT_SYMBOLS", 110 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 111 "SQLITE_CODEC_ATTACH_CHANGED", 112 "SQLITE_ENABLE_DROPTABLE_CALLBACK", 113 "OPENSSL_SUPPRESS_DEPRECATED", 114 "LOG_DUMP", 115 "FDSAN_ENABLE", 116 "HARMONY_OS", 117 "SQLITE_ENABLE_ICU", 118 ] 119 cflags_c = [ 120 "-fvisibility=hidden", 121 "-Wno-implicit-fallthrough", 122 ] 123 if (target_os != "ios") { 124 ldflags = [ "-Wl,--exclude-libs,ALL" ] 125 } 126 deps = [] 127 public_configs = [ ":sqlite_config" ] 128 public_external_deps = [ "c_utils:utilsbase" ] 129 configs = [ ":sqlite3_private_config" ] 130 innerapi_tags = [ "platformsdk_indirect" ] 131 part_name = "sqlite" 132 subsystem_name = "thirdparty" 133 install_images = [ system_base_dir ] 134 relative_install_dir = "platformsdk" 135 if (is_cross_platform_build) { 136 if (target_os == "ios") { 137 deps += [ "//third_party/bounds_checking_function:libsec_shared" ] 138 } else { 139 external_deps = [ "c_utils:utils" ] 140 } 141 } else { 142 external_deps = [ 143 "c_utils:utils", 144 "openssl:libcrypto_shared", 145 ] 146 } 147} 148 149ohos_executable("sqlite3") { 150 include_dirs = [ "include" ] 151 sources = [ 152 "src/shell.c", 153 "src/sqlite3.c", 154 ] 155 156 defines = [ 157 "NDEBUG=1", 158 "HAVE_USLEEP=1", 159 "SQLITE_HAVE_ISNAN", 160 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 161 "SQLITE_THREADSAFE=2", 162 "SQLITE_TEMP_STORE=3", 163 "SQLITE_POWERSAFE_OVERWRITE=1", 164 "SQLITE_DEFAULT_FILE_FORMAT=4", 165 "SQLITE_DEFAULT_AUTOVACUUM=1", 166 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 167 "SQLITE_ENABLE_FTS3", 168 "SQLITE_ENABLE_FTS4", 169 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 170 "SQLITE_DEFAULT_FILE_PERMISSIONS=0600", 171 "SQLITE_SECURE_DELETE", 172 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 173 "USE_PREAD64", 174 "fdatasync=fdatasync", 175 "SQLITE_DIRECT_OVERFLOW_READ", 176 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 177 "OPENSSL_SUPPRESS_DEPRECATED", 178 "LOG_DUMP", 179 "FDSAN_ENABLE", 180 "HARMONY_OS", 181 ] 182 183 cflags = [ 184 "-Wno-error=implicit-function-declaration", 185 "-Wno-implicit-fallthrough", 186 ] 187} 188 189if (is_mingw || is_mac) { 190 ohos_shared_library("sqlite_sdk") { 191 include_dirs = [ 192 "include", 193 "//third_party/bounds_checking_function/include", 194 ] 195 196 sources = [ "src/sqlite3.c" ] 197 198 defines = [ 199 "NDEBUG=1", 200 "HAVE_USLEEP=1", 201 "SQLITE_HAVE_ISNAN", 202 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 203 "SQLITE_THREADSAFE=2", 204 "SQLITE_TEMP_STORE=3", 205 "SQLITE_POWERSAFE_OVERWRITE=1", 206 "SQLITE_DEFAULT_FILE_FORMAT=4", 207 "SQLITE_DEFAULT_AUTOVACUUM=1", 208 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 209 "SQLITE_ENABLE_FTS3", 210 "SQLITE_ENABLE_FTS4", 211 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 212 "SQLITE_DEFAULT_FILE_PERMISSIONS=0600", 213 "SQLITE_SECURE_DELETE", 214 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 215 "USE_PREAD64", 216 "fdatasync=fdatasync", 217 "SQLITE_DIRECT_OVERFLOW_READ", 218 "SQLITE_HAS_CODEC", 219 "SQLITE_EXPORT_SYMBOLS", 220 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 221 "OPENSSL_SUPPRESS_DEPRECATED", 222 ] 223 remove_configs = [ "//build/config/compiler:chromium_code" ] 224 deps = [ "//third_party/bounds_checking_function:libsec_shared" ] 225 external_deps = [ "openssl:libcrypto_restool" ] 226 if (is_mingw) { 227 libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libws2_32.a" ] 228 } 229 cflags = [ 230 "-Wno-error=implicit-function-declaration", 231 "-Wno-implicit-fallthrough", 232 ] 233 part_name = "sqlite" 234 subsystem_name = "thirdparty" 235 } 236} 237 238if (is_cross_platform_build) { 239 ohos_static_library("sqlite_static") { 240 visibility = [ "//foundation/distributeddatamgr/*" ] 241 visibility += [ "//foundation/multimodalinput/*" ] 242 visibility += 243 [ "//hit/fuzzing_test/projects/multimodal_InputService_fuzzer/*" ] 244 visibility += [ "//foundation/communication/*" ] 245 visibility += [ "//build/common/*" ] 246 visibility += [ ":*" ] 247 visibility += [ "//base/security/*" ] 248 visibility += [ "//third_party/libsoup/*" ] 249 visibility += 250 [ "//foundation/resourceschedule/resource_schedule_service/*" ] 251 visibility += [ "//foundation/bundlemanager/ecological_rule_mgr/*" ] 252 253 sources = [ "src/sqlite3.c" ] 254 255 defines = [ 256 "NDEBUG=1", 257 "HAVE_USLEEP=1", 258 "SQLITE_HAVE_ISNAN", 259 "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", 260 "SQLITE_THREADSAFE=2", 261 "SQLITE_TEMP_STORE=3", 262 "SQLITE_POWERSAFE_OVERWRITE=1", 263 "SQLITE_DEFAULT_FILE_FORMAT=4", 264 "SQLITE_DEFAULT_AUTOVACUUM=1", 265 "SQLITE_ENABLE_MEMORY_MANAGEMENT=1", 266 "SQLITE_ENABLE_FTS3", 267 "SQLITE_ENABLE_FTS4", 268 "SQLITE_ENABLE_FTS5", 269 "SQLITE_OMIT_COMPILEOPTION_DIAGS", 270 "SQLITE_DEFAULT_FILE_PERMISSIONS=0660", 271 "SQLITE_SECURE_DELETE", 272 "SQLITE_ENABLE_BATCH_ATOMIC_WRITE", 273 "USE_PREAD64", 274 "fdatasync=fdatasync", 275 "HAVE_MALLOC_H=1", 276 "HAVE_MALLOC_USABLE_SIZE", 277 "SQLITE_DIRECT_OVERFLOW_READ", 278 "SQLITE_HAS_CODEC", 279 "SQLITE_EXPORT_SYMBOLS", 280 "SQLITE_SHARED_BLOCK_OPTIMIZATION", 281 "SQLITE_CODEC_ATTACH_CHANGED", 282 "SQLITE_ENABLE_DROPTABLE_CALLBACK", 283 "OPENSSL_SUPPRESS_DEPRECATED", 284 ] 285 286 cflags_c = [ 287 "-fvisibility=hidden", 288 "-Wno-implicit-fallthrough", 289 ] 290 291 deps = [ 292 "//third_party/bounds_checking_function:libsec_static", 293 "//third_party/openssl:libcrypto_static", 294 ] 295 public_configs = [ ":sqlite_config" ] 296 configs = [ ":sqlite3_private_config" ] 297 part_name = "sqlite" 298 subsystem_name = "thirdparty" 299 } 300} 301