From 8f429e0dafc8bdb0a731497a5def1751c7bc7301 Mon Sep 17 00:00:00 2001 From: Thomas Groman Date: Mon, 15 Jun 2020 23:59:47 -0700 Subject: Revert "Issue #1342 - Remove support for system sqlite" This reverts commit d41ba28f5257f7c1425a0bde210e69fc5bb34a37. --- build/directive4.py | 1 + build/moz.configure/old.configure | 1 + config/external/nss/Makefile.in | 6 ++ config/external/sqlite/moz.build | 22 +++++ old-configure.in | 169 ++++++++++++++++++++++++++++++++++++++ storage/SQLiteMutex.h | 2 +- storage/moz.build | 4 + 7 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 config/external/sqlite/moz.build 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 @@ -3759,6 +3759,175 @@ else fi 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 ======================================================== 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', -- cgit v1.2.3