blob: 26bc36d4f0b00d667a2df865ddbd51bba88f3e70 [file] [log] [blame]
Scott Grahamd19529d2014-11-03 15:04:31 -08001# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6 'variables': {
7 'use_system_sqlite%': 0,
8 'required_sqlite_version': '3.6.1',
9 },
10 'target_defaults': {
11 'defines': [
12 'SQLITE_CORE',
13 'SQLITE_ENABLE_FTS3',
14 'SQLITE_ENABLE_ICU',
15 'SQLITE_ENABLE_MEMORY_MANAGEMENT',
16 'SQLITE_SECURE_DELETE',
17 'SQLITE_SEPARATE_CACHE_POOLS',
18 'THREADSAFE',
19 '_HAS_EXCEPTIONS=0',
20 ],
21 },
22 'targets': [
23 {
24 'target_name': 'sqlite',
25 'conditions': [
26 [ 'chromeos==1' , {
27 'defines': [
28 # Despite obvious warnings about not using this flag
29 # in deployment, we are turning off sync in ChromeOS
30 # and relying on the underlying journaling filesystem
31 # to do error recovery properly. It's much faster.
32 'SQLITE_NO_SYNC',
33 ],
34 },
35 ],
36 ['use_system_sqlite', {
37 'type': 'none',
38 'direct_dependent_settings': {
39 'defines': [
40 'USE_SYSTEM_SQLITE',
41 ],
42 },
43
44 'conditions': [
45 ['OS == "ios"', {
46 'dependencies': [
47 'sqlite_regexp',
48 ],
49 'link_settings': {
50 'libraries': [
51 '$(SDKROOT)/usr/lib/libsqlite3.dylib',
52 ],
53 },
54 }],
55 ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
56 'direct_dependent_settings': {
57 'cflags': [
58 # This next command produces no output but it it will fail
59 # (and cause GYP to fail) if we don't have a recent enough
60 # version of sqlite.
61 '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)',
62
63 '<!@(pkg-config --cflags sqlite3)',
64 ],
65 },
66 'link_settings': {
67 'ldflags': [
68 '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)',
69 ],
70 'libraries': [
71 '<!@(pkg-config --libs-only-l sqlite3)',
72 ],
73 },
74 }],
75 ],
76 }, { # !use_system_sqlite
77 'product_name': 'sqlite3',
78 'type': 'static_library',
79 'sources': [
80 'amalgamation/sqlite3.h',
81 'amalgamation/sqlite3.c',
82 ],
83
84 # TODO(shess): Previously fts1 and rtree files were
85 # explicitly excluded from the build. Make sure they are
86 # logically still excluded.
87
88 # TODO(shess): Should all of the sources be listed and then
89 # excluded? For editing purposes?
90
91 'include_dirs': [
92 'amalgamation',
93 ],
94 'dependencies': [
95 '../icu/icu.gyp:icui18n',
96 '../icu/icu.gyp:icuuc',
97 ],
98 'direct_dependent_settings': {
99 'include_dirs': [
100 '.',
101 '../..',
102 ],
103 },
104 'msvs_disabled_warnings': [
105 4018, 4244, 4267,
106 ],
107 'variables': {
108 'clang_warning_flags': [
109 # sqlite does `if (*a++ && *b++);` in a non-buggy way.
110 '-Wno-empty-body',
111 # sqlite has some `unsigned < 0` checks.
112 '-Wno-tautological-compare',
113 ],
114 },
115 'conditions': [
116 ['OS=="linux"', {
117 'link_settings': {
118 'libraries': [
119 '-ldl',
120 ],
121 },
122 }],
123 ['OS == "mac" or OS == "ios"', {
124 'link_settings': {
125 'libraries': [
126 '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
127 ],
128 },
129 }],
130 ['OS == "android"', {
131 'defines': [
132 'HAVE_USLEEP=1',
133 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
134 'SQLITE_DEFAULT_AUTOVACUUM=1',
135 'SQLITE_TEMP_STORE=3',
136 'SQLITE_ENABLE_FTS3_BACKWARDS',
137 'DSQLITE_DEFAULT_FILE_FORMAT=4',
138 ],
139 }],
140 ['os_posix == 1 and OS != "mac" and OS != "android"', {
141 'cflags': [
142 # SQLite doesn't believe in compiler warnings,
143 # preferring testing.
144 # http://www.sqlite.org/faq.html#q17
145 '-Wno-int-to-pointer-cast',
146 '-Wno-pointer-to-int-cast',
147 ],
148 }],
149 # Enable feedback-directed optimisation for sqlite when building in android.
150 ['android_webview_build == 1', {
151 'aosp_build_settings': {
152 'LOCAL_FDO_SUPPORT': 'true',
153 },
154 }],
155 ['sqlite_enable_fts2', {
156 'defines': [
157 'SQLITE_ENABLE_BROKEN_FTS2',
158 'SQLITE_ENABLE_FTS2',
159 ],
160 'sources': [
161 # fts2.c currently has a lot of conflicts when added to
162 # the amalgamation. It is probably not worth fixing that.
163 'src/ext/fts2/fts2.c',
164 'src/ext/fts2/fts2.h',
165 'src/ext/fts2/fts2_hash.c',
166 'src/ext/fts2/fts2_hash.h',
167 'src/ext/fts2/fts2_icu.c',
168 'src/ext/fts2/fts2_porter.c',
169 'src/ext/fts2/fts2_tokenizer.c',
170 'src/ext/fts2/fts2_tokenizer.h',
171 'src/ext/fts2/fts2_tokenizer1.c',
172 ],
173 'include_dirs': [
174 'src/src',
175 ],
176 }],
177 ],
178 }],
179 ],
180 'includes': [
181 # Disable LTO due to ELF section name out of range
182 # crbug.com/422251
183 '../../build/android/disable_lto.gypi',
184 ],
185 },
186 ],
187 'conditions': [
188 ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
189 'targets': [
190 {
191 'target_name': 'sqlite_shell',
192 'type': 'executable',
193 'dependencies': [
194 '../icu/icu.gyp:icuuc',
195 'sqlite',
196 ],
197 'sources': [
198 'src/src/shell.c',
199 'src/src/shell_icu_linux.c',
200 # Include a dummy c++ file to force linking of libstdc++.
201 'build_as_cpp.cc',
202 ],
203 },
204 ],
205 },],
206 ['OS == "ios"', {
207 'targets': [
208 {
209 'target_name': 'sqlite_regexp',
210 'type': 'static_library',
211 'dependencies': [
212 '../icu/icu.gyp:icui18n',
213 '../icu/icu.gyp:icuuc',
214 ],
215 'sources': [
216 'src/ext/icu/icu.c',
217 ],
218 },
219 ],
220 }],
221 ],
222}