# Copyright (c) 2013 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. config("sqlite_config") { include_dirs = [ "." ] } source_set("sqlite") { sources = [ "amalgamation/sqlite3.h", "amalgamation/sqlite3.c", # fts2.c currently has a lot of conflicts when added to # the amalgamation. It is probably not worth fixing that. "src/ext/fts2/fts2.c", "src/ext/fts2/fts2.h", "src/ext/fts2/fts2_hash.c", "src/ext/fts2/fts2_hash.h", "src/ext/fts2/fts2_icu.c", "src/ext/fts2/fts2_porter.c", "src/ext/fts2/fts2_tokenizer.c", "src/ext/fts2/fts2_tokenizer.h", "src/ext/fts2/fts2_tokenizer1.c", ] cflags = [] defines = [ "SQLITE_CORE", "SQLITE_ENABLE_BROKEN_FTS2", "SQLITE_ENABLE_FTS2", "SQLITE_ENABLE_FTS3", "SQLITE_ENABLE_ICU", "SQLITE_ENABLE_MEMORY_MANAGEMENT", "SQLITE_SECURE_DELETE", "SQLITE_SEPARATE_CACHE_POOLS", "THREADSAFE", "_HAS_EXCEPTIONS=0", ] if (is_chromeos) { 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", ] } include_dirs = [ "amalgamation", "src/src", # Needed for fts2 to build. ] configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] if (is_win) { cflags += [ "/wd4267" ] # Conversion from size_t to "type". } else if (is_linux) { cflags += [ # SQLite doesn"t believe in compiler warnings, # preferring testing. # http://www.sqlite.org/faq.html#q17 "-Wno-int-to-pointer-cast", "-Wno-pointer-to-int-cast", ] libs = [ "dl" ] } else if (is_mac || is_ios) { libs = [ "CoreFoundation.framework" ] } else if (is_android) { defines += [ "HAVE_USLEEP=1", "SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576", "SQLITE_DEFAULT_AUTOVACUUM=1", "SQLITE_TEMP_STORE=3", "SQLITE_ENABLE_FTS3_BACKWARDS", "DSQLITE_DEFAULT_FILE_FORMAT=4", ] } if (is_clang) { cflags += [ # sqlite does `if (*a++ && *b++);` in a non-buggy way. "-Wno-empty-body", # sqlite has some `unsigned < 0` checks. "-Wno-tautological-compare", ] } public_configs = [ ":sqlite_config" ] deps = [ "//third_party/icu", ] } if (is_linux) { executable("sqlite_shell") { sources = [ "src/src/shell.c", "src/src/shell_icu_linux.c", # Include a dummy c++ file to force linking of libstdc++. "build_as_cpp.cc", ] deps = [ ":sqlite", "//third_party/icu", ] } } if (is_ios) { source_set("sqlite_regexp") { sources = [ "src/ext/icu/icu.c" ] deps = [ "//third_party/icu" ] } }