| # -*- Mode: python; c-basic-offset: 4; 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('asmjs/**'): |
| 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 ('GCAPI.h', 'HeapAPI.h', 'RootingAPI.h', 'SliceBudget.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'] |
| |
| # editline needs to get built before the shell |
| if not CONFIG['JS_DISABLE_SHELL']: |
| DIRS += ['shell'] |
| |
| TEST_DIRS += ['jsapi-tests', 'tests', 'gdb'] |
| |
| CONFIGURE_SUBST_FILES += [ |
| 'devtools/rootAnalysis/Makefile', |
| 'js-confdefs.h', |
| 'js-config', |
| 'js.pc', |
| ] |
| |
| if not CONFIG['JS_STANDALONE']: |
| CONFIGURE_SUBST_FILES += [ |
| '../../config/autoconf-js.mk', |
| '../../config/emptyvars-js.mk', |
| ] |
| |
| CONFIGURE_DEFINE_FILES += [ |
| 'js-config.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.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/GCAPI.h', |
| '../public/GCHashTable.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/RequiredDefines.h', |
| '../public/RootingAPI.h', |
| '../public/SliceBudget.h', |
| '../public/StructuredClone.h', |
| '../public/TraceableVector.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/Utility.h', |
| '../public/Value.h', |
| '../public/Vector.h', |
| '../public/WeakMapPtr.h', |
| ] |
| |
| UNIFIED_SOURCES += [ |
| 'asmjs/AsmJSFrameIterator.cpp', |
| 'asmjs/AsmJSLink.cpp', |
| 'asmjs/AsmJSModule.cpp', |
| 'asmjs/AsmJSSignalHandlers.cpp', |
| 'asmjs/AsmJSValidate.cpp', |
| 'asmjs/WasmGenerator.cpp', |
| 'asmjs/WasmIonCompile.cpp', |
| 'asmjs/WasmStubs.cpp', |
| 'builtin/AtomicsObject.cpp', |
| 'builtin/Eval.cpp', |
| 'builtin/Intl.cpp', |
| 'builtin/MapObject.cpp', |
| 'builtin/ModuleObject.cpp', |
| 'builtin/Object.cpp', |
| 'builtin/Profilers.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', |
| 'frontend/BytecodeCompiler.cpp', |
| 'frontend/BytecodeEmitter.cpp', |
| 'frontend/FoldConstants.cpp', |
| 'frontend/NameFunctions.cpp', |
| 'frontend/ParseMaps.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/AlignmentMaskAnalysis.cpp', |
| 'jit/BacktrackingAllocator.cpp', |
| 'jit/Bailouts.cpp', |
| 'jit/BaselineBailouts.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/CodeGenerator.cpp', |
| 'jit/CompileWrappers.cpp', |
| 'jit/Disassembler.cpp', |
| 'jit/EagerSimdUnbox.cpp', |
| 'jit/EdgeCaseAnalysis.cpp', |
| 'jit/EffectiveAddressAnalysis.cpp', |
| 'jit/ExecutableAllocator.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/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/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', |
| 'jsalloc.cpp', |
| 'jsapi.cpp', |
| 'jsbool.cpp', |
| 'jscntxt.cpp', |
| 'jscompartment.cpp', |
| 'jsdate.cpp', |
| 'jsdtoa.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/DirectProxyHandler.cpp', |
| 'proxy/OpaqueCrossCompartmentWrapper.cpp', |
| 'proxy/Proxy.cpp', |
| 'proxy/ScriptedDirectProxyHandler.cpp', |
| 'proxy/ScriptedIndirectProxyHandler.cpp', |
| 'proxy/SecurityWrapper.cpp', |
| 'proxy/Wrapper.cpp', |
| 'vm/ArgumentsObject.cpp', |
| 'vm/ArrayBufferObject.cpp', |
| 'vm/CallNonGenericMethod.cpp', |
| 'vm/CharacterEncoding.cpp', |
| 'vm/CodeCoverage.cpp', |
| 'vm/Compression.cpp', |
| 'vm/DateTime.cpp', |
| 'vm/Debugger.cpp', |
| 'vm/DebuggerMemory.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/Monitor.cpp', |
| 'vm/NativeObject.cpp', |
| 'vm/ObjectGroup.cpp', |
| 'vm/PIC.cpp', |
| 'vm/Printer.cpp', |
| 'vm/Probes.cpp', |
| 'vm/ProxyObject.cpp', |
| 'vm/ReceiverGuard.cpp', |
| 'vm/RegExpObject.cpp', |
| 'vm/RegExpStatics.cpp', |
| 'vm/Runtime.cpp', |
| 'vm/SavedStacks.cpp', |
| 'vm/ScopeObject.cpp', |
| 'vm/SelfHosting.cpp', |
| 'vm/Shape.cpp', |
| 'vm/SharedArrayObject.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/UnboxedObject.cpp', |
| 'vm/Unicode.cpp', |
| 'vm/Value.cpp', |
| 'vm/WeakMapPtr.cpp', |
| 'vm/Xdr.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. |
| # 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', |
| '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' |
| ] |
| 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 += [ |
| 'jit/ExecutableAllocatorWin.cpp', |
| ] |
| # _CRT_RAND_S must be #defined before #including stdlib.h to get rand_s() |
| DEFINES['_CRT_RAND_S'] = True |
| else: |
| SOURCES += [ |
| 'jit/ExecutableAllocatorPosix.cpp', |
| ] |
| |
| if CONFIG['JS_HAS_CTYPES']: |
| SOURCES += [ |
| 'ctypes/CTypes.cpp', |
| 'ctypes/Library.cpp', |
| ] |
| if not CONFIG['MOZ_NATIVE_FFI']: |
| LOCAL_INCLUDES += [ |
| '!ctypes/libffi/include', |
| ] |
| |
| if CONFIG['MOZ_VTUNE']: |
| SOURCES += [ |
| 'vtune/jitprofiling.c' |
| ] |
| |
| if CONFIG['HAVE_LINUX_PERF_EVENT_H']: |
| SOURCES += [ |
| 'perf/pm_linux.cpp' |
| ] |
| SOURCES['perf/pm_linux.cpp'].flags += [CONFIG['LINUX_HEADERS_INCLUDES']] |
| else: |
| SOURCES += [ |
| 'perf/pm_stub.cpp' |
| ] |
| |
| HostSimplePrograms([ |
| 'host_jskwgen', |
| ]) |
| |
| # 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['JS_HAS_CTYPES']: |
| USE_LIBS += [ |
| 'ffi', |
| ] |
| |
| if CONFIG['ENABLE_INTL_API']: |
| USE_LIBS += [ |
| 'icu', |
| ] |
| |
| USE_LIBS += [ |
| 'nspr', |
| 'zlib', |
| ] |
| |
| if CONFIG['MOZ_ETW']: |
| GENERATED_FILES = [ |
| 'ETWProvider.h', |
| ] |
| # This will get the ETW provider resources into the library mozjs.dll |
| RESFILE = 'ETWProvider.res' |
| |
| if CONFIG['NIGHTLY_BUILD']: |
| DEFINES['ENABLE_BINARYDATA'] = True |
| 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) |
| CXXFLAGS += ['-wd4273'] # FIXME: inconsistent dll linkage (bug 1229666) |
| |
| 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', |
| ] |
| |
| CFLAGS += CONFIG['MOZ_ICU_CFLAGS'] |
| CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS'] |
| LOCAL_INCLUDES += CONFIG['MOZ_ICU_INCLUDES'] |
| |
| NO_EXPAND_LIBS = True |
| |
| DIST_INSTALL = True |
| |
| # Prepare self-hosted JS code for embedding |
| GENERATED_FILES += ['selfhosted.out.h'] |
| selfhosted = GENERATED_FILES['selfhosted.out.h'] |
| selfhosted.script = 'builtin/embedjs.py:generate_selfhosted' |
| selfhosted.inputs = [ |
| 'js.msg', |
| 'builtin/TypedObjectConstants.h', |
| 'builtin/SelfHostingDefines.h', |
| 'builtin/Utilities.js', |
| 'builtin/Array.js', |
| 'builtin/Date.js', |
| 'builtin/Error.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/String.js', |
| 'builtin/Set.js', |
| 'builtin/TypedArray.js', |
| 'builtin/TypedObject.js', |
| 'builtin/WeakSet.js' |
| ] |
| |
| if CONFIG['JS_HAS_CTYPES']: |
| if CONFIG['MOZ_NATIVE_FFI']: |
| CXXFLAGS += CONFIG['MOZ_FFI_CFLAGS'] |
| else: |
| # Windows needs this to be linked with a static library. |
| DEFINES['FFI_BUILDING'] = True |