storage/moz.build
author Masayuki Nakano <masayuki@d-toybox.com>
Thu, 10 Jan 2019 08:50:41 +0000
changeset 453219 99a977d519a0b78e267d3dce4afb009b8d3be769
parent 452900 c69cf0bb19cd8d0814011546f5e3e2e6185eb0cd
child 456148 47e8e726d241221405bb859742caeb1bb6de1736
permissions -rw-r--r--
Bug 181137 - part 8: Make ContentIteratorBase and its subclasses non-refcountable r=smaug This patch makes ContentIteratorBase, PostContentIterator, PreContentIterator and ContentSubtreeIterator classes non-refcountable because most users can create their instances in stack and such users may be in a hot path. So, we can save a lot of cost of instantiation. Unfortunately, only ScriptableContentIterator creates one of the concrete classes and needs to destroy it properly. Therefore, its EnsureContentIterator(), destructor, traverse and unlink code becomes messy. However, ScriptableContentIterator was designed for automated tests and we need to maintain it not so many times. Therefore, improvement of other users must be worthwhiler than this demerit. Differential Revision: https://phabricator.services.mozilla.com/D15928

# -*- 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']