diff options
author | stuartmorgan@chromium.org <stuartmorgan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-09 14:40:00 +0000 |
---|---|---|
committer | stuartmorgan@chromium.org <stuartmorgan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-09 14:40:00 +0000 |
commit | 2e1cee7610b03276ef8682e2f9ad0a6d73b399fd (patch) | |
tree | 0429bf6713e6eaff83e468ebb92802b410245f6a | |
parent | b0e08fa9f8dc80829050dd6cdfb59acd0f560958 (diff) | |
download | chromium_src-2e1cee7610b03276ef8682e2f9ad0a6d73b399fd.zip chromium_src-2e1cee7610b03276ef8682e2f9ad0a6d73b399fd.tar.gz chromium_src-2e1cee7610b03276ef8682e2f9ad0a6d73b399fd.tar.bz2 |
Add REGEXP support to SQLite on iOS
Chrome for iOS uses system SQLite, which on iOS doesn't include the ICU
extensions, which includes the now-required-by-Chrome REGEXP support.
This compiles that extension as a static library, and dynamically
registers it on each database opened.
BUG=254636
Review URL: https://chromiumcodereview.appspot.com/18312005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@210572 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | sql/connection.cc | 11 | ||||
-rw-r--r-- | third_party/sqlite/sqlite.gyp | 20 |
2 files changed, 30 insertions, 1 deletions
diff --git a/sql/connection.cc b/sql/connection.cc index a11bc72..2a971e5 100644 --- a/sql/connection.cc +++ b/sql/connection.cc @@ -18,6 +18,10 @@ #include "sql/statement.h" #include "third_party/sqlite/sqlite3.h" +#if defined(OS_IOS) && defined(USE_SYSTEM_SQLITE) +#include "third_party/sqlite/src/ext/icu/sqliteicu.h" +#endif + namespace { // Spin for up to a second waiting for the lock to clear when setting @@ -701,6 +705,13 @@ bool Connection::OpenInternal(const std::string& file_name) { err = sqlite3_extended_result_codes(db_, 1); DCHECK_EQ(err, SQLITE_OK) << "Could not enable extended result codes"; +#if defined(OS_IOS) && defined(USE_SYSTEM_SQLITE) + // The version of SQLite shipped with iOS doesn't enable ICU, which includes + // REGEXP support. Add it in dynamically. + err = sqlite3IcuInit(db_); + DCHECK_EQ(err, SQLITE_OK) << "Could not enable ICU support"; +#endif // OS_IOS && USE_SYSTEM_SQLITE + // If indicated, lock up the database before doing anything else, so // that the following code doesn't have to deal with locking. // TODO(shess): This code is brittle. Find the cases where code diff --git a/third_party/sqlite/sqlite.gyp b/third_party/sqlite/sqlite.gyp index cb1fe6b..9843653 100644 --- a/third_party/sqlite/sqlite.gyp +++ b/third_party/sqlite/sqlite.gyp @@ -45,6 +45,9 @@ 'conditions': [ ['OS == "ios"', { + 'dependencies': [ + 'sqlite_regexp', + ], 'link_settings': { 'libraries': [ '$(SDKROOT)/usr/lib/libsqlite3.dylib', @@ -181,6 +184,21 @@ }, }, ], - },] + },], + ['OS == "ios"', { + 'targets': [ + { + 'target_name': 'sqlite_regexp', + 'type': 'static_library', + 'dependencies': [ + '../icu/icu.gyp:icui18n', + '../icu/icu.gyp:icuuc', + ], + 'sources': [ + 'src/ext/icu/icu.c', + ], + }, + ], + }], ], } |