mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 12:51:06 +00:00
4a05ff7242
In bug 1839743, we made the build system prefer packed relative relocations to elfhack when both the system libc and linker support them. Unfortunately, while that covers most of the benefits from elfhack, it doesn't cover bug 651892. To cover it, we make every C++ executable contain its own copy of the symbol, so that all relocations related to it become relative. And because this is actually (slightly) beneficial on macos, and because it's also an advantage to have our own abort called rather than the system's, we apply the same to all platforms. Differential Revision: https://phabricator.services.mozilla.com/D184068
213 lines
4.8 KiB
Python
213 lines
4.8 KiB
Python
# -*- 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",
|
|
"MacroArgs.h",
|
|
"MacroForEach.h",
|
|
"MathAlgorithms.h",
|
|
"Maybe.h",
|
|
"MaybeOneOf.h",
|
|
"MaybeStorageBase.h",
|
|
"MemoryChecking.h",
|
|
"MemoryReporting.h",
|
|
"MoveOnlyFunction.h",
|
|
"MruCache.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",
|
|
"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"]
|