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