# -*- 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 += [
    "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",
    "SQLiteMutex.h",
    "StatementCache.h",
    "Variant.h",
    "Variant_inl.h",
]
# SEE ABOVE NOTE!

UNIFIED_SOURCES += [
    "BaseVFS.cpp",
    "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",
    "ObfuscatingVFS.cpp",
    "QuotaVFS.cpp",
    "ReadOnlyNoLockVFS.cpp",
    "SQLCollations.cpp",
    "StorageBaseStatementInternal.cpp",
    "VacuumManager.cpp",
    "Variant.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"

# 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

LOCAL_INCLUDES += [
    "/dom/base",
    "/third_party/sqlite3/src",
]

CXXFLAGS += CONFIG["SQLITE_CFLAGS"]
