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