Give names to all utility processes.
[chromium-blink-merge.git] / third_party / sqlite / sqlite.gyp
blob183ba11c9b5d3f792652256292513fdcb5d3420d
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         ['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                 'libraries': [
86                   '$(SDKROOT)/usr/lib/libsqlite3.dylib',
87                 ],
88               },
89             }],
90             ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', {
91               'direct_dependent_settings': {
92                 'cflags': [
93                   # This next command produces no output but it it will fail
94                   # (and cause GYP to fail) if we don't have a recent enough
95                   # version of sqlite.
96                   '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)',
98                   '<!@(pkg-config --cflags sqlite3)',
99                 ],
100               },
101               'link_settings': {
102                 'ldflags': [
103                   '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)',
104                 ],
105                 'libraries': [
106                   '<!@(pkg-config --libs-only-l sqlite3)',
107                 ],
108               },
109             }],
110           ],
111         }, { # !use_system_sqlite
112           'product_name': 'sqlite3',
113           'type': 'static_library',
114           'sources': [
115             'amalgamation/sqlite3.h',
116             'amalgamation/sqlite3.c',
117           ],
118           'include_dirs': [
119             'amalgamation',
120           ],
121           'dependencies': [
122             '../icu/icu.gyp:icui18n',
123             '../icu/icu.gyp:icuuc',
124           ],
125           'direct_dependent_settings': {
126             'include_dirs': [
127               '.',
128               '../..',
129             ],
130           },
131           'msvs_disabled_warnings': [
132             4018, 4244, 4267,
133           ],
134           'conditions': [
135             ['OS=="linux"', {
136               'link_settings': {
137                 'libraries': [
138                   '-ldl',
139                 ],
140               },
141             }],
142             ['OS == "mac" or OS == "ios"', {
143               'link_settings': {
144                 'libraries': [
145                   '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
146                 ],
147               },
148             }],
149             ['OS == "android"', {
150               'defines': [
151                 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
152                 'SQLITE_DEFAULT_AUTOVACUUM=1',
153                 'SQLITE_TEMP_STORE=3',
154                 'SQLITE_ENABLE_FTS3_BACKWARDS',
155                 'SQLITE_DEFAULT_FILE_FORMAT=4',
156               ],
157             }],
158             ['os_posix == 1 and OS != "mac" and OS != "android"', {
159               'cflags': [
160                 # SQLite doesn't believe in compiler warnings,
161                 # preferring testing.
162                 #   http://www.sqlite.org/faq.html#q17
163                 '-Wno-int-to-pointer-cast',
164                 '-Wno-pointer-to-int-cast',
165               ],
166             }],
167           ],
168         }],
169       ],
170       'includes': [
171         # Disable LTO due to ELF section name out of range
172         # crbug.com/422251
173         '../../build/android/disable_lto.gypi',
174       ],
175     },
176   ],
177   'conditions': [
178     ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', {
179       'targets': [
180         {
181           'target_name': 'sqlite_shell',
182           'type': 'executable',
183           'dependencies': [
184             '../icu/icu.gyp:icuuc',
185             'sqlite',
186           ],
187           'sources': [
188             'src/src/shell.c',
189             'src/src/shell_icu_linux.c',
190             # Include a dummy c++ file to force linking of libstdc++.
191             'build_as_cpp.cc',
192           ],
193         },
194       ],
195     },],
196     ['OS == "ios"', {
197       'targets': [
198         {
199           'target_name': 'sqlite_regexp',
200           'type': 'static_library',
201           'dependencies': [
202             '../icu/icu.gyp:icui18n',
203             '../icu/icu.gyp:icuuc',
204           ],
205           'sources': [
206             'src/ext/icu/icu.c',
207           ],
208         },
209       ],
210     }],
211   ],