Raw File
moz.build
# -*- 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 = ("Core", "MFBT")

Library("mfbt")

EXPORTS += [
    "../third_party/rust/encoding_c_mem/include/encoding_rs_mem.h",
]

EXPORTS.mozilla = [
    "Algorithm.h",
    "Alignment.h",
    "AllocPolicy.h",
    "AlreadyAddRefed.h",
    "Array.h",
    "ArrayUtils.h",
    "Assertions.h",
    "AtomicBitfields.h",
    "Atomics.h",
    "Attributes.h",
    "BinarySearch.h",
    "BitSet.h",
    "BloomFilter.h",
    "Buffer.h",
    "BufferList.h",
    "Casting.h",
    "ChaosMode.h",
    "Char16.h",
    "CheckedInt.h",
    "CompactPair.h",
    "Compiler.h",
    "Compression.h",
    "DbgMacro.h",
    "DebugOnly.h",
    "DefineEnum.h",
    "DoublyLinkedList.h",
    "EndianUtils.h",
    "EnumeratedArray.h",
    "EnumeratedRange.h",
    "EnumSet.h",
    "EnumTypeTraits.h",
    "fallible.h",
    "FastBernoulliTrial.h",
    "FloatingPoint.h",
    "FStream.h",
    "FunctionRef.h",
    "FunctionTypeTraits.h",
    "Fuzzing.h",
    "HashFunctions.h",
    "HashTable.h",
    "HelperMacros.h",
    "InitializedOnce.h",
    "IntegerRange.h",
    "IntegerTypeTraits.h",
    "JSONWriter.h",
    "JsRust.h",
    "Latin1.h",
    "Likely.h",
    "LinkedList.h",
    "Literals.h",
    "MacroArgs.h",
    "MacroForEach.h",
    "MathAlgorithms.h",
    "Maybe.h",
    "MaybeOneOf.h",
    "MaybeStorageBase.h",
    "MemoryChecking.h",
    "MemoryReporting.h",
    "MoveOnlyFunction.h",
    "MPSCQueue.h",
    "MruCache.h",
    "NeverDestroyed.h",
    "NonDereferenceable.h",
    "NotNull.h",
    "Opaque.h",
    "OperatorNewExtensions.h",
    "PairHash.h",
    "Path.h",
    "PodOperations.h",
    "Poison.h",
    "RandomNum.h",
    "Range.h",
    "RangedArray.h",
    "RangedPtr.h",
    "ReentrancyGuard.h",
    "RefCounted.h",
    "RefCountType.h",
    "RefPtr.h",
    "Result.h",
    "ResultExtensions.h",
    "ResultVariant.h",
    "ReverseIterator.h",
    "RollingMean.h",
    "Saturate.h",
    "ScopeExit.h",
    "SegmentedVector.h",
    "SHA1.h",
    "SharedLibrary.h",
    "SmallPointerArray.h",
    "Span.h",
    "SplayTree.h",
    "SPSCQueue.h",
    "StaticAnalysisFunctions.h",
    "TaggedAnonymousMemory.h",
    "Tainting.h",
    "TemplateLib.h",
    "TextUtils.h",
    "ThreadLocal.h",
    "ThreadSafety.h",
    "ThreadSafeWeakPtr.h",
    "ToString.h",
    "Try.h",
    "TypedEnumBits.h",
    "Types.h",
    "UniquePtr.h",
    "UniquePtrExtensions.h",
    "Unused.h",
    "Utf8.h",
    "Variant.h",
    "Vector.h",
    "WeakPtr.h",
    "WrappingOperations.h",
    "XorShift128PlusRNG.h",
]

EXPORTS["double-conversion"] = [
    "double-conversion/double-conversion/double-conversion.h",
    "double-conversion/double-conversion/double-to-string.h",
    "double-conversion/double-conversion/string-to-double.h",
    "double-conversion/double-conversion/utils.h",
]

EXPORTS.function2 += [
    "/third_party/function2/include/function2/function2.hpp",
]

LOCAL_INCLUDES += [
    "/mfbt/double-conversion",
]

if CONFIG["OS_ARCH"] == "WINNT":
    EXPORTS.mozilla += [
        "WindowsVersion.h",
    ]

if CONFIG["OS_ARCH"] == "WASI":
    EXPORTS.mozilla += [
        "WasiAtomic.h",
    ]

if CONFIG["MOZ_TSAN"]:
    EXPORTS.mozilla += [
        "TsanOptions.h",
    ]

UNIFIED_SOURCES += [
    "Assertions.cpp",
    "ChaosMode.cpp",
    "Compression.cpp",
    "double-conversion/double-conversion/bignum-dtoa.cc",
    "double-conversion/double-conversion/bignum.cc",
    "double-conversion/double-conversion/cached-powers.cc",
    "double-conversion/double-conversion/double-to-string.cc",
    "double-conversion/double-conversion/fast-dtoa.cc",
    "double-conversion/double-conversion/fixed-dtoa.cc",
    "double-conversion/double-conversion/string-to-double.cc",
    "double-conversion/double-conversion/strtod.cc",
    "FloatingPoint.cpp",
    "HashFunctions.cpp",
    "JSONWriter.cpp",
    "Poison.cpp",
    "RandomNum.cpp",
    "SHA1.cpp",
    "TaggedAnonymousMemory.cpp",
    "UniquePtrExtensions.cpp",
    "Unused.cpp",
    "Utf8.cpp",
]

if CONFIG["MOZ_BUILD_APP"] not in (
    "memory",
    "tools/update-programs",
):
    # Building MFBT tests adds a large overhead when building.
    TEST_DIRS += ["tests"]

DEFINES["IMPL_MFBT"] = True

SOURCES += [
    "lz4/lz4.c",
    "lz4/lz4file.c",
    "lz4/lz4frame.c",
    "lz4/lz4hc.c",
    "lz4/xxhash.c",
]

SOURCES["lz4/xxhash.c"].flags += ["-Wno-unused-function"]

DisableStlWrapping()

if CONFIG["MOZ_NEEDS_LIBATOMIC"]:
    OS_LIBS += ["atomic"]

DEFINES["LZ4LIB_VISIBILITY"] = ""

# This is kind of gross because this is not a subdirectory,
# but pure_virtual requires mfbt to build and some projects
# don't use mfbt.
DIRS += ["../build/pure_virtual"]
back to top