Service Worker: Start coalescing SWVersion's timers.
[chromium-blink-merge.git] / third_party / sqlite / sqlite.gyp
blobd514ebf4b23e96df661b63f9ceeb7c1b3cf1508f
1 # 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.
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       # New unicode61 tokenizer with built-in tables.
15       'SQLITE_DISABLE_FTS3_UNICODE',
16       # Chromium currently does not enable fts4, disable extra code.
17       'SQLITE_DISABLE_FTS4_DEFERRED',
18       'SQLITE_ENABLE_ICU',
19       'SQLITE_ENABLE_MEMORY_MANAGEMENT',
20       'SQLITE_SECURE_DELETE',
21       # Custom flag to tweak pcache pools.
22       # TODO(shess): This shouldn't use faux-SQLite naming.      
23       'SQLITE_SEPARATE_CACHE_POOLS',
24       # TODO(shess): SQLite adds mutexes to protect structures which cross
25       # threads.  In theory Chromium should be able to turn this off for a
26       # slight speed boost.
27       'THREADSAFE',
28       # TODO(shess): Figure out why this is here.  Nobody references it
29       # directly.
30       '_HAS_EXCEPTIONS=0',
31       # NOTE(shess): Some defines can affect the amalgamation.  Those should be
32       # added to google_generate_amalgamation.sh, and the amalgamation
33       # re-generated.  Usually this involves disabling features which include
34       # keywords or syntax, for instance SQLITE_OMIT_VIRTUALTABLE omits the
35       # virtual table syntax entirely.  Missing an item usually results in
36       # syntax working but execution failing.  Review:
37       #   src/src/parse.py
38       #   src/tool/mkkeywordhash.c
39     ],
40   },
41   'targets': [
42     {
43       'target_name': 'sqlite',
44       'conditions': [
45         [ 'chromeos==1' , {
46             'defines': [
47                 # Despite obvious warnings about not using this flag
48                 # in deployment, we are turning off sync in ChromeOS
49                 # and relying on the underlying journaling filesystem
50                 # to do error recovery properly.  It's much faster.
51                 'SQLITE_NO_SYNC',
52                 ],
53           },
54         ],
55         ['os_posix == 1', {
56           'defines': [
57             # Allow xSleep() call on Unix to use usleep() rather than sleep().
58             # Microsecond precision is better than second precision.  Should
59             # only affect contended databases via the busy callback.  Browser
60             # profile databases are mostly exclusive, but renderer databases may
61             # allow for contention.
62             'HAVE_USLEEP=1',
63           ],
64         }],
65         ['use_system_sqlite', {
66           'type': 'none',
67           'direct_dependent_settings': {
68             'defines': [
69               'USE_SYSTEM_SQLITE',
70             ],
71           },
73           'conditions': [
74             ['OS == "ios"', {
75               'dependencies': [
76                 'sqlite_regexp',
77               ],
78               'link_settings': {
79                 'libraries': [
80                   '$(SDKROOT)/usr/lib/libsqlite3.dylib',
81                 ],
82               },
83             }],
84             ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
85               'direct_dependent_settings': {
86                 'cflags': [
87                   # This next command produces no output but it it will fail
88                   # (and cause GYP to fail) if we don't have a recent enough
89                   # version of sqlite.
90                   '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)',
92                   '<!@(pkg-config --cflags sqlite3)',
93                 ],
94               },
95               'link_settings': {
96                 'ldflags': [
97                   '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)',
98                 ],
99                 'libraries': [
100                   '<!@(pkg-config --libs-only-l sqlite3)',
101                 ],
102               },
103             }],
104           ],
105         }, { # !use_system_sqlite
106           'product_name': 'sqlite3',
107           'type': 'static_library',
108           'sources': [
109             'amalgamation/sqlite3.h',
110             'amalgamation/sqlite3.c',
111           ],
113           # TODO(shess): Previously fts1 and rtree files were
114           # explicitly excluded from the build.  Make sure they are
115           # logically still excluded.
117           # TODO(shess): Should all of the sources be listed and then
118           # excluded?  For editing purposes?
120           'include_dirs': [
121             'amalgamation',
122           ],
123           'dependencies': [
124             '../icu/icu.gyp:icui18n',
125             '../icu/icu.gyp:icuuc',
126           ],
127           'direct_dependent_settings': {
128             'include_dirs': [
129               '.',
130               '../..',
131             ],
132           },
133           'msvs_disabled_warnings': [
134             4018, 4244, 4267,
135           ],
136           'conditions': [
137             ['OS=="linux"', {
138               'link_settings': {
139                 'libraries': [
140                   '-ldl',
141                 ],
142               },
143             }],
144             ['OS == "mac" or OS == "ios"', {
145               'link_settings': {
146                 'libraries': [
147                   '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
148                 ],
149               },
150             }],
151             ['OS == "android"', {
152               'defines': [
153                 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
154                 'SQLITE_DEFAULT_AUTOVACUUM=1',
155                 'SQLITE_TEMP_STORE=3',
156                 'SQLITE_ENABLE_FTS3_BACKWARDS',
157                 'SQLITE_DEFAULT_FILE_FORMAT=4',
158               ],
159             }],
160             ['os_posix == 1 and OS != "mac" and OS != "android"', {
161               'cflags': [
162                 # SQLite doesn't believe in compiler warnings,
163                 # preferring testing.
164                 #   http://www.sqlite.org/faq.html#q17
165                 '-Wno-int-to-pointer-cast',
166                 '-Wno-pointer-to-int-cast',
167               ],
168             }],
169             # Enable feedback-directed optimisation for sqlite when building in android.
170             ['android_webview_build == 1', {
171               'aosp_build_settings': {
172                 'LOCAL_FDO_SUPPORT': 'true',
173               },
174             }],
175             ['sqlite_enable_fts2', {
176               'defines': [
177                 'SQLITE_ENABLE_BROKEN_FTS2',
178                 'SQLITE_ENABLE_FTS2',
179               ],
180               'sources': [
181                 # fts2.c currently has a lot of conflicts when added to
182                 # the amalgamation.  It is probably not worth fixing that.
183                 'src/ext/fts2/fts2.c',
184                 'src/ext/fts2/fts2.h',
185                 'src/ext/fts2/fts2_hash.c',
186                 'src/ext/fts2/fts2_hash.h',
187                 'src/ext/fts2/fts2_icu.c',
188                 'src/ext/fts2/fts2_porter.c',
189                 'src/ext/fts2/fts2_tokenizer.c',
190                 'src/ext/fts2/fts2_tokenizer.h',
191                 'src/ext/fts2/fts2_tokenizer1.c',
192               ],
193               'include_dirs': [
194                 'src/src',
195               ],
196             }],
197           ],
198         }],
199       ],
200       'includes': [
201         # Disable LTO due to ELF section name out of range
202         # crbug.com/422251
203         '../../build/android/disable_lto.gypi',
204       ],
205     },
206   ],
207   'conditions': [
208     ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
209       'targets': [
210         {
211           'target_name': 'sqlite_shell',
212           'type': 'executable',
213           'dependencies': [
214             '../icu/icu.gyp:icuuc',
215             'sqlite',
216           ],
217           'sources': [
218             'src/src/shell.c',
219             'src/src/shell_icu_linux.c',
220             # Include a dummy c++ file to force linking of libstdc++.
221             'build_as_cpp.cc',
222           ],
223         },
224       ],
225     },],
226     ['OS == "ios"', {
227       'targets': [
228         {
229           'target_name': 'sqlite_regexp',
230           'type': 'static_library',
231           'dependencies': [
232             '../icu/icu.gyp:icui18n',
233             '../icu/icu.gyp:icuuc',
234           ],
235           'sources': [
236             'src/ext/icu/icu.c',
237           ],
238         },
239       ],
240     }],
241   ],