Add ICU message format support
[chromium-blink-merge.git] / third_party / sqlite / sqlite.gyp
blobbb3a7f5526e01800d2eba97c21aeefe6ec3bf5cd
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       # 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         ['OS == "linux" or OS == "android"', {
66           'defines': [
67             # Linux provides fdatasync(), a faster equivalent of fsync().
68             'fdatasync=fdatasync',
69           ],
70         }],
71         ['use_system_sqlite', {
72           'type': 'none',
73           'direct_dependent_settings': {
74             'defines': [
75               'USE_SYSTEM_SQLITE',
76             ],
77           },
79           'conditions': [
80             ['OS == "ios"', {
81               'dependencies': [
82                 'sqlite_regexp',
83               ],
84               'link_settings': {
85                 'xcode_settings': {
86                   'OTHER_LDFLAGS': [
87                     '-lsqlite3',
88                   ],
89                 },
90               },
91             }],
92             ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
93               'direct_dependent_settings': {
94                 'cflags': [
95                   # This next command produces no output but it it will fail
96                   # (and cause GYP to fail) if we don't have a recent enough
97                   # version of sqlite.
98                   '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)',
100                   '<!@(pkg-config --cflags sqlite3)',
101                 ],
102               },
103               'link_settings': {
104                 'ldflags': [
105                   '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)',
106                 ],
107                 'libraries': [
108                   '<!@(pkg-config --libs-only-l sqlite3)',
109                 ],
110               },
111             }],
112           ],
113         }, { # !use_system_sqlite
114           'product_name': 'sqlite3',
115           'type': 'static_library',
116           'sources': [
117             'amalgamation/sqlite3.h',
118             'amalgamation/sqlite3.c',
119           ],
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             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           ],
170         }],
171       ],
172       'includes': [
173         # Disable LTO due to ELF section name out of range
174         # crbug.com/422251
175         '../../build/android/disable_lto.gypi',
176       ],
177     },
178   ],
179   'conditions': [
180     ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
181       'targets': [
182         {
183           'target_name': 'sqlite_shell',
184           'type': 'executable',
185           'dependencies': [
186             '../icu/icu.gyp:icuuc',
187             'sqlite',
188           ],
189           'sources': [
190             'src/src/shell.c',
191             'src/src/shell_icu_linux.c',
192             # Include a dummy c++ file to force linking of libstdc++.
193             'build_as_cpp.cc',
194           ],
195         },
196       ],
197     },],
198     ['OS == "ios"', {
199       'targets': [
200         {
201           'target_name': 'sqlite_regexp',
202           'type': 'static_library',
203           'dependencies': [
204             '../icu/icu.gyp:icui18n',
205             '../icu/icu.gyp:icuuc',
206           ],
207           'defines': [
208             # Necessary to statically compile the extension.
209             'SQLITE_CORE',
210           ],
211           'sources': [
212             'src/ext/icu/icu.c',
213           ],
214         },
215       ],
216     }],
217   ],