blob: 5876b644d324c2ce2ff5a1ce489505b2249704ce [file] [log] [blame]
# 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" ]
}
}