• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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")
15import("//third_party/sqlite/sqlite.gni")
16
17is_cross_platform_build = defined(is_arkui_x) && is_arkui_x
18sqlite_patched_dir = root_out_dir + "/patched_sqlite"
19
20# Lets callers do '#include <sqlite3.h>'
21config("sqlite_config") {
22  include_dirs = [ "$sqlite_patched_dir/include" ]
23}
24
25# This is the configuration used to build sqlite itself.
26# It should not be needed outside of this library.
27config("sqlite3_private_config") {
28  visibility = [ ":*" ]
29  include_dirs = [ "$sqlite_patched_dir/include" ]
30}
31
32group("libsqlite") {
33  public_deps = [
34    ":sqlite",
35    ":sqliteicu"
36  ]
37  deps = [
38    ":sqlitecompressvfs"
39  ]
40}
41
42ohos_shared_library("sqliteicu") {
43  branch_protector_ret = "pac_ret"
44  sources = [ "$sqlite_patched_dir/src/sqlite3icu.c" ]
45
46  defines = [
47    "NDEBUG=1",
48    "SQLITE_EXPORT_SYMBOLS",
49    "SQLITE_ENABLE_FTS3",
50    "OS_FEATURE",
51    "SQLITE_ENABLE_ICU",
52  ]
53  cflags_c = [
54    "-fvisibility=hidden",
55    "-Wno-implicit-fallthrough",
56  ]
57  if (target_os != "ios") {
58    ldflags = [ "-Wl,--exclude-libs,ALL" ]
59  }
60  deps = [
61    ":sqlite",
62    "//third_party/sqlite/patch:apply_patch",
63  ]
64  public_configs = [ ":sqlite_config" ]
65  configs = [ ":sqlite3_private_config" ]
66  innerapi_tags = [ "platformsdk_indirect" ]
67  part_name = "sqlite"
68  subsystem_name = "thirdparty"
69  install_images = [ system_base_dir ]
70  relative_install_dir = "platformsdk"
71  external_deps = []
72  if (is_cross_platform_build) {
73    if (target_os == "ios") {
74      deps += [ "//third_party/bounds_checking_function:libsec_shared" ]
75    } else {
76      deps += [ "//commonlibrary/c_utils/base:utils" ]
77    }
78  } else {
79    external_deps += [ "c_utils:utils" ]
80  }
81  external_deps += [
82    "icu:shared_icui18n",
83    "icu:shared_icuuc",
84  ]
85}
86
87ohos_shared_library("sqlitecompressvfs") {
88  branch_protector_ret = "pac_ret"
89  sources = [ "$sqlite_patched_dir/src/compressvfs.c" ]
90
91  defines = [
92    "NDEBUG=1",
93    "SQLITE_EXPORT_SYMBOLS",
94    "SQLITE_ENABLE_PAGE_COMPRESS",
95    "OS_FEATURE",
96  ]
97  cflags_c = [
98    "-fvisibility=hidden",
99    "-Wno-implicit-fallthrough",
100  ]
101  if (target_os != "ios") {
102    ldflags = [ "-Wl,--exclude-libs,ALL" ]
103  }
104  deps = [
105    ":sqlite",
106    "//third_party/sqlite/patch:apply_patch",
107  ]
108  public_configs = [ ":sqlite_config" ]
109  configs = [ ":sqlite3_private_config" ]
110  innerapi_tags = [ "platformsdk_indirect" ]
111  part_name = "sqlite"
112  subsystem_name = "thirdparty"
113  install_images = [ system_base_dir ]
114  relative_install_dir = "platformsdk"
115  external_deps = []
116  if (is_cross_platform_build) {
117    if (target_os == "ios") {
118      deps += [ "//third_party/bounds_checking_function:libsec_shared" ]
119    } else {
120      deps += [ "//commonlibrary/c_utils/base:utils" ]
121    }
122  } else {
123    external_deps += [ "c_utils:utils" ]
124  }
125}
126
127ohos_shared_library("sqlite") {
128  branch_protector_ret = "pac_ret"
129  sources = [
130    "$sqlite_patched_dir/src/sqlite3.c",
131    "$sqlite_patched_dir/ext/misc/cksumvfs.c",
132  ]
133
134  defines = [
135    "NDEBUG=1",
136    "HAVE_USLEEP=1",
137    "SQLITE_HAVE_ISNAN",
138    "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
139    "SQLITE_THREADSAFE=2",
140    "SQLITE_TEMP_STORE=3",
141    "SQLITE_POWERSAFE_OVERWRITE=1",
142    "SQLITE_DEFAULT_FILE_FORMAT=4",
143    "SQLITE_DEFAULT_AUTOVACUUM=1",
144    "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
145    "SQLITE_ENABLE_LOAD_EXTENSION",
146    "SQLITE_ENABLE_FTS3",
147    "SQLITE_ENABLE_FTS3_TOKENIZER",
148    "SQLITE_ENABLE_FTS4",
149    "SQLITE_ENABLE_FTS5",
150    "SQLITE_OMIT_COMPILEOPTION_DIAGS",
151    "SQLITE_DEFAULT_FILE_PERMISSIONS=0660",
152    "SQLITE_SECURE_DELETE",
153    "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
154    "USE_PREAD64",
155    "fdatasync=fdatasync",
156    "HAVE_MALLOC_H=1",
157    "HAVE_MALLOC_USABLE_SIZE",
158    "SQLITE_DIRECT_OVERFLOW_READ",
159    "SQLITE_HAS_CODEC",
160    "SQLITE_EXPORT_SYMBOLS",
161    "SQLITE_SHARED_BLOCK_OPTIMIZATION",
162    "SQLITE_CODEC_ATTACH_CHANGED",
163    "SQLITE_ENABLE_DROPTABLE_CALLBACK",
164    "OPENSSL_SUPPRESS_DEPRECATED",
165    "LOG_DUMP",
166    "FDSAN_ENABLE",
167    "OS_FEATURE",
168    "SQLITE_HDR_CHECK",
169    "SQLITE_ENABLE_ICU",
170    "SQLITE_META_DWR",
171    "SQLITE_ENABLE_BINLOG",
172    "SQLITE_CKSUMVFS_STATIC",
173    "SQLITE_ENABLE_PAGE_COMPRESS",
174  ]
175  if (sqlite_support_check_pages) {
176  }
177  cflags_c = [
178    "-fvisibility=hidden",
179    "-Wno-implicit-fallthrough",
180  ]
181  if (target_os != "ios") {
182    ldflags = [ "-Wl,--exclude-libs,ALL" ]
183  }
184  deps = [ "//third_party/sqlite/patch:apply_patch" ]
185  public_configs = [ ":sqlite_config" ]
186  public_external_deps = [ "c_utils:utils" ]
187  configs = [ ":sqlite3_private_config" ]
188  innerapi_tags = [ "platformsdk_indirect" ]
189  part_name = "sqlite"
190  subsystem_name = "thirdparty"
191  install_images = [ system_base_dir ]
192  relative_install_dir = "platformsdk"
193  if (is_cross_platform_build) {
194    if (target_os == "ios") {
195      deps += [ "//third_party/bounds_checking_function:libsec_shared" ]
196    } else {
197      external_deps = [ "c_utils:utils" ]
198    }
199  } else {
200    external_deps = [
201      "c_utils:utils",
202      "openssl:libcrypto_shared",
203    ]
204  }
205  if (is_ohos && is_clang && enhanced_opt &&
206      (target_cpu == "arm" || target_cpu == "arm64")) {
207    ldflags += [ "-Wl,-Bsymbolic" ]
208    if (sqlite_feature_enable_pgo) {
209      cflags_c += [
210        "-fprofile-use=" +
211          rebase_path("${sqlite_feature_pgo_path}/libsqlite.profdata",
212                      root_build_dir),
213        "-Wno-error=backend-plugin",
214        "-Wno-profile-instr-out-of-date",
215        "-Wno-profile-instr-unprofiled",
216      ]
217      if(target_cpu == "arm64" && enable_enhanced_opt) {
218        ldflags += [ "-Wl,--aarch64-inline-plt" ]
219      }
220    }
221  }
222}
223
224ohos_executable("sqlite3") {
225  include_dirs = [ "$sqlite_patched_dir/include" ]
226  sources = [ "$sqlite_patched_dir/src/shell.c" ]
227
228  defines = [
229    "NDEBUG=1",
230    "HAVE_USLEEP=1",
231    "SQLITE_HAVE_ISNAN",
232    "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
233    "SQLITE_THREADSAFE=2",
234    "SQLITE_TEMP_STORE=3",
235    "SQLITE_POWERSAFE_OVERWRITE=1",
236    "SQLITE_DEFAULT_FILE_FORMAT=4",
237    "SQLITE_DEFAULT_AUTOVACUUM=1",
238    "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
239    "SQLITE_ENABLE_FTS3",
240    "SQLITE_ENABLE_FTS4",
241    "SQLITE_OMIT_COMPILEOPTION_DIAGS",
242    "SQLITE_DEFAULT_FILE_PERMISSIONS=0600",
243    "SQLITE_SECURE_DELETE",
244    "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
245    "USE_PREAD64",
246    "fdatasync=fdatasync",
247    "SQLITE_DIRECT_OVERFLOW_READ",
248    "SQLITE_SHARED_BLOCK_OPTIMIZATION",
249    "OPENSSL_SUPPRESS_DEPRECATED",
250    "LOG_DUMP",
251    "FDSAN_ENABLE",
252    "OS_FEATURE",
253  ]
254
255  cflags = [
256    "-Wno-error=implicit-function-declaration",
257    "-Wno-macro-redefined",
258    "-Wno-implicit-fallthrough",
259  ]
260
261  deps = [
262    ":sqlite",
263    "//third_party/sqlite/patch:apply_patch",
264  ]
265
266  public_configs = [ ":sqlite_config" ]
267  external_deps = [ "c_utils:utils" ]
268  configs = [ ":sqlite3_private_config" ]
269  part_name = "sqlite"
270  subsystem_name = "thirdparty"
271}
272
273if (is_mingw || is_mac) {
274  ohos_shared_library("sqlite_sdk") {
275    include_dirs = [
276      "$sqlite_patched_dir/include",
277      "//third_party/bounds_checking_function/include",
278    ]
279
280    sources = [ "$sqlite_patched_dir/src/sqlite3.c" ]
281
282    defines = [
283      "NDEBUG=1",
284      "HAVE_USLEEP=1",
285      "SQLITE_HAVE_ISNAN",
286      "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
287      "SQLITE_THREADSAFE=2",
288      "SQLITE_TEMP_STORE=3",
289      "SQLITE_POWERSAFE_OVERWRITE=1",
290      "SQLITE_DEFAULT_FILE_FORMAT=4",
291      "SQLITE_DEFAULT_AUTOVACUUM=1",
292      "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
293      "SQLITE_ENABLE_FTS3",
294      "SQLITE_ENABLE_FTS4",
295      "SQLITE_OMIT_COMPILEOPTION_DIAGS",
296      "SQLITE_DEFAULT_FILE_PERMISSIONS=0600",
297      "SQLITE_SECURE_DELETE",
298      "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
299      "USE_PREAD64",
300      "fdatasync=fdatasync",
301      "SQLITE_DIRECT_OVERFLOW_READ",
302      "SQLITE_HAS_CODEC",
303      "SQLITE_EXPORT_SYMBOLS",
304      "SQLITE_SHARED_BLOCK_OPTIMIZATION",
305      "OPENSSL_SUPPRESS_DEPRECATED",
306    ]
307    remove_configs = [ "//build/config/compiler:chromium_code" ]
308    deps = [
309      "//third_party/bounds_checking_function:libsec_shared",
310      "//third_party/sqlite/patch:apply_patch",
311    ]
312    external_deps = [ "openssl:libcrypto_restool" ]
313    if (is_mingw) {
314      libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libws2_32.a" ]
315    }
316    cflags = [
317      "-Wno-error=implicit-function-declaration",
318      "-Wno-implicit-fallthrough",
319    ]
320    part_name = "sqlite"
321    subsystem_name = "thirdparty"
322  }
323}
324
325if (is_cross_platform_build) {
326  ohos_static_library("sqlite_static") {
327    visibility = [ "//foundation/distributeddatamgr/*" ]
328    visibility += [ "//foundation/multimodalinput/*" ]
329    visibility +=
330        [ "//hit/fuzzing_test/projects/multimodal_InputService_fuzzer/*" ]
331    visibility += [ "//foundation/communication/*" ]
332    visibility += [ "//build/common/*" ]
333    visibility += [ ":*" ]
334    visibility += [ "//base/security/*" ]
335    visibility += [ "//third_party/libsoup/*" ]
336    visibility +=
337        [ "//foundation/resourceschedule/resource_schedule_service/*" ]
338    visibility += [ "//foundation/bundlemanager/ecological_rule_mgr/*" ]
339
340    sources = [ "$sqlite_patched_dir/src/sqlite3.c" ]
341
342    defines = [
343      "NDEBUG=1",
344      "HAVE_USLEEP=1",
345      "SQLITE_HAVE_ISNAN",
346      "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
347      "SQLITE_THREADSAFE=2",
348      "SQLITE_TEMP_STORE=3",
349      "SQLITE_POWERSAFE_OVERWRITE=1",
350      "SQLITE_DEFAULT_FILE_FORMAT=4",
351      "SQLITE_DEFAULT_AUTOVACUUM=1",
352      "SQLITE_ENABLE_MEMORY_MANAGEMENT=1",
353      "SQLITE_ENABLE_FTS3",
354      "SQLITE_ENABLE_FTS4",
355      "SQLITE_ENABLE_FTS5",
356      "SQLITE_OMIT_COMPILEOPTION_DIAGS",
357      "SQLITE_DEFAULT_FILE_PERMISSIONS=0660",
358      "SQLITE_SECURE_DELETE",
359      "SQLITE_ENABLE_BATCH_ATOMIC_WRITE",
360      "USE_PREAD64",
361      "fdatasync=fdatasync",
362      "HAVE_MALLOC_H=1",
363      "HAVE_MALLOC_USABLE_SIZE",
364      "SQLITE_DIRECT_OVERFLOW_READ",
365      "SQLITE_HAS_CODEC",
366      "SQLITE_EXPORT_SYMBOLS",
367      "SQLITE_SHARED_BLOCK_OPTIMIZATION",
368      "SQLITE_CODEC_ATTACH_CHANGED",
369      "SQLITE_ENABLE_DROPTABLE_CALLBACK",
370      "OPENSSL_SUPPRESS_DEPRECATED",
371    ]
372
373    cflags_c = [
374      "-fvisibility=hidden",
375      "-Wno-implicit-fallthrough",
376    ]
377
378    deps = [
379      "//third_party/bounds_checking_function:libsec_static",
380      "//third_party/openssl:libcrypto_static",
381      "//third_party/sqlite/patch:apply_patch",
382    ]
383    public_configs = [ ":sqlite_config" ]
384    configs = [ ":sqlite3_private_config" ]
385    part_name = "sqlite"
386    subsystem_name = "thirdparty"
387  }
388}
389