xref: /third_party/sqlite/BUILD.gn (revision 91ad9d8e)
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