cygprofile: increase timeouts to allow showing web contents
[chromium-blink-merge.git] / third_party / sqlite / sqlite.gyp
blob4fabe5e4775811b2b07585ca8bdd9f283886e5c6
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_ENABLE_FTS3',
13       # New unicode61 tokenizer with built-in tables.
14       'SQLITE_DISABLE_FTS3_UNICODE',
15       # Chromium currently does not enable fts4, disable extra code.
16       'SQLITE_DISABLE_FTS4_DEFERRED',
17       'SQLITE_ENABLE_ICU',
18       'SQLITE_ENABLE_MEMORY_MANAGEMENT',
19       'SQLITE_SECURE_DELETE',
20       # Custom flag to tweak pcache pools.
21       # TODO(shess): This shouldn't use faux-SQLite naming.
22       'SQLITE_SEPARATE_CACHE_POOLS',
23       # TODO(shess): SQLite adds mutexes to protect structures which cross
24       # threads.  In theory Chromium should be able to turn this off for a
25       # slight speed boost.
26       'THREADSAFE',
27       # SQLite can spawn threads to sort in parallel if configured
28       # appropriately.  Chromium doesn't configure SQLite for that, and would
29       # prefer to control distribution to worker threads.
30       'SQLITE_MAX_WORKER_THREADS=0',
31       # Use a read-only memory map when mmap'ed I/O is enabled to prevent memory
32       # stompers from directly corrupting the database.
33       # TODO(shess): Upstream the ability to use this define.
34       'SQLITE_MMAP_READ_ONLY=1',
35       # NOTE(shess): Some defines can affect the amalgamation.  Those should be
36       # added to google_generate_amalgamation.sh, and the amalgamation
37       # re-generated.  Usually this involves disabling features which include
38       # keywords or syntax, for instance SQLITE_OMIT_VIRTUALTABLE omits the
39       # virtual table syntax entirely.  Missing an item usually results in
40       # syntax working but execution failing.  Review:
41       #   src/src/parse.py
42       #   src/tool/mkkeywordhash.c
43     ],
44   },
45   'targets': [
46     {
47       'target_name': 'sqlite',
48       'conditions': [
49         [ 'chromeos==1' , {
50             'defines': [
51                 # Despite obvious warnings about not using this flag
52                 # in deployment, we are turning off sync in ChromeOS
53                 # and relying on the underlying journaling filesystem
54                 # to do error recovery properly.  It's much faster.
55                 'SQLITE_NO_SYNC',
56                 ],
57           },
58         ],
59         ['os_posix == 1', {
60           'defines': [
61             # Allow xSleep() call on Unix to use usleep() rather than sleep().
62             # Microsecond precision is better than second precision.  Should
63             # only affect contended databases via the busy callback.  Browser
64             # profile databases are mostly exclusive, but renderer databases may
65             # allow for contention.
66             'HAVE_USLEEP=1',
67           ],
68         }],
69         ['OS == "linux" or OS == "android"', {
70           'defines': [
71             # Linux provides fdatasync(), a faster equivalent of fsync().
72             'fdatasync=fdatasync',
73           ],
74         }],
75         ['use_system_sqlite', {
76           'type': 'none',
77           'direct_dependent_settings': {
78             'defines': [
79               'USE_SYSTEM_SQLITE',
80             ],
81           },
83           'conditions': [
84             ['OS == "ios"', {
85               'dependencies': [
86                 'sqlite_regexp',
87               ],
88               'link_settings': {
89                 'xcode_settings': {
90                   'OTHER_LDFLAGS': [
91                     '-lsqlite3',
92                   ],
93                 },
94               },
95             }],
96             ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
97               'direct_dependent_settings': {
98                 'cflags': [
99                   # This next command produces no output but it it will fail
100                   # (and cause GYP to fail) if we don't have a recent enough
101                   # version of sqlite.
102                   '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)',
104                   '<!@(pkg-config --cflags sqlite3)',
105                 ],
106               },
107               'link_settings': {
108                 'ldflags': [
109                   '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)',
110                 ],
111                 'libraries': [
112                   '<!@(pkg-config --libs-only-l sqlite3)',
113                 ],
114               },
115             }],
116           ],
117         }, { # !use_system_sqlite
118           # "sqlite3" can cause conflicts with the system library.
119           'product_name': 'chromium_sqlite3',
120           'type': '<(component)',
121           'sources': [
122             'amalgamation/sqlite3.h',
123             'amalgamation/sqlite3.c',
124           ],
125           'variables': {
126             'clang_warning_flags': [
127               # sqlite contains a few functions that are unused, at least on
128               # Windows with Chromium's sqlite patches applied
129               # (interiorCursorEOF fts3EvalDeferredPhrase
130               # fts3EvalSelectDeferred sqlite3Fts3InitHashTable
131               # sqlite3Fts3InitTok).
132               '-Wno-unused-function',
133             ],
134           },
135           'include_dirs': [
136             'amalgamation',
137           ],
138           'dependencies': [
139             '../icu/icu.gyp:icui18n',
140             '../icu/icu.gyp:icuuc',
141           ],
142           'direct_dependent_settings': {
143             'include_dirs': [
144               '.',
145               '../..',
146             ],
147           },
148           'msvs_disabled_warnings': [
149             4244, 4267,
150           ],
151           'conditions': [
152             ['OS == "win" and component == "shared_library"', {
153               'defines': ['SQLITE_API=__declspec(dllexport)'],
154               'direct_dependent_settings': {
155                 'defines': ['SQLITE_API=__declspec(dllimport)'],
156               },
157             }],
158             ['OS != "win" and component == "shared_library"', {
159               'defines': ['SQLITE_API=__attribute__((visibility("default")))'],
160             }],
161             ['OS=="linux"', {
162               'link_settings': {
163                 'libraries': [
164                   '-ldl',
165                 ],
166               },
167             }],
168             ['OS == "mac" or OS == "ios"', {
169               'link_settings': {
170                 'libraries': [
171                   '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
172                   '$(SDKROOT)/System/Library/Frameworks/CoreServices.framework',
173                 ],
174               },
175             }],
176             ['OS == "android"', {
177               'defines': [
178                 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
179                 'SQLITE_DEFAULT_AUTOVACUUM=1',
180                 'SQLITE_TEMP_STORE=3',
181                 'SQLITE_ENABLE_FTS3_BACKWARDS',
182                 'SQLITE_DEFAULT_FILE_FORMAT=4',
183               ],
184             }],
185             ['os_posix == 1 and OS != "mac" and OS != "android"', {
186               'cflags': [
187                 # SQLite doesn't believe in compiler warnings,
188                 # preferring testing.
189                 #   http://www.sqlite.org/faq.html#q17
190                 '-Wno-int-to-pointer-cast',
191                 '-Wno-pointer-to-int-cast',
192               ],
193             }],
194           ],
195         }],
196       ],
197       'includes': [
198         # Disable LTO due to ELF section name out of range
199         # crbug.com/422251
200         '../../build/android/disable_gcc_lto.gypi',
201       ],
202     },
203   ],
204   'conditions': [
205     ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
206       'targets': [
207         {
208           'target_name': 'sqlite_shell',
209           'type': 'executable',
210           'dependencies': [
211             '../icu/icu.gyp:icuuc',
212             'sqlite',
213           ],
214           'sources': [
215             'src/src/shell.c',
216             'src/src/shell_icu_linux.c',
217             # Include a dummy c++ file to force linking of libstdc++.
218             'build_as_cpp.cc',
219           ],
220         },
221       ],
222     },],
223     ['OS == "ios"', {
224       'targets': [
225         {
226           'target_name': 'sqlite_regexp',
227           'type': 'static_library',
228           'dependencies': [
229             '../icu/icu.gyp:icui18n',
230             '../icu/icu.gyp:icuuc',
231           ],
232           'defines': [
233             # Necessary to statically compile the extension.
234             'SQLITE_CORE',
235           ],
236           'sources': [
237             'src/ext/icu/icu.c',
238           ],
239         },
240       ],
241     }],
242   ],