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. 4 5 { 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_BROKEN_FTS2', 14 'SQLITE_ENABLE_FTS2', 15 'SQLITE_ENABLE_FTS3', 16 'SQLITE_ENABLE_ICU', 17 'SQLITE_ENABLE_MEMORY_MANAGEMENT', 18 'SQLITE_SECURE_DELETE', 19 'SQLITE_SEPERATE_CACHE_POOLS', 20 'THREADSAFE', 21 '_HAS_EXCEPTIONS=0', 22 ], 23 }, 24 'targets': [ 25 { 26 'target_name': 'sqlite', 27 'conditions': [ 28 [ 'chromeos==1' , { 29 'defines': [ 30 # Despite obvious warnings about not using this flag 31 # in deployment, we are turning off sync in ChromeOS 32 # and relying on the underlying journaling filesystem 33 # to do error recovery properly. It's much faster. 34 'SQLITE_NO_SYNC', 35 ], 36 }, 37 ], 38 ['use_system_sqlite', { 39 'type': 'none', 40 'direct_dependent_settings': { 41 'defines': [ 42 'USE_SYSTEM_SQLITE', 43 ], 44 }, 45 46 'conditions': [ 47 ['OS == "ios"', { 48 'dependencies': [ 49 'sqlite_regexp', 50 ], 51 'link_settings': { 52 'libraries': [ 53 '$(SDKROOT)/usr/lib/libsqlite3.dylib', 54 ], 55 }, 56 }], 57 ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android"', { 58 'direct_dependent_settings': { 59 'cflags': [ 60 # This next command produces no output but it it will fail 61 # (and cause GYP to fail) if we don't have a recent enough 62 # version of sqlite. 63 '<!@(pkg-config --atleast-version=<(required_sqlite_version) sqlite3)', 64 65 '<!@(pkg-config --cflags sqlite3)', 66 ], 67 }, 68 'link_settings': { 69 'ldflags': [ 70 '<!@(pkg-config --libs-only-L --libs-only-other sqlite3)', 71 ], 72 'libraries': [ 73 '<!@(pkg-config --libs-only-l sqlite3)', 74 ], 75 }, 76 }], 77 ], 78 }, { # !use_system_sqlite 79 'product_name': 'sqlite3', 80 'type': 'static_library', 81 'sources': [ 82 'amalgamation/sqlite3.h', 83 'amalgamation/sqlite3.c', 84 # fts2.c currently has a lot of conflicts when added to 85 # the amalgamation. It is probably not worth fixing that. 86 'src/ext/fts2/fts2.c', 87 'src/ext/fts2/fts2.h', 88 'src/ext/fts2/fts2_hash.c', 89 'src/ext/fts2/fts2_hash.h', 90 'src/ext/fts2/fts2_icu.c', 91 'src/ext/fts2/fts2_porter.c', 92 'src/ext/fts2/fts2_tokenizer.c', 93 'src/ext/fts2/fts2_tokenizer.h', 94 'src/ext/fts2/fts2_tokenizer1.c', 95 ], 96 97 # TODO(shess): Previously fts1 and rtree files were 98 # explicitly excluded from the build. Make sure they are 99 # logically still excluded. 100 101 # TODO(shess): Should all of the sources be listed and then 102 # excluded? For editing purposes? 103 104 'include_dirs': [ 105 'amalgamation', 106 # Needed for fts2 to build. 107 'src/src', 108 ], 109 'dependencies': [ 110 '../icu/icu.gyp:icui18n', 111 '../icu/icu.gyp:icuuc', 112 ], 113 'direct_dependent_settings': { 114 'include_dirs': [ 115 '.', 116 '../..', 117 ], 118 }, 119 'msvs_disabled_warnings': [ 120 4018, 4244, 4267, 121 ], 122 'conditions': [ 123 ['OS=="linux"', { 124 'link_settings': { 125 'libraries': [ 126 '-ldl', 127 ], 128 }, 129 }], 130 ['OS == "android"', { 131 'defines': [ 132 'HAVE_USLEEP=1', 133 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576', 134 'SQLITE_DEFAULT_AUTOVACUUM=1', 135 'SQLITE_TEMP_STORE=3', 136 'SQLITE_ENABLE_FTS3_BACKWARDS', 137 'DSQLITE_DEFAULT_FILE_FORMAT=4', 138 ], 139 }], 140 ['os_posix == 1 and OS != "mac" and OS != "android"', { 141 'cflags': [ 142 # SQLite doesn't believe in compiler warnings, 143 # preferring testing. 144 # http://www.sqlite.org/faq.html#q17 145 '-Wno-int-to-pointer-cast', 146 '-Wno-pointer-to-int-cast', 147 ], 148 }], 149 ['clang==1', { 150 'xcode_settings': { 151 'WARNING_CFLAGS': [ 152 # sqlite does `if (*a++ && *b++);` in a non-buggy way. 153 '-Wno-empty-body', 154 # sqlite has some `unsigned < 0` checks. 155 '-Wno-tautological-compare', 156 ], 157 }, 158 'cflags': [ 159 '-Wno-empty-body', 160 '-Wno-tautological-compare', 161 ], 162 }], 163 ], 164 }], 165 ], 166 }, 167 ], 168 'conditions': [ 169 ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', { 170 'targets': [ 171 { 172 'target_name': 'sqlite_shell', 173 'type': 'executable', 174 'dependencies': [ 175 '../icu/icu.gyp:icuuc', 176 'sqlite', 177 ], 178 'sources': [ 179 'src/src/shell.c', 180 'src/src/shell_icu_linux.c', 181 ], 182 'link_settings': { 183 'link_languages': ['c++'], 184 }, 185 }, 186 ], 187 },], 188 ['OS == "ios"', { 189 'targets': [ 190 { 191 'target_name': 'sqlite_regexp', 192 'type': 'static_library', 193 'dependencies': [ 194 '../icu/icu.gyp:icui18n', 195 '../icu/icu.gyp:icuuc', 196 ], 197 'sources': [ 198 'src/ext/icu/icu.c', 199 ], 200 }, 201 ], 202 }], 203 ], 204 } 205