Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / third_party / sqlite / sqlite.gyp
blob96c867d12a330952bcfc56a09af96b2737d43507
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       # TODO(shess): Figure out why this is here.  Nobody references it
32       # directly.
33       '_HAS_EXCEPTIONS=0',
34       # NOTE(shess): Some defines can affect the amalgamation.  Those should be
35       # added to google_generate_amalgamation.sh, and the amalgamation
36       # re-generated.  Usually this involves disabling features which include
37       # keywords or syntax, for instance SQLITE_OMIT_VIRTUALTABLE omits the
38       # virtual table syntax entirely.  Missing an item usually results in
39       # syntax working but execution failing.  Review:
40       #   src/src/parse.py
41       #   src/tool/mkkeywordhash.c
42     ],
43   },
44   'targets': [
45     {
46       'target_name': 'sqlite',
47       'conditions': [
48         [ 'chromeos==1' , {
49             'defines': [
50                 # Despite obvious warnings about not using this flag
51                 # in deployment, we are turning off sync in ChromeOS
52                 # and relying on the underlying journaling filesystem
53                 # to do error recovery properly.  It's much faster.
54                 'SQLITE_NO_SYNC',
55                 ],
56           },
57         ],
58         ['os_posix == 1', {
59           'defines': [
60             # Allow xSleep() call on Unix to use usleep() rather than sleep().
61             # Microsecond precision is better than second precision.  Should
62             # only affect contended databases via the busy callback.  Browser
63             # profile databases are mostly exclusive, but renderer databases may
64             # allow for contention.
65             'HAVE_USLEEP=1',
66           ],
67         }],
68         ['OS == "linux" or OS == "android"', {
69           'defines': [
70             # Linux provides fdatasync(), a faster equivalent of fsync().
71             'fdatasync=fdatasync',
72           ],
73         }],
74         ['use_system_sqlite', {
75           'type': 'none',
76           'direct_dependent_settings': {
77             'defines': [
78               'USE_SYSTEM_SQLITE',
79             ],
80           },
82           'conditions': [
83             ['OS == "ios"', {
84               'dependencies': [
85                 'sqlite_regexp',
86               ],
87               'link_settings': {
88                 'xcode_settings': {
89                   'OTHER_LDFLAGS': [
90                     '-lsqlite3',
91                   ],
92                 },
93               },
94             }],
95             ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
96               'direct_dependent_settings': {
97                 'cflags': [
98                   # This next command produces no output but it it will fail
99                   # (and cause GYP to fail) if we don't have a recent enough
100                   # version of sqlite.
101                   '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)',
103                   '<!@(pkg-config --cflags sqlite3)',
104                 ],
105               },
106               'link_settings': {
107                 'ldflags': [
108                   '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)',
109                 ],
110                 'libraries': [
111                   '<!@(pkg-config --libs-only-l sqlite3)',
112                 ],
113               },
114             }],
115           ],
116         }, { # !use_system_sqlite
117           'product_name': 'sqlite3',
118           'type': 'static_library',
119           'sources': [
120             'amalgamation/sqlite3.h',
121             'amalgamation/sqlite3.c',
122           ],
123           'include_dirs': [
124             'amalgamation',
125           ],
126           'dependencies': [
127             '../icu/icu.gyp:icui18n',
128             '../icu/icu.gyp:icuuc',
129           ],
130           'direct_dependent_settings': {
131             'include_dirs': [
132               '.',
133               '../..',
134             ],
135           },
136           'msvs_disabled_warnings': [
137             4244, 4267,
138           ],
139           'conditions': [
140             ['OS=="linux"', {
141               'link_settings': {
142                 'libraries': [
143                   '-ldl',
144                 ],
145               },
146             }],
147             ['OS == "mac" or OS == "ios"', {
148               'link_settings': {
149                 'libraries': [
150                   '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
151                 ],
152               },
153             }],
154             ['OS == "android"', {
155               'defines': [
156                 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
157                 'SQLITE_DEFAULT_AUTOVACUUM=1',
158                 'SQLITE_TEMP_STORE=3',
159                 'SQLITE_ENABLE_FTS3_BACKWARDS',
160                 'SQLITE_DEFAULT_FILE_FORMAT=4',
161               ],
162             }],
163             ['os_posix == 1 and OS != "mac" and OS != "android"', {
164               'cflags': [
165                 # SQLite doesn't believe in compiler warnings,
166                 # preferring testing.
167                 #   http://www.sqlite.org/faq.html#q17
168                 '-Wno-int-to-pointer-cast',
169                 '-Wno-pointer-to-int-cast',
170               ],
171             }],
172           ],
173         }],
174       ],
175       'includes': [
176         # Disable LTO due to ELF section name out of range
177         # crbug.com/422251
178         '../../build/android/disable_lto.gypi',
179       ],
180     },
181   ],
182   'conditions': [
183     ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
184       'targets': [
185         {
186           'target_name': 'sqlite_shell',
187           'type': 'executable',
188           'dependencies': [
189             '../icu/icu.gyp:icuuc',
190             'sqlite',
191           ],
192           'sources': [
193             'src/src/shell.c',
194             'src/src/shell_icu_linux.c',
195             # Include a dummy c++ file to force linking of libstdc++.
196             'build_as_cpp.cc',
197           ],
198         },
199       ],
200     },],
201     ['OS == "ios"', {
202       'targets': [
203         {
204           'target_name': 'sqlite_regexp',
205           'type': 'static_library',
206           'dependencies': [
207             '../icu/icu.gyp:icui18n',
208             '../icu/icu.gyp:icuuc',
209           ],
210           'defines': [
211             # Necessary to statically compile the extension.
212             'SQLITE_CORE',
213           ],
214           'sources': [
215             'src/ext/icu/icu.c',
216           ],
217         },
218       ],
219     }],
220   ],