From 4a192ea19e118a6b8c982b4a8a14fd4523c287b8 Mon Sep 17 00:00:00 2001 From: Gaming4JC Date: Sun, 24 May 2020 00:07:41 -0400 Subject: [PATCH 01/12] Restore risky system libraries WARNING: Not recommended and entirely unsupported upstream. libevent - known incompatibilities causing crashes with certain version/application combinations. ICU - system ICU will break JS Intl. sqlite - at the core of our profile manipulation, places, and many functions. If the lib API ever deviates in the slightest it will kill us. libpng for APNG and misc fixes libvpx for strict compat --- build/autoconf/icu.m4 | 16 +- build/directive4.py | 3 + build/moz.configure/old.configure | 5 + config/Makefile.in | 4 + config/external/icu/moz.build | 22 +- config/external/moz.build | 6 +- config/external/nss/Makefile.in | 2 + config/moz.build | 3 + config/system-headers | 32 ++ db/sqlite3/src/moz.build | 10 +- ipc/chromium/moz.build | 4 +- .../src/third_party/libeventcommon.mozbuild | 2 +- ipc/chromium/src/third_party/moz.build | 3 + media/webrtc/signaling/test/common.build | 3 + old-configure.in | 284 ++++++++++++++++++ storage/SQLiteMutex.h | 2 +- storage/moz.build | 4 + toolkit/library/moz.build | 9 + 18 files changed, 393 insertions(+), 21 deletions(-) diff --git a/build/autoconf/icu.m4 b/build/autoconf/icu.m4 index 090d6c0a2..d76c98c29 100644 --- a/build/autoconf/icu.m4 +++ b/build/autoconf/icu.m4 @@ -9,6 +9,18 @@ AC_DEFUN([MOZ_CONFIG_ICU], [ ICU_LIB_NAMES= +MOZ_SYSTEM_ICU= +MOZ_ARG_WITH_BOOL(system-icu, +[ --with-system-icu + Use system ICU (located with pkgconfig)], + MOZ_SYSTEM_ICU=1) +if test -n "$MOZ_SYSTEM_ICU"; then + PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 58.1) + CFLAGS="$CFLAGS $MOZ_ICU_CFLAGS" + CXXFLAGS="$CXXFLAGS $MOZ_ICU_CFLAGS" +fi +AC_SUBST(MOZ_SYSTEM_ICU) + dnl We always use ICU. USE_ICU=1 @@ -38,7 +50,7 @@ if test -n "$USE_ICU"; then dnl We also don't do it on Windows because sometimes the file goes dnl missing -- possibly due to overzealous antivirus software? -- dnl which prevents the browser from starting up :( - if test -z "$JS_STANDALONE"; then + if test -z "$JS_STANDALONE" -a -z "$MOZ_SYSTEM_ICU"; then MOZ_ICU_DATA_ARCHIVE=1 else MOZ_ICU_DATA_ARCHIVE= @@ -51,7 +63,7 @@ AC_SUBST(USE_ICU) AC_SUBST(ICU_DATA_FILE) AC_SUBST(MOZ_ICU_DATA_ARCHIVE) -if test -n "$USE_ICU"; then +if test -n "$USE_ICU" -a -z "$MOZ_SYSTEM_ICU"; then if test -z "$YASM" -a -z "$GNU_AS" -a "$COMPILE_ENVIRONMENT"; then AC_MSG_ERROR([Building ICU requires either yasm or a GNU assembler. If you do not have either of those available for this platform you must use --without-intl-api]) fi diff --git a/build/directive4.py b/build/directive4.py index 650349d68..38465628b 100644 --- a/build/directive4.py +++ b/build/directive4.py @@ -36,6 +36,9 @@ if ('MOZ_OFFICIAL_BRANDING' in listConfig) or (strBrandingDirectory.endswith("br 'MOZ_SYSTEM_JPEG', 'MOZ_SYSTEM_ZLIB', 'MOZ_SYSTEM_BZ2', + 'MOZ_SYSTEM_PNG', + 'MOZ_SYSTEM_LIBVPX', + 'MOZ_SYSTEM_SQLITE', 'MOZ_SYSTEM_JEMALLOC' ] diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure index aba1edf85..9568b4c88 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', @@ -289,7 +290,11 @@ def old_configure_options(*options): '--with-sixgill', '--with-soft-float', '--with-system-bz2', + '--with-system-icu', '--with-system-jpeg', + '--with-system-libevent', + '--with-system-libvpx', + '--with-system-png', '--with-system-zlib', '--with-thumb', '--with-thumb-interwork', diff --git a/config/Makefile.in b/config/Makefile.in index c9cc3592c..10807cfb9 100644 --- a/config/Makefile.in +++ b/config/Makefile.in @@ -44,7 +44,11 @@ export:: $(export-preqs) -DMOZ_SYSTEM_HUNSPELL=$(MOZ_SYSTEM_HUNSPELL) \ -DMOZ_SYSTEM_BZ2=$(MOZ_SYSTEM_BZ2) \ -DMOZ_SYSTEM_ZLIB=$(MOZ_SYSTEM_ZLIB) \ + -DMOZ_SYSTEM_PNG=$(MOZ_SYSTEM_PNG) \ -DMOZ_SYSTEM_JPEG=$(MOZ_SYSTEM_JPEG) \ + -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \ + -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \ + -DMOZ_SYSTEM_ICU=$(MOZ_SYSTEM_ICU) \ $(srcdir)/system-headers $(srcdir)/stl-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers $(INSTALL) system_wrappers $(DIST) diff --git a/config/external/icu/moz.build b/config/external/icu/moz.build index 488a02159..248652a85 100644 --- a/config/external/icu/moz.build +++ b/config/external/icu/moz.build @@ -6,14 +6,16 @@ Library('icu') -DIRS += [ - 'common', - 'data', - 'i18n', -] - -if CONFIG['MOZ_ICU_DATA_ARCHIVE']: - DIRS += ['stubdata'] - USE_LIBS += ['icustubdata'] +if CONFIG['MOZ_SYSTEM_ICU']: + OS_LIBS += CONFIG['MOZ_ICU_LIBS'] else: - USE_LIBS += ['icudata'] + DIRS += [ + 'common', + 'data', + 'i18n', + ] + if CONFIG['MOZ_ICU_DATA_ARCHIVE']: + DIRS += ['stubdata'] + USE_LIBS += ['icustubdata'] + else: + USE_LIBS += ['icudata'] diff --git a/config/external/moz.build b/config/external/moz.build index 1234016fa..cedef8a31 100644 --- a/config/external/moz.build +++ b/config/external/moz.build @@ -28,12 +28,14 @@ if CONFIG['MOZ_TREMOR']: if CONFIG['MOZ_WEBM_ENCODER']: external_dirs += ['media/libmkv'] -external_dirs += ['media/libvpx'] +if not CONFIG['MOZ_SYSTEM_LIBVPX']: + external_dirs += ['media/libvpx'] if CONFIG['MOZ_AV1']: external_dirs += ['media/libaom'] -external_dirs += ['media/libpng'] +if not CONFIG['MOZ_SYSTEM_PNG']: + external_dirs += ['media/libpng'] external_dirs += ['media/libwebp'] diff --git a/config/external/nss/Makefile.in b/config/external/nss/Makefile.in index 7289e57f4..14eed9712 100644 --- a/config/external/nss/Makefile.in +++ b/config/external/nss/Makefile.in @@ -119,9 +119,11 @@ 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 DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=mozsqlite3 DEFAULT_GMAKE_FLAGS += SQLITE_LIB_DIR=$(ABS_DIST)/../db/sqlite3/src 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/moz.build b/config/moz.build index c512bd07d..7bcac7992 100644 --- a/config/moz.build +++ b/config/moz.build @@ -29,6 +29,9 @@ if CONFIG['HOST_OS_ARCH'] != 'WINNT': # while the program here is in C. HostProgram('nsinstall_real', c_only=True) +if CONFIG['MOZ_SYSTEM_ICU']: + DEFINES['MOZ_SYSTEM_ICU'] = True + PYTHON_UNIT_TESTS += [ 'tests/test_mozbuild_reading.py', 'tests/unit-expandlibs.py', diff --git a/config/system-headers b/config/system-headers index 3685d6d1c..b10324f0f 100644 --- a/config/system-headers +++ b/config/system-headers @@ -1253,6 +1253,9 @@ soundtouch/SoundTouchFactory.h #if MOZ_LIBAV_FFT==1 libavcodec/avfft.h #endif +#if MOZ_SYSTEM_PNG==1 +png.h +#endif #if MOZ_SYSTEM_ZLIB==1 zlib.h #endif @@ -1273,7 +1276,11 @@ bzlib.h #ifdef MOZ_ENABLE_GIO gio/gio.h #endif +#if MOZ_SYSTEM_LIBEVENT==1 +event.h +#else sys/event.h +#endif #ifdef MOZ_ENABLE_LIBPROXY proxy.h #endif @@ -1288,6 +1295,15 @@ QtSparql/qsparqlresult.h #if MOZ_TREE_PIXMAN!=1 pixman.h #endif +#if MOZ_SYSTEM_LIBVPX==1 +vpx/svc_context.h +vpx/vpx_codec.h +vpx/vpx_decoder.h +vpx/vpx_encoder.h +vpx/vp8cx.h +vpx/vp8dx.h +vpx_mem/vpx_mem.h +#endif gst/gst.h gst/app/gstappsink.h gst/app/gstappsrc.h @@ -1300,6 +1316,22 @@ kvm.h spawn.h err.h xlocale.h +#ifdef MOZ_SYSTEM_ICU +unicode/locid.h +unicode/numsys.h +unicode/timezone.h +unicode/ucal.h +unicode/uchar.h +unicode/uclean.h +unicode/ucol.h +unicode/udat.h +unicode/udatpg.h +unicode/uenum.h +unicode/unorm.h +unicode/unum.h +unicode/ustring.h +unicode/utypes.h +#endif libutil.h unwind.h fenv.h diff --git a/db/sqlite3/src/moz.build b/db/sqlite3/src/moz.build index eba8633b5..d8cec85ff 100644 --- a/db/sqlite3/src/moz.build +++ b/db/sqlite3/src/moz.build @@ -9,9 +9,13 @@ NO_VISIBILITY_FLAGS = True # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True -GeckoSharedLibrary('sqlite', linkage=None, mozglue='library') -SHARED_LIBRARY_NAME = 'mozsqlite3' -SYMBOLS_FILE = 'sqlite.symbols' +if CONFIG['MOZ_SYSTEM_SQLITE']: + Library('sqlite') + OS_LIBS += CONFIG['SQLITE_LIBS'] +else: + GeckoSharedLibrary('sqlite', linkage=None, mozglue='library') + SHARED_LIBRARY_NAME = 'mozsqlite3' + SYMBOLS_FILE = 'sqlite.symbols' EXPORTS += ['sqlite3.h'] SOURCES += ['sqlite3.c'] diff --git a/ipc/chromium/moz.build b/ipc/chromium/moz.build index b386134f9..085e65c96 100644 --- a/ipc/chromium/moz.build +++ b/ipc/chromium/moz.build @@ -58,7 +58,7 @@ if os_win: 'src/chrome/common/process_watcher_win.cc', 'src/chrome/common/transport_dib_win.cc', ] -else: +elif not CONFIG['MOZ_SYSTEM_LIBEVENT']: DIRS += ['src/third_party'] if os_posix: @@ -145,7 +145,7 @@ if os_solaris: 'src/base/time_posix.cc', ] -else: +elif not CONFIG['MOZ_SYSTEM_LIBEVENT']: LOCAL_INCLUDES += ['src/third_party/libevent/linux'] ost = CONFIG['OS_TEST'] diff --git a/ipc/chromium/src/third_party/libeventcommon.mozbuild b/ipc/chromium/src/third_party/libeventcommon.mozbuild index 33482c661..2b45ecb19 100644 --- a/ipc/chromium/src/third_party/libeventcommon.mozbuild +++ b/ipc/chromium/src/third_party/libeventcommon.mozbuild @@ -32,7 +32,7 @@ else: else: libevent_include_suffix = 'linux' -if os_posix: +if os_posix and not CONFIG['MOZ_SYSTEM_LIBEVENT']: DEFINES['HAVE_CONFIG_H'] = True LOCAL_INCLUDES += sorted([ 'libevent', diff --git a/ipc/chromium/src/third_party/moz.build b/ipc/chromium/src/third_party/moz.build index 20a5043fb..2b99e53b3 100644 --- a/ipc/chromium/src/third_party/moz.build +++ b/ipc/chromium/src/third_party/moz.build @@ -10,6 +10,9 @@ include(libevent_path_prefix + '/libeventcommon.mozbuild') if os_win: error('should not reach here on Windows') +if CONFIG['MOZ_SYSTEM_LIBEVENT']: + error('should not reach here if we are using a native libevent') + UNIFIED_SOURCES += [ 'libevent/buffer.c', 'libevent/bufferevent.c', diff --git a/media/webrtc/signaling/test/common.build b/media/webrtc/signaling/test/common.build index 2d9a57139..3e5450f5d 100644 --- a/media/webrtc/signaling/test/common.build +++ b/media/webrtc/signaling/test/common.build @@ -105,6 +105,9 @@ if CONFIG['MOZ_ALSA']: if CONFIG['MOZ_SYSTEM_JPEG']: OS_LIBS += CONFIG['MOZ_JPEG_LIBS'] +if CONFIG['MOZ_SYSTEM_LIBVPX']: + OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS'] + if not CONFIG['MOZ_TREE_PIXMAN']: OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS'] diff --git a/old-configure.in b/old-configure.in index 2965f60b7..b3ac8c2f1 100644 --- a/old-configure.in +++ b/old-configure.in @@ -2005,6 +2005,44 @@ esac MOZ_CONFIG_NSPR() +dnl ======================================================== +dnl system libevent Support +dnl ======================================================== +MOZ_ARG_WITH_STRING(system-libevent, +[ --with-system-libevent[=PFX] + Use system libevent [installed at prefix PFX]], + LIBEVENT_DIR=$withval) + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LDFLAGS=$LDFLAGS +_SAVE_LIBS=$LIBS +if test "$LIBEVENT_DIR" = yes; then + PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent, + MOZ_SYSTEM_LIBEVENT=1, + LIBEVENT_DIR=/usr) +fi +if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then + MOZ_SYSTEM_LIBEVENT= +elif test -z "$MOZ_SYSTEM_LIBEVENT"; then + CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS" + LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS" + MOZ_CHECK_HEADER(event.h, + [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then + AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include]) + fi], + AC_MSG_ERROR([--with-system-libevent requested but event.h not found])) + AC_CHECK_LIB(event, event_init, + [MOZ_SYSTEM_LIBEVENT=1 + MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include" + MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"], + [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=]) +fi +CFLAGS=$_SAVE_CFLAGS +LDFLAGS=$_SAVE_LDFLAGS +LIBS=$_SAVE_LIBS + +AC_SUBST(MOZ_SYSTEM_LIBEVENT) + # TODO: We need to find a better place to define this include NSS_CFLAGS="-I${DIST}/include/nss" AC_SUBST(NSS_CFLAGS) @@ -2092,6 +2130,51 @@ if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$MOZ_SYSTEM_BZ2" = 1; then MOZ_BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}" fi +dnl ======================================================== +dnl system PNG Support +dnl ======================================================== +MOZ_ARG_WITH_STRING(system-png, +[ --with-system-png[=PFX] + Use system libpng [installed at prefix PFX]], + PNG_DIR=$withval) + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LDFLAGS=$LDFLAGS +_SAVE_LIBS=$LIBS +if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then + CFLAGS="-I${PNG_DIR}/include $CFLAGS" + LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS" +fi +if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then + MOZ_SYSTEM_PNG= +else + AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"], + AC_MSG_ERROR([--with-system-png requested but no working libpng found])) + AC_CHECK_LIB(png, png_get_acTL, , + AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support])) +fi +if test "$MOZ_SYSTEM_PNG" = 1; then + AC_TRY_COMPILE([ #include + #include + #include ], + [ #if PNG_LIBPNG_VER < $MOZPNG + #error "Insufficient libpng version ($MOZPNG required)." + #endif + #ifndef PNG_UINT_31_MAX + #error "Insufficient libpng version." + #endif ], + MOZ_SYSTEM_PNG=1, + AC_MSG_ERROR([--with-system-png requested but no working libpng found])) +fi +CFLAGS=$_SAVE_CFLAGS +LDFLAGS=$_SAVE_LDFLAGS +LIBS=$_SAVE_LIBS + +if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then + MOZ_PNG_CFLAGS="-I${PNG_DIR}/include" + MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}" +fi + fi # SKIP_LIBRARY_CHECKS dnl ======================================================== @@ -2962,6 +3045,13 @@ fi AC_SUBST(MOZ_EME) +dnl ======================================================== +dnl system libvpx Support +dnl ======================================================== +MOZ_ARG_WITH_BOOL(system-libvpx, +[ --with-system-libvpx Use system libvpx (located with pkgconfig)], + MOZ_SYSTEM_LIBVPX=1) + MOZ_LIBVPX_CFLAGS= MOZ_LIBVPX_LIBS= @@ -2969,6 +3059,35 @@ if test -n "$MOZ_VPX_ERROR_CONCEALMENT" ; then AC_DEFINE(MOZ_VPX_ERROR_CONCEALMENT) fi +_SAVE_CFLAGS=$CFLAGS +_SAVE_LIBS=$LIBS +if test -n "$MOZ_SYSTEM_LIBVPX"; then + dnl ============================ + dnl === libvpx Version check === + dnl ============================ + dnl Check to see if we have a system libvpx package. + PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.5.0) + + CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS" + LIBS="$LIBS $MOZ_LIBVPX_LIBS" + + MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [], + [AC_MSG_ERROR([Couldn't find vpx/vpx_decoder.h which is required for build with system libvpx. Use --without-system-libvpx to build with in-tree libvpx.])]) + + AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [], + [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])]) + + MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h], + [AC_CHECK_FUNC(vpx_mem_set_functions)]) + if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \ + "$ac_cv_func_vpx_mem_set_functions" = no; then + AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING) + fi +fi +CFLAGS=$_SAVE_CFLAGS +LIBS=$_SAVE_LIBS + +AC_SUBST(MOZ_SYSTEM_LIBVPX) AC_SUBST_LIST(MOZ_LIBVPX_CFLAGS) AC_SUBST_LIST(MOZ_LIBVPX_LIBS) @@ -3723,6 +3842,170 @@ 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 ======================================================== @@ -5349,6 +5632,7 @@ MC_BASILISK=$MC_BASILISK MC_PALEMOON=$MC_PALEMOON MOZ_EME=$MOZ_EME MOZ_WEBRTC=$MOZ_WEBRTC +MOZ_SYSTEM_LIBEVENT=$MOZ_SYSTEM_LIBEVENT MOZ_SYSTEM_JPEG=$MOZ_SYSTEM_JPEG MOZ_SYSTEM_ZLIB=$MOZ_SYSTEM_ZLIB MOZ_SYSTEM_BZ2=$MOZ_SYSTEM_BZ2 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 f0e754bdc..606c93001 100644 --- a/storage/moz.build +++ b/storage/moz.build @@ -99,6 +99,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', diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build index d9b167547..acfd83aa3 100644 --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build @@ -195,9 +195,18 @@ if CONFIG['SERVO_TARGET_DIR']: if CONFIG['MOZ_SYSTEM_JPEG']: OS_LIBS += CONFIG['MOZ_JPEG_LIBS'] +if CONFIG['MOZ_SYSTEM_PNG']: + OS_LIBS += CONFIG['MOZ_PNG_LIBS'] + if CONFIG['MOZ_SYSTEM_HUNSPELL']: OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] +if CONFIG['MOZ_SYSTEM_LIBEVENT']: + OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS'] + +if CONFIG['MOZ_SYSTEM_LIBVPX']: + OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS'] + if not CONFIG['MOZ_TREE_PIXMAN']: OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS'] -- 2.25.2