| # 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. |
| ] |
| |
| if (is_starboard) { |
| # Remove sources, defines, and include dirs related to full text search. |
| sources -= [ |
| "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", |
| ] |
| defines -= [ |
| "SQLITE_ENABLE_BROKEN_FTS2", |
| "SQLITE_ENABLE_FTS2", |
| "SQLITE_ENABLE_FTS3", |
| "SQLITE_ENABLE_ICU", |
| ] |
| include_dirs -= [ "src/src" ] |
| |
| # Additional defines for Starboard. |
| defines += [ |
| # "write-ahead log", requires shared memory primitives |
| # which we don't have on every platform. |
| "SQLITE_OMIT_WAL=1", |
| # Disable journaling, since we only use on-disk dbs as |
| # an intermediate stage to the savegame manager. |
| "SQLITE_NO_SYNC", |
| # Disable sqlite plugins |
| "SQLITE_OMIT_LOAD_EXTENSION", |
| # Localtime functions are not accurate on all platforms. |
| "SQLITE_OMIT_LOCALTIME", |
| "HAVE_USLEEP=1", |
| ] |
| |
| configs -= [ "//starboard/build/config:size" ] |
| } else { |
| 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", |
| ] |
| if (is_starboard) { |
| cflags += [ |
| "-Wno-pointer-bool-conversion" |
| ] |
| } |
| } |
| |
| public_configs = [ ":sqlite_config" ] |
| |
| deps = [ |
| "//third_party/icu", |
| ] |
| } |
| |
| if (is_linux && !is_starboard) { |
| 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 && !is_starboard) { |
| source_set("sqlite_regexp") { |
| sources = [ "src/ext/icu/icu.c" ] |
| deps = [ "//third_party/icu" ] |
| } |
| } |