From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- js/src/moz.build | 792 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 792 insertions(+) create mode 100644 js/src/moz.build (limited to 'js/src/moz.build') diff --git a/js/src/moz.build b/js/src/moz.build new file mode 100644 index 000000000..1162cb70c --- /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 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 definition but no + # Parser 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'] -- cgit v1.2.3