# Copyright (c) 2012 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. { 'variables': { 'use_system_sqlite%': 0, 'required_sqlite_version': '3.6.1', }, 'target_defaults': { 'defines': [ 'SQLITE_ENABLE_FTS3', # New unicode61 tokenizer with built-in tables. 'SQLITE_DISABLE_FTS3_UNICODE', # Chromium currently does not enable fts4, disable extra code. 'SQLITE_DISABLE_FTS4_DEFERRED', 'SQLITE_ENABLE_ICU', 'SQLITE_ENABLE_MEMORY_MANAGEMENT', 'SQLITE_SECURE_DELETE', # Custom flag to tweak pcache pools. # TODO(shess): This shouldn't use faux-SQLite naming. 'SQLITE_SEPARATE_CACHE_POOLS', # TODO(shess): SQLite adds mutexes to protect structures which cross # threads. In theory Chromium should be able to turn this off for a # slight speed boost. 'THREADSAFE', # TODO(shess): Figure out why this is here. Nobody references it # directly. '_HAS_EXCEPTIONS=0', # NOTE(shess): Some defines can affect the amalgamation. Those should be # added to google_generate_amalgamation.sh, and the amalgamation # re-generated. Usually this involves disabling features which include # keywords or syntax, for instance SQLITE_OMIT_VIRTUALTABLE omits the # virtual table syntax entirely. Missing an item usually results in # syntax working but execution failing. Review: # src/src/parse.py # src/tool/mkkeywordhash.c ], }, 'targets': [ { 'target_name': 'sqlite', 'conditions': [ [ 'chromeos==1' , { 'defines': [ # Despite obvious warnings about not using this flag # in deployment, we are turning off sync in ChromeOS # and relying on the underlying journaling filesystem # to do error recovery properly. It's much faster. 'SQLITE_NO_SYNC', ], }, ], ['os_posix == 1', { 'defines': [ # Allow xSleep() call on Unix to use usleep() rather than sleep(). # Microsecond precision is better than second precision. Should # only affect contended databases via the busy callback. Browser # profile databases are mostly exclusive, but renderer databases may # allow for contention. 'HAVE_USLEEP=1', ], }], ['OS == "linux" or OS == "android"', { 'defines': [ # Linux provides fdatasync(), a faster equivalent of fsync(). 'fdatasync=fdatasync', ], }], ['use_system_sqlite', { 'type': 'none', 'direct_dependent_settings': { 'defines': [ 'USE_SYSTEM_SQLITE', ], }, 'conditions': [ ['OS == "ios"', { 'dependencies': [ 'sqlite_regexp', ], 'link_settings': { 'libraries': [ '$(SDKROOT)/usr/lib/libsqlite3.dylib', ], }, }], ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', { 'direct_dependent_settings': { 'cflags': [ # This next command produces no output but it it will fail # (and cause GYP to fail) if we don't have a recent enough # version of sqlite. '