gecko-dev/storage/moz.build
Arfrever Frehtes Taifersar Arahesis 6780dfb979 Bug 1270882 - Enable support for SQLite custom FTS3 tokenizers at run time. r=mak
Do not require that SQLite has been built with support for custom FTS3
tokenizers enabled by default. This allows to use system SQLite in
distributions which provide SQLite configured in this way (which is SQLite
upstream's default configuration due to security concerns).

Requires exposing the sqlite3_db_config symbol in bundled SQLite.

Disable no longer needed setting of SQLITE_ENABLE_FTS3_TOKENIZER macro in
bundled SQLite build.
2018-11-29 23:02:10 +00:00

129 lines
4.1 KiB
Python

# -*- 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/.
with Files("**"):
BUG_COMPONENT = ("Toolkit", "Storage")
DIRS += ['build']
TEST_DIRS += ['test']
XPIDL_SOURCES += [
'mozIStorageAggregateFunction.idl',
'mozIStorageAsyncConnection.idl',
'mozIStorageAsyncStatement.idl',
'mozIStorageBaseStatement.idl',
'mozIStorageBindingParams.idl',
'mozIStorageBindingParamsArray.idl',
'mozIStorageCompletionCallback.idl',
'mozIStorageConnection.idl',
'mozIStorageError.idl',
'mozIStorageFunction.idl',
'mozIStoragePendingStatement.idl',
'mozIStorageProgressHandler.idl',
'mozIStorageResultSet.idl',
'mozIStorageRow.idl',
'mozIStorageService.idl',
'mozIStorageStatement.idl',
'mozIStorageStatementCallback.idl',
'mozIStorageVacuumParticipant.idl',
'mozIStorageValueArray.idl',
]
XPIDL_MODULE = 'storage'
EXPORTS += [
'mozStorageHelper.h',
]
EXPORTS.mozilla += [
'storage.h',
]
# NOTE When adding something to this list, you probably need to add it to the
# storage.h file too.
EXPORTS.mozilla.storage += [
'mozStorageAsyncStatementParams.h',
'mozStorageStatementParams.h',
'mozStorageStatementRow.h',
'StatementCache.h',
'Variant.h',
'Variant_inl.h',
]
# SEE ABOVE NOTE!
UNIFIED_SOURCES += [
'FileSystemModule.cpp',
'mozStorageArgValueArray.cpp',
'mozStorageAsyncStatement.cpp',
'mozStorageAsyncStatementExecution.cpp',
'mozStorageAsyncStatementJSHelper.cpp',
'mozStorageAsyncStatementParams.cpp',
'mozStorageBindingParamsArray.cpp',
'mozStorageError.cpp',
'mozStoragePrivateHelpers.cpp',
'mozStorageResultSet.cpp',
'mozStorageRow.cpp',
'mozStorageService.cpp',
'mozStorageSQLFunctions.cpp',
'mozStorageStatement.cpp',
'mozStorageStatementJSHelper.cpp',
'mozStorageStatementParams.cpp',
'mozStorageStatementRow.cpp',
'SQLCollations.cpp',
'StorageBaseStatementInternal.cpp',
'TelemetryVFS.cpp',
'VacuumManager.cpp',
]
# These files need to be built separately because they #include variantToSQLiteT_impl.h.
SOURCES += [
'mozStorageBindingParams.cpp',
'mozStorageConnection.cpp',
]
include('/ipc/chromium/chromium-config.mozbuild')
FINAL_LIBRARY = 'xul'
# Don't use the jemalloc allocator on Android, because we can't guarantee
# that Gecko will configure sqlite before it is first used (bug 730495).
#
# Don't use the jemalloc allocator when using system sqlite. Linked in libraries
# (such as NSS) might trigger an initialization of sqlite and allocation
# of memory using the default allocator, prior to the storage service
# registering its allocator, causing memory management failures (bug 938730).
# However, this is not an issue if both the jemalloc allocator and the default
# allocator are the same thing.
#
# Note: On Windows our sqlite build assumes we use jemalloc. If you disable
# MOZ_STORAGE_MEMORY on Windows, you will also need to change the "ifdef
# MOZ_MEMORY" options in db/sqlite3/src/Makefile.in.
if CONFIG['MOZ_MEMORY'] and not CONFIG['MOZ_SYSTEM_SQLITE']:
if CONFIG['OS_TARGET'] != 'Android':
DEFINES['MOZ_STORAGE_MEMORY'] = True
# Thunderbird needs the 2-argument version of fts3_tokenizer()
if CONFIG['MOZ_THUNDERBIRD'] or CONFIG['MOZ_SUITE']:
DEFINES['MOZ_SQLITE_FTS3_TOKENIZER'] = 1
# This is the default value. If we ever change it when compiling sqlite, we
# will need to change it here as well.
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',
'/dom/base',
]
CXXFLAGS += CONFIG['SQLITE_CFLAGS']