Source code

Revision control

Copy as Markdown

Other Tools

# -*- 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",
"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",
"Scoped.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"]