summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/directive4.py1
-rw-r--r--build/moz.configure/old.configure1
-rw-r--r--config/external/nss/Makefile.in6
-rw-r--r--config/external/sqlite/moz.build22
-rw-r--r--old-configure.in169
-rw-r--r--storage/SQLiteMutex.h2
-rw-r--r--storage/moz.build4
7 files changed, 204 insertions, 1 deletions
diff --git a/build/directive4.py b/build/directive4.py
index 9150a2543..009009bf0 100644
--- a/build/directive4.py
+++ b/build/directive4.py
@@ -37,6 +37,7 @@ if ('MOZ_OFFICIAL_BRANDING' in listConfig) or (strBrandingDirectory.endswith("br
'MOZ_SYSTEM_ZLIB',
'MOZ_SYSTEM_BZ2',
'MOZ_SYSTEM_LIBVPX',
+ 'MOZ_SYSTEM_SQLITE',
'MOZ_SYSTEM_JEMALLOC'
]
diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
index ab19f16ac..c416c18d2 100644
--- a/build/moz.configure/old.configure
+++ b/build/moz.configure/old.configure
@@ -236,6 +236,7 @@ def old_configure_options(*options):
'--enable-system-cairo',
'--enable-system-extension-dirs',
'--enable-system-pixman',
+ '--enable-system-sqlite',
'--enable-tasktracer',
'--enable-tests',
'--enable-thread-sanitizer',
diff --git a/config/external/nss/Makefile.in b/config/external/nss/Makefile.in
index 7289e57f4..2a8c9ec82 100644
--- a/config/external/nss/Makefile.in
+++ b/config/external/nss/Makefile.in
@@ -119,9 +119,15 @@ DEFAULT_GMAKE_FLAGS += NSS_ENABLE_TLS_1_3=1
ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_1)
DEFAULT_GMAKE_FLAGS += OS_DLLFLAGS='-static-libgcc' NSPR31_LIB_PREFIX=lib
endif
+ifndef MOZ_SYSTEM_SQLITE
+ifdef MOZ_FOLD_LIBS
+DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=nss3
+else
DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=mozsqlite3
DEFAULT_GMAKE_FLAGS += SQLITE_LIB_DIR=$(ABS_DIST)/../db/sqlite3/src
+endif # MOZ_FOLD_LIBS
DEFAULT_GMAKE_FLAGS += SQLITE_INCLUDE_DIR=$(ABS_DIST)/include
+endif
ifdef NSS_DISABLE_DBM
DEFAULT_GMAKE_FLAGS += NSS_DISABLE_DBM=1
endif
diff --git a/config/external/sqlite/moz.build b/config/external/sqlite/moz.build
new file mode 100644
index 000000000..76908d902
--- /dev/null
+++ b/config/external/sqlite/moz.build
@@ -0,0 +1,22 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_SYSTEM_SQLITE']:
+ Library('sqlite')
+ OS_LIBS += CONFIG['SQLITE_LIBS']
+else:
+ DIRS += ['../../../db/sqlite3/src']
+ if CONFIG['MOZ_FOLD_LIBS']:
+ Library('sqlite')
+ # When folding libraries, sqlite is actually in the nss library.
+ USE_LIBS += [
+ 'nss',
+ ]
+ else:
+ SharedLibrary('sqlite')
+ SHARED_LIBRARY_NAME = 'mozsqlite3'
+
+ SYMBOLS_FILE = '/db/sqlite3/src/sqlite.symbols'
diff --git a/old-configure.in b/old-configure.in
index 2748bbe82..68fc4c7f3 100644
--- a/old-configure.in
+++ b/old-configure.in
@@ -3760,6 +3760,175 @@ else
fi
dnl ========================================================
+dnl Check for sqlite
+dnl ========================================================
+
+MOZ_SYSTEM_SQLITE=
+MOZ_ARG_ENABLE_BOOL(system-sqlite,
+[ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
+MOZ_SYSTEM_SQLITE=1,
+MOZ_SYSTEM_SQLITE= )
+
+if test -n "$MOZ_SYSTEM_SQLITE"
+then
+ dnl ============================
+ dnl === SQLite Version check ===
+ dnl ============================
+ dnl Check to see if the system SQLite package is new enough.
+ PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
+
+ dnl ==================================
+ dnl === SQLITE_SECURE_DELETE check ===
+ dnl ==================================
+ dnl Check to see if the system SQLite package is compiled with
+ dnl SQLITE_SECURE_DELETE enabled.
+ AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
+ _SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $SQLITE_CFLAGS"
+ _SAVE_LIBS="$LIBS"
+ LIBS="$LIBS $SQLITE_LIBS"
+ AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
+ AC_TRY_RUN([
+ #include "sqlite3.h"
+
+ int main(int argc, char **argv){
+ return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
+ }],
+ ac_cv_sqlite_secure_delete=yes,
+ ac_cv_sqlite_secure_delete=no,
+ ac_cv_sqlite_secure_delete=no
+ )
+ ])
+ AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
+ CFLAGS="$_SAVE_CFLAGS"
+ LIBS="$_SAVE_LIBS"
+ if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
+ AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
+ fi
+
+ dnl ===============================
+ dnl === SQLITE_THREADSAFE check ===
+ dnl ===============================
+ dnl Check to see if the system SQLite package is compiled with
+ dnl SQLITE_THREADSAFE enabled.
+ AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
+ _SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $SQLITE_CFLAGS"
+ _SAVE_LIBS="$LIBS"
+ LIBS="$LIBS $SQLITE_LIBS"
+ AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
+ AC_TRY_RUN([
+ #include "sqlite3.h"
+
+ int main(int argc, char **argv){
+ return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
+ }],
+ ac_cv_sqlite_threadsafe=yes,
+ ac_cv_sqlite_threadsafe=no,
+ ac_cv_sqlite_threadsafe=no
+ )
+ ])
+ AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
+ CFLAGS="$_SAVE_CFLAGS"
+ LIBS="$_SAVE_LIBS"
+ if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
+ AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
+ fi
+
+ dnl ================================
+ dnl === SQLITE_ENABLE_FTS3 check ===
+ dnl ================================
+ dnl check to see if the system SQLite package is compiled with
+ dnl SQLITE_ENABLE_FTS3 enabled.
+ AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
+ _SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $SQLITE_CFLAGS"
+ _SAVE_LIBS="$LIBS"
+ LIBS="$LIBS $SQLITE_LIBS"
+ AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
+ AC_TRY_RUN([
+ #include "sqlite3.h"
+
+ int main(int argc, char **argv){
+ return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
+ }],
+ ac_cv_sqlite_enable_fts3=yes,
+ ac_cv_sqlite_enable_fts3=no,
+ ac_cv_sqlite_enable_fts3=no
+ )
+ ])
+ AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
+ CFLAGS="$_SAVE_CFLAGS"
+ LIBS="$_SAVE_LIBS"
+ if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
+ AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
+ fi
+
+ dnl =========================================
+ dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
+ dnl =========================================
+ dnl check to see if the system SQLite package is compiled with
+ dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
+ AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
+ _SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $SQLITE_CFLAGS"
+ _SAVE_LIBS="$LIBS"
+ LIBS="$LIBS $SQLITE_LIBS"
+ AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
+ AC_TRY_RUN([
+ #include "sqlite3.h"
+
+ int main(int argc, char **argv){
+ return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
+ }],
+ ac_cv_sqlite_enable_unlock_notify=yes,
+ ac_cv_sqlite_enable_unlock_notify=no,
+ ac_cv_sqlite_enable_unlock_notify=no
+ )
+ ])
+ AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
+ CFLAGS="$_SAVE_CFLAGS"
+ LIBS="$_SAVE_LIBS"
+ if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
+ AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
+ fi
+
+ dnl =========================================
+ dnl === SQLITE_ENABLE_DBSTAT_VTAB check ===
+ dnl =========================================
+ dnl check to see if the system SQLite package is compiled with
+ dnl SQLITE_ENABLE_DBSTAT_VTAB.
+ AC_MSG_CHECKING(for SQLITE_ENABLE_DBSTAT_VTAB support in system SQLite)
+ _SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $SQLITE_CFLAGS"
+ _SAVE_LIBS="$LIBS"
+ LIBS="$LIBS $SQLITE_LIBS"
+ AC_CACHE_VAL(ac_cv_sqlite_dbstat_vtab,[
+ AC_TRY_RUN([
+ #include "sqlite3.h"
+
+ int main(int argc, char **argv){
+ return !sqlite3_compileoption_used("SQLITE_ENABLE_DBSTAT_VTAB");
+ }],
+ ac_cv_sqlite_dbstat_vtab=yes,
+ ac_cv_sqlite_dbstat_vtab=no,
+ ac_cv_sqlite_dbstat_vtab=no
+ )
+ ])
+ AC_MSG_RESULT($ac_cv_sqlite_dbstat_vtab)
+ CFLAGS="$_SAVE_CFLAGS"
+ LIBS="$_SAVE_LIBS"
+ if test "x$ac_cv_sqlite_dbstat_vtab" = "xno"; then
+ AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_DBSTAT_VTAB.])
+ fi
+fi
+
+if test -n "$MOZ_SYSTEM_SQLITE"; then
+ AC_DEFINE(MOZ_SYSTEM_SQLITE)
+fi
+AC_SUBST(MOZ_SYSTEM_SQLITE)
+
+dnl ========================================================
dnl = Enable Google safe browsing (anti-phishing)
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(safe-browsing,
diff --git a/storage/SQLiteMutex.h b/storage/SQLiteMutex.h
index eaa69eab1..a38525fd6 100644
--- a/storage/SQLiteMutex.h
+++ b/storage/SQLiteMutex.h
@@ -50,7 +50,7 @@ public:
mMutex = aMutex;
}
-#if !defined(DEBUG)
+#if !defined(DEBUG) || defined(MOZ_SYSTEM_SQLITE)
/**
* Acquires the mutex.
*/
diff --git a/storage/moz.build b/storage/moz.build
index 2d30a85ec..5ccfabd71 100644
--- a/storage/moz.build
+++ b/storage/moz.build
@@ -100,6 +100,10 @@ if CONFIG['MOZ_MEMORY']:
DEFINES['SQLITE_MAX_LIKE_PATTERN_LENGTH'] = 50000
# See Sqlite moz.build for reasoning about TEMP_STORE.
+# For system sqlite we cannot use the compile time option, so we use a pragma.
+if CONFIG['MOZ_SYSTEM_SQLITE'] and (CONFIG['OS_TARGET'] == 'Android'
+ or CONFIG['HAVE_64BIT_BUILD']):
+ DEFINES['MOZ_MEMORY_TEMP_STORE_PRAGMA'] = True
LOCAL_INCLUDES += [
'/db/sqlite3/src',