summaryrefslogtreecommitdiff
path: root/js/src/moz.build
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /js/src/moz.build
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloaduxp-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/moz.build')
-rw-r--r--js/src/moz.build792
1 files changed, 792 insertions, 0 deletions
diff --git a/js/src/moz.build b/js/src/moz.build
new file mode 100644
index 0000000000..1162cb70c1
--- /dev/null
+++ b/js/src/moz.build
@@ -0,0 +1,792 @@
+# -*- 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/.
+
+# Directory metadata
+component_engine = ('Core', 'JavaScript Engine')
+component_gc = ('Core', 'JavaScript: GC')
+component_intl = ('Core', 'JavaScript: Internationalization API')
+component_jit = ('Core', 'JavaScript Engine: JIT')
+component_stl = ('Core', 'JavaScript: Standard Library')
+
+FILES_PER_UNIFIED_FILE = 6
+
+with Files('../public/**'):
+ BUG_COMPONENT = component_engine
+with Files('*'):
+ BUG_COMPONENT = component_engine
+
+with Files('wasm/**'):
+ BUG_COMPONENT = component_jit
+with Files('builtin/**'):
+ BUG_COMPONENT = component_stl
+with Files('ctypes/**'):
+ BUG_COMPONENT = ('Core', 'js-ctypes')
+with Files('gc/**'):
+ BUG_COMPONENT = component_gc
+with Files('jit/**'):
+ BUG_COMPONENT = component_jit
+
+# File-specific metadata
+for gcfile in ['jsgc*', 'devtools/rootAnalysis', 'devtools/gc-ubench', 'devtools/gctrace']:
+ with Files(gcfile):
+ BUG_COMPONENT = component_gc
+for header in ('GCAnnotations.h', 'GCAPI.h', 'HeapAPI.h', 'RootingAPI.h', 'SliceBudget.h', 'SweepingAPI.h', 'TraceKind.h', 'TracingAPI.h', 'WeakMapPtr.h'):
+ with Files('../public/' + header):
+ BUG_COMPONENT = component_gc
+
+for stlfile in ['jsarray.*', 'jsbool*', 'jsdate.*', 'jsnum.*', 'json.*', 'jsstr.*']:
+ with Files(stlfile):
+ BUG_COMPONENT = component_stl
+
+with Files('builtin/Intl*'):
+ BUG_COMPONENT = component_intl
+with Files('builtin/make_intl_data.py'):
+ BUG_COMPONENT = component_intl
+
+with Files('../public/TrackedOptimizationInfo.h'):
+ BUG_COMPONENT = component_jit
+
+
+if CONFIG['JS_BUNDLED_EDITLINE']:
+ DIRS += ['editline']
+
+if not CONFIG['JS_DISABLE_SHELL']:
+ DIRS += ['shell']
+
+TEST_DIRS += ['jsapi-tests', 'tests', 'gdb']
+
+CONFIGURE_SUBST_FILES += [
+ 'devtools/rootAnalysis/Makefile',
+ 'js-config',
+ 'js.pc',
+]
+CONFIGURE_DEFINE_FILES += [
+ 'js-confdefs.h',
+]
+
+if not CONFIG['JS_STANDALONE']:
+ LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
+
+ CONFIGURE_SUBST_FILES += [
+ '../../config/autoconf-js.mk',
+ '../../config/emptyvars-js.mk',
+ ]
+
+CONFIGURE_DEFINE_FILES += [
+ 'js-config.h',
+]
+
+if CONFIG['HAVE_DTRACE']:
+ GENERATED_FILES += ['javascript-trace.h']
+
+ EXPORTS += ['!javascript-trace.h']
+
+# Changes to internal header files, used externally, massively slow down
+# browser builds. Don't add new files here unless you know what you're
+# doing!
+EXPORTS += [
+ '!js-config.h',
+ 'js.msg',
+ 'jsalloc.h',
+ 'jsapi.h',
+ 'jsbytecode.h',
+ 'jsclist.h',
+ 'jscpucfg.h',
+ 'jsfriendapi.h',
+ 'jsprf.h',
+ 'jsprototypes.h',
+ 'jspubtd.h',
+ 'jstypes.h',
+ 'jsversion.h',
+ 'jswrapper.h',
+ 'perf/jsperf.h',
+]
+
+# If you add a header here, add it to js/src/jsapi-tests/testIntTypesABI.cpp so
+# that we ensure we don't over-expose our internal integer typedefs. Note that
+# LegacyIntTypes.h below is deliberately exempted from this requirement.
+EXPORTS.js += [
+ '../public/CallArgs.h',
+ '../public/CallNonGenericMethod.h',
+ '../public/CharacterEncoding.h',
+ '../public/Class.h',
+ '../public/Conversions.h',
+ '../public/Date.h',
+ '../public/Debug.h',
+ '../public/GCAnnotations.h',
+ '../public/GCAPI.h',
+ '../public/GCHashTable.h',
+ '../public/GCPolicyAPI.h',
+ '../public/GCVariant.h',
+ '../public/GCVector.h',
+ '../public/HashTable.h',
+ '../public/HeapAPI.h',
+ '../public/Id.h',
+ '../public/Initialization.h',
+ '../public/LegacyIntTypes.h',
+ '../public/MemoryMetrics.h',
+ '../public/Principals.h',
+ '../public/ProfilingFrameIterator.h',
+ '../public/ProfilingStack.h',
+ '../public/Proxy.h',
+ '../public/Realm.h',
+ '../public/RequiredDefines.h',
+ '../public/RootingAPI.h',
+ '../public/SliceBudget.h',
+ '../public/StructuredClone.h',
+ '../public/SweepingAPI.h',
+ '../public/TraceKind.h',
+ '../public/TracingAPI.h',
+ '../public/TrackedOptimizationInfo.h',
+ '../public/TypeDecls.h',
+ '../public/UbiNode.h',
+ '../public/UbiNodeBreadthFirst.h',
+ '../public/UbiNodeCensus.h',
+ '../public/UbiNodeDominatorTree.h',
+ '../public/UbiNodePostOrder.h',
+ '../public/UbiNodeShortestPaths.h',
+ '../public/UniquePtr.h',
+ '../public/Utility.h',
+ '../public/Value.h',
+ '../public/Vector.h',
+ '../public/WeakMapPtr.h',
+]
+
+UNIFIED_SOURCES += [
+ 'builtin/AtomicsObject.cpp',
+ 'builtin/Eval.cpp',
+ 'builtin/Intl.cpp',
+ 'builtin/MapObject.cpp',
+ 'builtin/ModuleObject.cpp',
+ 'builtin/Object.cpp',
+ 'builtin/Profilers.cpp',
+ 'builtin/Promise.cpp',
+ 'builtin/Reflect.cpp',
+ 'builtin/ReflectParse.cpp',
+ 'builtin/SIMD.cpp',
+ 'builtin/SymbolObject.cpp',
+ 'builtin/TestingFunctions.cpp',
+ 'builtin/TypedObject.cpp',
+ 'builtin/WeakMapObject.cpp',
+ 'builtin/WeakSetObject.cpp',
+ 'devtools/sharkctl.cpp',
+ 'ds/LifoAlloc.cpp',
+ 'ds/MemoryProtectionExceptionHandler.cpp',
+ 'frontend/BytecodeCompiler.cpp',
+ 'frontend/BytecodeEmitter.cpp',
+ 'frontend/FoldConstants.cpp',
+ 'frontend/NameFunctions.cpp',
+ 'frontend/ParseNode.cpp',
+ 'frontend/TokenStream.cpp',
+ 'gc/Allocator.cpp',
+ 'gc/Barrier.cpp',
+ 'gc/GCTrace.cpp',
+ 'gc/Iteration.cpp',
+ 'gc/Marking.cpp',
+ 'gc/Memory.cpp',
+ 'gc/MemoryProfiler.cpp',
+ 'gc/Nursery.cpp',
+ 'gc/RootMarking.cpp',
+ 'gc/Statistics.cpp',
+ 'gc/Tracer.cpp',
+ 'gc/Verifier.cpp',
+ 'gc/Zone.cpp',
+ 'irregexp/NativeRegExpMacroAssembler.cpp',
+ 'irregexp/RegExpAST.cpp',
+ 'irregexp/RegExpEngine.cpp',
+ 'irregexp/RegExpInterpreter.cpp',
+ 'irregexp/RegExpMacroAssembler.cpp',
+ 'irregexp/RegExpParser.cpp',
+ 'irregexp/RegExpStack.cpp',
+ 'jit/AliasAnalysis.cpp',
+ 'jit/AliasAnalysisShared.cpp',
+ 'jit/AlignmentMaskAnalysis.cpp',
+ 'jit/BacktrackingAllocator.cpp',
+ 'jit/Bailouts.cpp',
+ 'jit/BaselineBailouts.cpp',
+ 'jit/BaselineCacheIR.cpp',
+ 'jit/BaselineCompiler.cpp',
+ 'jit/BaselineDebugModeOSR.cpp',
+ 'jit/BaselineFrame.cpp',
+ 'jit/BaselineFrameInfo.cpp',
+ 'jit/BaselineIC.cpp',
+ 'jit/BaselineInspector.cpp',
+ 'jit/BaselineJIT.cpp',
+ 'jit/BitSet.cpp',
+ 'jit/BytecodeAnalysis.cpp',
+ 'jit/C1Spewer.cpp',
+ 'jit/CacheIR.cpp',
+ 'jit/CodeGenerator.cpp',
+ 'jit/CompileWrappers.cpp',
+ 'jit/Disassembler.cpp',
+ 'jit/EagerSimdUnbox.cpp',
+ 'jit/EdgeCaseAnalysis.cpp',
+ 'jit/EffectiveAddressAnalysis.cpp',
+ 'jit/ExecutableAllocator.cpp',
+ 'jit/FlowAliasAnalysis.cpp',
+ 'jit/FoldLinearArithConstants.cpp',
+ 'jit/InstructionReordering.cpp',
+ 'jit/Ion.cpp',
+ 'jit/IonAnalysis.cpp',
+ 'jit/IonBuilder.cpp',
+ 'jit/IonCaches.cpp',
+ 'jit/IonOptimizationLevels.cpp',
+ 'jit/JitcodeMap.cpp',
+ 'jit/JitFrames.cpp',
+ 'jit/JitOptions.cpp',
+ 'jit/JitSpewer.cpp',
+ 'jit/JSONSpewer.cpp',
+ 'jit/LICM.cpp',
+ 'jit/Linker.cpp',
+ 'jit/LIR.cpp',
+ 'jit/LoopUnroller.cpp',
+ 'jit/Lowering.cpp',
+ 'jit/MacroAssembler.cpp',
+ 'jit/MCallOptimize.cpp',
+ 'jit/MIR.cpp',
+ 'jit/MIRGraph.cpp',
+ 'jit/MoveResolver.cpp',
+ 'jit/OptimizationTracking.cpp',
+ 'jit/PerfSpewer.cpp',
+ 'jit/ProcessExecutableMemory.cpp',
+ 'jit/RangeAnalysis.cpp',
+ 'jit/Recover.cpp',
+ 'jit/RegisterAllocator.cpp',
+ 'jit/RematerializedFrame.cpp',
+ 'jit/Safepoints.cpp',
+ 'jit/ScalarReplacement.cpp',
+ 'jit/shared/BaselineCompiler-shared.cpp',
+ 'jit/shared/CodeGenerator-shared.cpp',
+ 'jit/shared/Lowering-shared.cpp',
+ 'jit/SharedIC.cpp',
+ 'jit/Sink.cpp',
+ 'jit/Snapshots.cpp',
+ 'jit/StupidAllocator.cpp',
+ 'jit/TypedObjectPrediction.cpp',
+ 'jit/TypePolicy.cpp',
+ 'jit/ValueNumbering.cpp',
+ 'jit/VMFunctions.cpp',
+ 'jit/WasmBCE.cpp',
+ 'jsalloc.cpp',
+ 'jsapi.cpp',
+ 'jsbool.cpp',
+ 'jscntxt.cpp',
+ 'jscompartment.cpp',
+ 'jsdate.cpp',
+ 'jsexn.cpp',
+ 'jsfriendapi.cpp',
+ 'jsfun.cpp',
+ 'jsgc.cpp',
+ 'jsiter.cpp',
+ 'jsnativestack.cpp',
+ 'jsnum.cpp',
+ 'jsobj.cpp',
+ 'json.cpp',
+ 'jsopcode.cpp',
+ 'jsprf.cpp',
+ 'jspropertytree.cpp',
+ 'jsscript.cpp',
+ 'jsstr.cpp',
+ 'jswatchpoint.cpp',
+ 'jsweakmap.cpp',
+ 'perf/jsperf.cpp',
+ 'proxy/BaseProxyHandler.cpp',
+ 'proxy/CrossCompartmentWrapper.cpp',
+ 'proxy/DeadObjectProxy.cpp',
+ 'proxy/OpaqueCrossCompartmentWrapper.cpp',
+ 'proxy/Proxy.cpp',
+ 'proxy/ScriptedProxyHandler.cpp',
+ 'proxy/SecurityWrapper.cpp',
+ 'proxy/Wrapper.cpp',
+ 'threading/Mutex.cpp',
+ 'vm/ArgumentsObject.cpp',
+ 'vm/ArrayBufferObject.cpp',
+ 'vm/AsyncFunction.cpp',
+ 'vm/Caches.cpp',
+ 'vm/CallNonGenericMethod.cpp',
+ 'vm/CharacterEncoding.cpp',
+ 'vm/CodeCoverage.cpp',
+ 'vm/Compression.cpp',
+ 'vm/DateTime.cpp',
+ 'vm/Debugger.cpp',
+ 'vm/DebuggerMemory.cpp',
+ 'vm/EnvironmentObject.cpp',
+ 'vm/ErrorObject.cpp',
+ 'vm/ForOfIterator.cpp',
+ 'vm/GeneratorObject.cpp',
+ 'vm/GlobalObject.cpp',
+ 'vm/HelperThreads.cpp',
+ 'vm/Id.cpp',
+ 'vm/Interpreter.cpp',
+ 'vm/JSONParser.cpp',
+ 'vm/MemoryMetrics.cpp',
+ 'vm/NativeObject.cpp',
+ 'vm/ObjectGroup.cpp',
+ 'vm/PIC.cpp',
+ 'vm/Printer.cpp',
+ 'vm/Probes.cpp',
+ 'vm/ProxyObject.cpp',
+ 'vm/Realm.cpp',
+ 'vm/ReceiverGuard.cpp',
+ 'vm/RegExpObject.cpp',
+ 'vm/RegExpStatics.cpp',
+ 'vm/Runtime.cpp',
+ 'vm/SavedStacks.cpp',
+ 'vm/Scope.cpp',
+ 'vm/SelfHosting.cpp',
+ 'vm/Shape.cpp',
+ 'vm/SharedArrayObject.cpp',
+ 'vm/SharedImmutableStringsCache.cpp',
+ 'vm/SPSProfiler.cpp',
+ 'vm/Stack.cpp',
+ 'vm/Stopwatch.cpp',
+ 'vm/String.cpp',
+ 'vm/StringBuffer.cpp',
+ 'vm/StructuredClone.cpp',
+ 'vm/Symbol.cpp',
+ 'vm/TaggedProto.cpp',
+ 'vm/Time.cpp',
+ 'vm/TypedArrayObject.cpp',
+ 'vm/TypeInference.cpp',
+ 'vm/UbiNode.cpp',
+ 'vm/UbiNodeCensus.cpp',
+ 'vm/UbiNodeShortestPaths.cpp',
+ 'vm/UnboxedObject.cpp',
+ 'vm/Unicode.cpp',
+ 'vm/Value.cpp',
+ 'vm/WeakMapPtr.cpp',
+ 'vm/Xdr.cpp',
+ 'wasm/AsmJS.cpp',
+ 'wasm/WasmBaselineCompile.cpp',
+ 'wasm/WasmBinaryFormat.cpp',
+ 'wasm/WasmBinaryIterator.cpp',
+ 'wasm/WasmBinaryToAST.cpp',
+ 'wasm/WasmBinaryToExperimentalText.cpp',
+ 'wasm/WasmBinaryToText.cpp',
+ 'wasm/WasmCode.cpp',
+ 'wasm/WasmCompartment.cpp',
+ 'wasm/WasmCompile.cpp',
+ 'wasm/WasmFrameIterator.cpp',
+ 'wasm/WasmGenerator.cpp',
+ 'wasm/WasmInstance.cpp',
+ 'wasm/WasmIonCompile.cpp',
+ 'wasm/WasmJS.cpp',
+ 'wasm/WasmModule.cpp',
+ 'wasm/WasmSignalHandlers.cpp',
+ 'wasm/WasmStubs.cpp',
+ 'wasm/WasmTable.cpp',
+ 'wasm/WasmTextToBinary.cpp',
+ 'wasm/WasmTextUtils.cpp',
+ 'wasm/WasmTypes.cpp'
+]
+
+# jsarray.cpp and jsatom.cpp cannot be built in unified mode because
+# xpcshell is broken during packaging when compiled with gcc-4.8.2
+# builtin/RegExp.cpp cannot be built in unified mode because it is built
+# without PGO
+# frontend/Parser.cpp cannot be built in unified mode because of explicit
+# template instantiations.
+# jsdtoa.cpp cannot be built in unified mode because we want to suppress
+# compiler warnings in third-party dtoa.c.
+# jsmath.cpp cannot be built in unified mode because it needs to pull rand_s
+# from <stdlib.h> on Windows through a preprocessor define.
+# jsutil.cpp cannot be built in unified mode because it is needed for
+# check-vanilla-allocations.
+# StoreBuffer.cpp cannot be built in unified because its template
+# instantiations may or may not be needed depending on what it gets bundled
+# with.
+SOURCES += [
+ 'builtin/RegExp.cpp',
+ 'frontend/Parser.cpp',
+ 'gc/StoreBuffer.cpp',
+ 'jsarray.cpp',
+ 'jsatom.cpp',
+ 'jsdtoa.cpp',
+ 'jsmath.cpp',
+ 'jsutil.cpp',
+ 'vm/Initialization.cpp',
+]
+
+if CONFIG['JS_POSIX_NSPR']:
+ UNIFIED_SOURCES += [
+ 'vm/PosixNSPR.cpp',
+ ]
+
+if CONFIG['MOZ_INSTRUMENTS']:
+ SOURCES += [
+ 'devtools/Instruments.cpp',
+ ]
+
+if CONFIG['ENABLE_TRACE_LOGGING']:
+ SOURCES += [
+ 'vm/TraceLogging.cpp',
+ 'vm/TraceLoggingGraph.cpp',
+ 'vm/TraceLoggingTypes.cpp',
+ ]
+
+if not CONFIG['ENABLE_ION']:
+ UNIFIED_SOURCES += [
+ 'jit/none/Trampoline-none.cpp'
+ ]
+elif CONFIG['JS_CODEGEN_X86'] or CONFIG['JS_CODEGEN_X64']:
+ UNIFIED_SOURCES += [
+ 'jit/x86-shared/Architecture-x86-shared.cpp',
+ 'jit/x86-shared/Assembler-x86-shared.cpp',
+ 'jit/x86-shared/AssemblerBuffer-x86-shared.cpp',
+ 'jit/x86-shared/BaselineCompiler-x86-shared.cpp',
+ 'jit/x86-shared/BaselineIC-x86-shared.cpp',
+ 'jit/x86-shared/CodeGenerator-x86-shared.cpp',
+ 'jit/x86-shared/Lowering-x86-shared.cpp',
+ 'jit/x86-shared/MacroAssembler-x86-shared.cpp',
+ 'jit/x86-shared/MoveEmitter-x86-shared.cpp',
+ ]
+ SOURCES += [
+ 'jit/x86-shared/Disassembler-x86-shared.cpp', # using namespace js::jit::X86Encoding;
+ ]
+ if CONFIG['JS_CODEGEN_X64']:
+ UNIFIED_SOURCES += [
+ 'jit/x64/Assembler-x64.cpp',
+ 'jit/x64/Bailouts-x64.cpp',
+ 'jit/x64/BaselineCompiler-x64.cpp',
+ 'jit/x64/BaselineIC-x64.cpp',
+ 'jit/x64/CodeGenerator-x64.cpp',
+ 'jit/x64/Lowering-x64.cpp',
+ 'jit/x64/MacroAssembler-x64.cpp',
+ 'jit/x64/SharedIC-x64.cpp',
+ 'jit/x64/Trampoline-x64.cpp',
+ ]
+ else:
+ UNIFIED_SOURCES += [
+ 'jit/x86/Assembler-x86.cpp',
+ 'jit/x86/Bailouts-x86.cpp',
+ 'jit/x86/BaselineCompiler-x86.cpp',
+ 'jit/x86/BaselineIC-x86.cpp',
+ 'jit/x86/CodeGenerator-x86.cpp',
+ 'jit/x86/Lowering-x86.cpp',
+ 'jit/x86/MacroAssembler-x86.cpp',
+ 'jit/x86/SharedIC-x86.cpp',
+ 'jit/x86/Trampoline-x86.cpp',
+ ]
+elif CONFIG['JS_CODEGEN_ARM']:
+ UNIFIED_SOURCES += [
+ 'jit/arm/Architecture-arm.cpp',
+ 'jit/arm/Assembler-arm.cpp',
+ 'jit/arm/Bailouts-arm.cpp',
+ 'jit/arm/BaselineCompiler-arm.cpp',
+ 'jit/arm/BaselineIC-arm.cpp',
+ 'jit/arm/CodeGenerator-arm.cpp',
+ 'jit/arm/disasm/Constants-arm.cpp',
+ 'jit/arm/disasm/Disasm-arm.cpp',
+ 'jit/arm/Lowering-arm.cpp',
+ 'jit/arm/MacroAssembler-arm.cpp',
+ 'jit/arm/MoveEmitter-arm.cpp',
+ 'jit/arm/SharedIC-arm.cpp',
+ 'jit/arm/Trampoline-arm.cpp',
+ ]
+ if CONFIG['JS_SIMULATOR_ARM']:
+ UNIFIED_SOURCES += [
+ 'jit/arm/Simulator-arm.cpp'
+ ]
+ # Configuration used only for testing.
+ if CONFIG['OS_ARCH'] == 'Linux' or CONFIG['OS_ARCH'] == 'Darwin':
+ CXXFLAGS += [ '-msse2', '-mfpmath=sse' ]
+ elif CONFIG['OS_ARCH'] == 'Darwin':
+ SOURCES += [
+ 'jit/arm/llvm-compiler-rt/arm/aeabi_idivmod.S',
+ 'jit/arm/llvm-compiler-rt/arm/aeabi_uidivmod.S',
+ ]
+elif CONFIG['JS_CODEGEN_ARM64']:
+ UNIFIED_SOURCES += [
+ 'jit/arm64/Architecture-arm64.cpp',
+ 'jit/arm64/Assembler-arm64.cpp',
+ 'jit/arm64/Bailouts-arm64.cpp',
+ 'jit/arm64/BaselineIC-arm64.cpp',
+ 'jit/arm64/CodeGenerator-arm64.cpp',
+ 'jit/arm64/Lowering-arm64.cpp',
+ 'jit/arm64/MacroAssembler-arm64.cpp',
+ 'jit/arm64/MoveEmitter-arm64.cpp',
+ 'jit/arm64/SharedIC-arm64.cpp',
+ 'jit/arm64/Trampoline-arm64.cpp',
+ 'jit/arm64/vixl/Assembler-vixl.cpp',
+ 'jit/arm64/vixl/Cpu-vixl.cpp',
+ 'jit/arm64/vixl/Decoder-vixl.cpp',
+ 'jit/arm64/vixl/Disasm-vixl.cpp',
+ 'jit/arm64/vixl/Instructions-vixl.cpp',
+ 'jit/arm64/vixl/Instrument-vixl.cpp',
+ 'jit/arm64/vixl/MacroAssembler-vixl.cpp',
+ 'jit/arm64/vixl/MozAssembler-vixl.cpp',
+ 'jit/arm64/vixl/MozInstructions-vixl.cpp',
+ 'jit/arm64/vixl/Utils-vixl.cpp'
+ ]
+ if CONFIG['JS_SIMULATOR_ARM64']:
+ UNIFIED_SOURCES += [
+ 'jit/arm64/vixl/Debugger-vixl.cpp',
+ 'jit/arm64/vixl/Logic-vixl.cpp',
+ 'jit/arm64/vixl/MozSimulator-vixl.cpp',
+ 'jit/arm64/vixl/Simulator-vixl.cpp'
+ ]
+elif CONFIG['JS_CODEGEN_MIPS32'] or CONFIG['JS_CODEGEN_MIPS64']:
+ UNIFIED_SOURCES += [
+ 'jit/mips-shared/Architecture-mips-shared.cpp',
+ 'jit/mips-shared/Assembler-mips-shared.cpp',
+ 'jit/mips-shared/Bailouts-mips-shared.cpp',
+ 'jit/mips-shared/BaselineCompiler-mips-shared.cpp',
+ 'jit/mips-shared/BaselineIC-mips-shared.cpp',
+ 'jit/mips-shared/CodeGenerator-mips-shared.cpp',
+ 'jit/mips-shared/Lowering-mips-shared.cpp',
+ 'jit/mips-shared/MacroAssembler-mips-shared.cpp',
+ 'jit/mips-shared/MoveEmitter-mips-shared.cpp',
+ ]
+ if CONFIG['JS_CODEGEN_MIPS32']:
+ UNIFIED_SOURCES += [
+ 'jit/mips32/Architecture-mips32.cpp',
+ 'jit/mips32/Assembler-mips32.cpp',
+ 'jit/mips32/Bailouts-mips32.cpp',
+ 'jit/mips32/BaselineCompiler-mips32.cpp',
+ 'jit/mips32/BaselineIC-mips32.cpp',
+ 'jit/mips32/CodeGenerator-mips32.cpp',
+ 'jit/mips32/Lowering-mips32.cpp',
+ 'jit/mips32/MacroAssembler-mips32.cpp',
+ 'jit/mips32/MoveEmitter-mips32.cpp',
+ 'jit/mips32/SharedIC-mips32.cpp',
+ 'jit/mips32/Trampoline-mips32.cpp',
+ ]
+ if CONFIG['JS_SIMULATOR_MIPS32']:
+ UNIFIED_SOURCES += [
+ 'jit/mips32/Simulator-mips32.cpp'
+ ]
+ elif CONFIG['JS_CODEGEN_MIPS64']:
+ UNIFIED_SOURCES += [
+ 'jit/mips64/Architecture-mips64.cpp',
+ 'jit/mips64/Assembler-mips64.cpp',
+ 'jit/mips64/Bailouts-mips64.cpp',
+ 'jit/mips64/BaselineCompiler-mips64.cpp',
+ 'jit/mips64/BaselineIC-mips64.cpp',
+ 'jit/mips64/CodeGenerator-mips64.cpp',
+ 'jit/mips64/Lowering-mips64.cpp',
+ 'jit/mips64/MacroAssembler-mips64.cpp',
+ 'jit/mips64/MoveEmitter-mips64.cpp',
+ 'jit/mips64/SharedIC-mips64.cpp',
+ 'jit/mips64/Trampoline-mips64.cpp',
+ ]
+ if CONFIG['JS_SIMULATOR_MIPS64']:
+ UNIFIED_SOURCES += [
+ 'jit/mips64/Simulator-mips64.cpp'
+ ]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+ SOURCES += [
+ 'threading/windows/ConditionVariable.cpp',
+ 'threading/windows/MutexImpl.cpp',
+ 'threading/windows/Thread.cpp',
+ ]
+ # _CRT_RAND_S must be #defined before #including stdlib.h to get rand_s()
+ DEFINES['_CRT_RAND_S'] = True
+else:
+ SOURCES += [
+ 'threading/posix/ConditionVariable.cpp',
+ 'threading/posix/MutexImpl.cpp',
+ 'threading/posix/Thread.cpp',
+ ]
+
+if CONFIG['JS_HAS_CTYPES']:
+ SOURCES += [
+ 'ctypes/CTypes.cpp',
+ 'ctypes/Library.cpp',
+ ]
+ if not CONFIG['MOZ_SYSTEM_FFI']:
+ LOCAL_INCLUDES += [
+ '!ctypes/libffi/include',
+ 'ctypes/libffi/src/%s' % CONFIG['FFI_TARGET_DIR'],
+ ]
+
+if CONFIG['MOZ_VTUNE']:
+ SOURCES += [
+ 'vtune/jitprofiling.c'
+ ]
+
+if CONFIG['HAVE_LINUX_PERF_EVENT_H']:
+ SOURCES += [
+ 'perf/pm_linux.cpp'
+ ]
+ if CONFIG['LINUX_HEADERS_INCLUDES']:
+ SOURCES['perf/pm_linux.cpp'].flags += [CONFIG['LINUX_HEADERS_INCLUDES']]
+else:
+ SOURCES += [
+ 'perf/pm_stub.cpp'
+ ]
+
+GENERATED_FILES += ['jsautokw.h']
+jsautokw = GENERATED_FILES['jsautokw.h']
+jsautokw.script = 'jsautokw.py'
+jsautokw.inputs += [
+ 'vm/Keywords.h'
+]
+
+# JavaScript must be built shared, even for static builds, as it is used by
+# other modules which are always built shared. Failure to do so results in
+# the js code getting copied into xpinstall and jsd as well as mozilla-bin,
+# and then the static data cells used for locking no longer work.
+#
+# In fact, we now build both a static and a shared library, as the
+# JS shell would like to link to the static library.
+
+if CONFIG['JS_SHARED_LIBRARY']:
+ GeckoSharedLibrary('js', linkage=None)
+ SHARED_LIBRARY_NAME = CONFIG['JS_LIBRARY_NAME']
+ SDK_LIBRARY = True
+else:
+ Library('js')
+
+FORCE_STATIC_LIB = True
+STATIC_LIBRARY_NAME = 'js_static'
+
+if CONFIG['ENABLE_INTL_API']:
+ if not CONFIG['MOZ_ICU_DATA_ARCHIVE']:
+ USE_LIBS += [
+ 'icu',
+ ]
+ else:
+ # Linking 'icu' will pull in the stubdata library,
+ # which the shell doesn't want, so link the other bits.
+ USE_LIBS += [
+ 'icui18n',
+ 'icuuc',
+ ]
+
+USE_LIBS += [
+ 'nspr',
+ 'zlib',
+]
+
+if CONFIG['NIGHTLY_BUILD']:
+ DEFINES['ENABLE_BINARYDATA'] = True
+
+if CONFIG['NIGHTLY_BUILD']:
+ DEFINES['ENABLE_SIMD'] = True
+
+# Also set in shell/moz.build
+DEFINES['ENABLE_SHARED_ARRAY_BUFFER'] = True
+
+DEFINES['EXPORT_JS_API'] = True
+
+if CONFIG['JS_HAS_CTYPES']:
+ DEFINES['JS_HAS_CTYPES'] = True
+ for var in ('DLL_PREFIX', 'DLL_SUFFIX'):
+ DEFINES[var] = '"%s"' % CONFIG[var]
+
+if CONFIG['MOZ_LINKER']:
+ DEFINES['MOZ_LINKER'] = True
+
+if CONFIG['_MSC_VER']:
+ if CONFIG['CPU_ARCH'] == 'x86':
+ SOURCES['builtin/RegExp.cpp'].no_pgo = True # Bug 772303
+ elif CONFIG['CPU_ARCH'] == 'x86_64' and CONFIG['JS_HAS_CTYPES']:
+ SOURCES['ctypes/CTypes.cpp'].no_pgo = True # Bug 810661
+ # Prevent floating point errors caused by VC++ optimizations
+ # XXX We should add this to CXXFLAGS, too?
+ CFLAGS += ['-fp:precise']
+ # C4805 warns mixing bool with other integral types in computation.
+ # But given the conversion from bool is specified, and this is a
+ # pattern widely used in code in js/src, suppress this warning here.
+ CXXFLAGS += ['-wd4805']
+ # C4661 ("no suitable definition provided for explicit template
+ # instantiation request") is emitted for all Parser methods that
+ # have a Parser<FullParseHandler> definition but no
+ # Parser<SyntaxParseHandler> definition, see bug 1167030.
+ CXXFLAGS += ['-wd4661']
+ CXXFLAGS += ['-we4067', '-we4258', '-we4275']
+ CXXFLAGS += ['-wd4146'] # FIXME: unary minus operator applied to unsigned type (bug 1229189)
+
+ # This is intended as a temporary hack to support building with VS2015.
+ # 'noexcept' used with no exception handling mode specified;
+ # termination on exception is not guaranteed. Specify /EHsc
+ CXXFLAGS += ['-wd4577']
+ CXXFLAGS += ['-wd4312']
+
+if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
+ OS_LIBS += [
+ 'm',
+ ]
+
+if CONFIG['OS_ARCH'] == 'FreeBSD':
+ OS_LIBS += [
+ '-pthread',
+ ]
+
+if CONFIG['OS_ARCH'] == 'Linux':
+ OS_LIBS += [
+ 'dl',
+ ]
+
+if CONFIG['OS_ARCH'] == 'SunOS':
+ OS_LIBS += [
+ 'posix4',
+ 'dl',
+ 'nsl',
+ 'socket',
+ ]
+
+OS_LIBS += CONFIG['REALTIME_LIBS']
+
+CFLAGS += CONFIG['MOZ_ICU_CFLAGS']
+CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS']
+
+NO_EXPAND_LIBS = True
+
+DIST_INSTALL = True
+
+# Prepare self-hosted JS code for embedding
+GENERATED_FILES += [('selfhosted.out.h', 'selfhosted.js')]
+selfhosted = GENERATED_FILES[('selfhosted.out.h', 'selfhosted.js')]
+selfhosted.script = 'builtin/embedjs.py:generate_selfhosted'
+selfhosted.inputs = [
+ 'js.msg',
+ 'builtin/TypedObjectConstants.h',
+ 'builtin/SelfHostingDefines.h',
+ 'builtin/Utilities.js',
+ 'builtin/Array.js',
+ 'builtin/Classes.js',
+ 'builtin/Date.js',
+ 'builtin/Error.js',
+ 'builtin/Function.js',
+ 'builtin/Generator.js',
+ 'builtin/Intl.js',
+ 'builtin/IntlData.js',
+ 'builtin/Iterator.js',
+ 'builtin/Map.js',
+ 'builtin/Module.js',
+ 'builtin/Number.js',
+ 'builtin/Object.js',
+ 'builtin/Reflect.js',
+ 'builtin/RegExp.js',
+ 'builtin/RegExpGlobalReplaceOpt.h.js',
+ 'builtin/RegExpLocalReplaceOpt.h.js',
+ 'builtin/String.js',
+ 'builtin/Set.js',
+ 'builtin/Sorting.js',
+ 'builtin/TypedArray.js',
+ 'builtin/TypedObject.js',
+ 'builtin/WeakMap.js',
+ 'builtin/WeakSet.js'
+]
+
+if CONFIG['SPIDERMONKEY_PROMISE']:
+ selfhosted.inputs += ['builtin/Promise.js']
+
+if CONFIG['JS_HAS_CTYPES']:
+ if CONFIG['MOZ_SYSTEM_FFI']:
+ CXXFLAGS += CONFIG['MOZ_FFI_CFLAGS']
+ else:
+ # Windows needs this to be linked with a static library.
+ DEFINES['FFI_BUILDING'] = True
+
+if CONFIG['GNU_CXX']:
+ CXXFLAGS += ['-Wno-shadow', '-Werror=format']
+
+# Suppress warnings in third-party code.
+if CONFIG['CLANG_CXX']:
+ SOURCES['jsdtoa.cpp'].flags += ['-Wno-implicit-fallthrough']