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_SEPARATE_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 'variables': { 123 'clang_warning_flags': [ 124 # sqlite does `if (*a++ && *b++);` in a non-buggy way. 125 '-Wno-empty-body', 126 # sqlite has some `unsigned < 0` checks. 127 '-Wno-tautological-compare', 128 ], 129 }, 130 'conditions': [ 131 ['OS=="linux"', { 132 'link_settings': { 133 'libraries': [ 134 '-ldl', 135 ], 136 }, 137 }], 138 ['OS == "mac" or OS == "ios"', { 139 'link_settings': { 140 'libraries': [ 141 '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework', 142 ], 143 }, 144 }], 145 ['OS == "android"', { 146 'defines': [ 147 'HAVE_USLEEP=1', 148 'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576', 149 'SQLITE_DEFAULT_AUTOVACUUM=1', 150 'SQLITE_TEMP_STORE=3', 151 'SQLITE_ENABLE_FTS3_BACKWARDS', 152 'DSQLITE_DEFAULT_FILE_FORMAT=4', 153 ], 154 }], 155 ['os_posix == 1 and OS != "mac" and OS != "android"', { 156 'cflags': [ 157 # SQLite doesn't believe in compiler warnings, 158 # preferring testing. 159 # http://www.sqlite.org/faq.html#q17 160 '-Wno-int-to-pointer-cast', 161 '-Wno-pointer-to-int-cast', 162 ], 163 }], 164 # Enable feedback-directed optimisation for sqlite when building in android. 165 ['android_webview_build == 1', { 166 'aosp_build_settings': { 167 'LOCAL_FDO_SUPPORT': 'true', 168 }, 169 }], 170 ], 171 }], 172 ], 173 }, 174 ], 175 'conditions': [ 176 ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "android" and not use_system_sqlite', { 177 'targets': [ 178 { 179 'target_name': 'sqlite_shell', 180 'type': 'executable', 181 'dependencies': [ 182 '../icu/icu.gyp:icuuc', 183 'sqlite', 184 ], 185 'sources': [ 186 'src/src/shell.c', 187 'src/src/shell_icu_linux.c', 188 # Include a dummy c++ file to force linking of libstdc++. 189 'build_as_cpp.cc', 190 ], 191 }, 192 ], 193 },], 194 ['OS == "ios"', { 195 'targets': [ 196 { 197 'target_name': 'sqlite_regexp', 198 'type': 'static_library', 199 'dependencies': [ 200 '../icu/icu.gyp:icui18n', 201 '../icu/icu.gyp:icuuc', 202 ], 203 'sources': [ 204 'src/ext/icu/icu.c', 205 ], 206 }, 207 ], 208 }], 209 ], 210 } 211