diff --git a/js/src/builtin/moz.build b/js/src/builtin/moz.build new file mode 100644 index 000000000..ebf9318db --- /dev/null +++ b/js/src/builtin/moz.build @@ -0,0 +1,73 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'AtomicsObject.cpp', + 'Eval.cpp', + 'Intl.cpp', + 'MapObject.cpp', + 'ModuleObject.cpp', + 'Object.cpp', + 'Profilers.cpp', + 'Promise.cpp', + 'Reflect.cpp', + 'ReflectParse.cpp', + 'RegExp.cpp', + 'SIMD.cpp', + 'SymbolObject.cpp', + 'TestingFunctions.cpp', + 'TypedObject.cpp', + 'WeakMapObject.cpp', + 'WeakSetObject.cpp', +] + +if CONFIG['_MSC_VER']: + if CONFIG['CPU_ARCH'] == 'x86': + SOURCES['RegExp.cpp'].no_pgo = True # Bug 772303 + +# Prepare self-hosted JS code for embedding +GENERATED_FILES += [('selfhosted.out.h', 'selfhosted.js')] +selfhosted = GENERATED_FILES[('selfhosted.out.h', 'selfhosted.js')] +selfhosted.script = 'embedjs.py:generate_selfhosted' +selfhosted.inputs = [ + '../js.msg', + 'TypedObjectConstants.h', + 'SelfHostingDefines.h', + 'Utilities.js', + 'Array.js', + 'AsyncIteration.js', + 'Classes.js', + 'Date.js', + 'Error.js', + 'Function.js', + 'Generator.js', + 'Intl.js', + 'IntlData.js', + 'Iterator.js', + 'Map.js', + 'Module.js', + 'Number.js', + 'Object.js', + 'Promise.js', + 'Reflect.js', + 'RegExp.js', + 'RegExpGlobalReplaceOpt.h.js', + 'RegExpLocalReplaceOpt.h.js', + 'String.js', + 'Set.js', + 'Sorting.js', + 'TypedArray.js', + 'TypedObject.js', + 'WeakMap.js', + 'WeakSet.js', +] diff --git a/js/src/ctypes/moz.build b/js/src/ctypes/moz.build new file mode 100644 index 000000000..5bea399f3 --- /dev/null +++ b/js/src/ctypes/moz.build @@ -0,0 +1,26 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'CTypes.cpp', + 'Library.cpp', +] + +if not CONFIG['MOZ_SYSTEM_FFI']: + LOCAL_INCLUDES += [ + '!libffi/include', + 'libffi/src/%s' % CONFIG['FFI_TARGET_DIR'], + ] + +if CONFIG['_MSC_VER'] and CONFIG['CPU_ARCH'] == 'x86_64': + SOURCES['CTypes.cpp'].no_pgo = True # Bug 810661 \ No newline at end of file diff --git a/js/src/devtools/moz.build b/js/src/devtools/moz.build new file mode 100644 index 000000000..cb2fc3256 --- /dev/null +++ b/js/src/devtools/moz.build @@ -0,0 +1,25 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +CONFIGURE_SUBST_FILES += [ + 'rootAnalysis/Makefile', +] + +SOURCES += [ + 'sharkctl.cpp', +] + +if CONFIG['MOZ_INSTRUMENTS']: + SOURCES += [ + 'Instruments.cpp', + ] diff --git a/js/src/ds/moz.build b/js/src/ds/moz.build new file mode 100644 index 000000000..a0b869706 --- /dev/null +++ b/js/src/ds/moz.build @@ -0,0 +1,17 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'LifoAlloc.cpp', + 'MemoryProtectionExceptionHandler.cpp', +] \ No newline at end of file diff --git a/js/src/frontend/moz.build b/js/src/frontend/moz.build new file mode 100644 index 000000000..55037dd5a --- /dev/null +++ b/js/src/frontend/moz.build @@ -0,0 +1,27 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'BytecodeCompiler.cpp', + 'BytecodeEmitter.cpp', + 'FoldConstants.cpp', + 'NameFunctions.cpp', + 'ParseNode.cpp', + 'Parser.cpp', + 'TokenStream.cpp', +] + +GENERATED_FILES += ['ReservedWordsGenerated.h'] +ReservedWordsGenerated = GENERATED_FILES['ReservedWordsGenerated.h'] +ReservedWordsGenerated.script = 'GenerateReservedWords.py' +ReservedWordsGenerated.inputs += ['ReservedWords.h'] \ No newline at end of file diff --git a/js/src/gc/moz.build b/js/src/gc/moz.build new file mode 100644 index 000000000..d33dfb007 --- /dev/null +++ b/js/src/gc/moz.build @@ -0,0 +1,31 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'Allocator.cpp', + 'Barrier.cpp', + 'GCTrace.cpp', + 'Iteration.cpp', + 'Marking.cpp', + 'Memory.cpp', + 'MemoryProfiler.cpp', + 'Nursery.cpp', + 'RootMarking.cpp', + 'Statistics.cpp', + 'StoreBuffer.cpp', + 'Tracer.cpp', + 'Zone.cpp', +] + +if CONFIG['MOZ_DEBUG']: + SOURCES += ['Verifier.cpp'] diff --git a/js/src/gdb/moz.build b/js/src/gdb/moz.build index a2e935624..01f6cb0b6 100644 --- a/js/src/gdb/moz.build +++ b/js/src/gdb/moz.build @@ -5,6 +5,8 @@ GeckoProgram('gdb-tests', linkage=None) +include('../js-cxxflags.mozbuild') + UNIFIED_SOURCES += [ 'gdb-tests.cpp', 'tests/test-asmjs.cpp', @@ -40,13 +42,6 @@ if CONFIG['MOZ_ICU_DATA_ARCHIVE']: OS_LIBS += CONFIG['MOZ_ZLIB_LIBS'] -if CONFIG['GNU_CXX']: - CXXFLAGS += ['-Wno-shadow', '-fno-strict-aliasing'] - -# This is intended as a temporary workaround to enable VS2015. -if CONFIG['_MSC_VER']: - CXXFLAGS += ['-wd4312'] - DEFINES['topsrcdir'] = '%s/js/src' % TOPSRCDIR FINAL_TARGET_PP_FILES += ['gdb-tests-gdb.py.in'] OBJDIR_FILES.js.src.gdb += ['!/dist/bin/gdb-tests-gdb.py'] diff --git a/js/src/irregexp/moz.build b/js/src/irregexp/moz.build new file mode 100644 index 000000000..fc4fe6218 --- /dev/null +++ b/js/src/irregexp/moz.build @@ -0,0 +1,23 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'NativeRegExpMacroAssembler.cpp', + 'RegExpAST.cpp', + 'RegExpCharacters.cpp', + 'RegExpEngine.cpp', + 'RegExpInterpreter.cpp', + 'RegExpMacroAssembler.cpp', + 'RegExpParser.cpp', + 'RegExpStack.cpp', +] \ No newline at end of file diff --git a/js/src/jit/moz.build b/js/src/jit/moz.build new file mode 100644 index 000000000..e8b463112 --- /dev/null +++ b/js/src/jit/moz.build @@ -0,0 +1,233 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +UNIFIED_SOURCES += [ + 'AliasAnalysis.cpp', + 'AliasAnalysisShared.cpp', + 'AlignmentMaskAnalysis.cpp', + 'BacktrackingAllocator.cpp', + 'Bailouts.cpp', + 'BaselineBailouts.cpp', + 'BaselineCacheIR.cpp', + 'BaselineCompiler.cpp', + 'BaselineDebugModeOSR.cpp', + 'BaselineFrame.cpp', + 'BaselineFrameInfo.cpp', + 'BaselineIC.cpp', + 'BaselineInspector.cpp', + 'BaselineJIT.cpp', + 'BitSet.cpp', + 'BytecodeAnalysis.cpp', + 'C1Spewer.cpp', + 'CacheIR.cpp', + 'CodeGenerator.cpp', + 'CompileWrappers.cpp', + 'EagerSimdUnbox.cpp', + 'EdgeCaseAnalysis.cpp', + 'EffectiveAddressAnalysis.cpp', + 'ExecutableAllocator.cpp', + 'FlowAliasAnalysis.cpp', + 'FoldLinearArithConstants.cpp', + 'InstructionReordering.cpp', + 'Ion.cpp', + 'IonAnalysis.cpp', + 'IonBuilder.cpp', + 'IonCaches.cpp', + 'IonOptimizationLevels.cpp', + 'JitcodeMap.cpp', + 'JitFrames.cpp', + 'JitOptions.cpp', + 'JitSpewer.cpp', + 'JSONSpewer.cpp', + 'LICM.cpp', + 'Linker.cpp', + 'LIR.cpp', + 'LoopUnroller.cpp', + 'Lowering.cpp', + 'MacroAssembler.cpp', + 'MCallOptimize.cpp', + 'MIR.cpp', + 'MIRGraph.cpp', + 'MoveResolver.cpp', + 'OptimizationTracking.cpp', + 'PerfSpewer.cpp', + 'ProcessExecutableMemory.cpp', + 'RangeAnalysis.cpp', + 'Recover.cpp', + 'RegisterAllocator.cpp', + 'RematerializedFrame.cpp', + 'Safepoints.cpp', + 'ScalarReplacement.cpp', + 'shared/BaselineCompiler-shared.cpp', + 'shared/CodeGenerator-shared.cpp', + 'shared/Lowering-shared.cpp', + 'SharedIC.cpp', + 'Sink.cpp', + 'Snapshots.cpp', + 'StupidAllocator.cpp', + 'TypedObjectPrediction.cpp', + 'TypePolicy.cpp', + 'ValueNumbering.cpp', + 'VMFunctions.cpp', + 'WasmBCE.cpp', +] + +if CONFIG['MOZ_DEBUG']: + UNIFIED_SOURCES += ['Disassembler.cpp'] + +if not CONFIG['ENABLE_ION']: + UNIFIED_SOURCES += [ + 'none/Trampoline-none.cpp' + ] +elif CONFIG['JS_CODEGEN_X86'] or CONFIG['JS_CODEGEN_X64']: + UNIFIED_SOURCES += [ + 'x86-shared/Architecture-x86-shared.cpp', + 'x86-shared/Assembler-x86-shared.cpp', + 'x86-shared/AssemblerBuffer-x86-shared.cpp', + 'x86-shared/BaselineCompiler-x86-shared.cpp', + 'x86-shared/BaselineIC-x86-shared.cpp', + 'x86-shared/CodeGenerator-x86-shared.cpp', + 'x86-shared/Lowering-x86-shared.cpp', + 'x86-shared/MacroAssembler-x86-shared.cpp', + 'x86-shared/MoveEmitter-x86-shared.cpp', + ] + UNIFIED_SOURCES += [ + 'x86-shared/Disassembler-x86-shared.cpp', # using namespace js::jit::X86Encoding; + ] + if CONFIG['JS_CODEGEN_X64']: + UNIFIED_SOURCES += [ + 'x64/Assembler-x64.cpp', + 'x64/Bailouts-x64.cpp', + 'x64/BaselineCompiler-x64.cpp', + 'x64/BaselineIC-x64.cpp', + 'x64/CodeGenerator-x64.cpp', + 'x64/Lowering-x64.cpp', + 'x64/MacroAssembler-x64.cpp', + 'x64/SharedIC-x64.cpp', + 'x64/Trampoline-x64.cpp', + ] + else: + UNIFIED_SOURCES += [ + 'x86/Assembler-x86.cpp', + 'x86/Bailouts-x86.cpp', + 'x86/BaselineCompiler-x86.cpp', + 'x86/BaselineIC-x86.cpp', + 'x86/CodeGenerator-x86.cpp', + 'x86/Lowering-x86.cpp', + 'x86/MacroAssembler-x86.cpp', + 'x86/SharedIC-x86.cpp', + 'x86/Trampoline-x86.cpp', + ] +elif CONFIG['JS_CODEGEN_ARM']: + UNIFIED_SOURCES += [ + 'arm/Architecture-arm.cpp', + 'arm/Assembler-arm.cpp', + 'arm/Bailouts-arm.cpp', + 'arm/BaselineCompiler-arm.cpp', + 'arm/BaselineIC-arm.cpp', + 'arm/CodeGenerator-arm.cpp', + 'arm/disasm/Constants-arm.cpp', + 'arm/disasm/Disasm-arm.cpp', + 'arm/Lowering-arm.cpp', + 'arm/MacroAssembler-arm.cpp', + 'arm/MoveEmitter-arm.cpp', + 'arm/SharedIC-arm.cpp', + 'arm/Trampoline-arm.cpp', + ] + if CONFIG['JS_SIMULATOR_ARM']: + UNIFIED_SOURCES += [ + 'arm/Simulator-arm.cpp' + ] + elif CONFIG['OS_ARCH'] == 'Darwin': + UNIFIED_SOURCES += [ + 'arm/llvm-compiler-rt/arm/aeabi_idivmod.S', + 'arm/llvm-compiler-rt/arm/aeabi_uidivmod.S', + ] +elif CONFIG['JS_CODEGEN_ARM64']: + UNIFIED_SOURCES += [ + 'arm64/Architecture-arm64.cpp', + 'arm64/Assembler-arm64.cpp', + 'arm64/Bailouts-arm64.cpp', + 'arm64/BaselineIC-arm64.cpp', + 'arm64/CodeGenerator-arm64.cpp', + 'arm64/Lowering-arm64.cpp', + 'arm64/MacroAssembler-arm64.cpp', + 'arm64/MoveEmitter-arm64.cpp', + 'arm64/SharedIC-arm64.cpp', + 'arm64/Trampoline-arm64.cpp', + 'arm64/vixl/Assembler-vixl.cpp', + 'arm64/vixl/Cpu-vixl.cpp', + 'arm64/vixl/Decoder-vixl.cpp', + 'arm64/vixl/Disasm-vixl.cpp', + 'arm64/vixl/Instructions-vixl.cpp', + 'arm64/vixl/Instrument-vixl.cpp', + 'arm64/vixl/MacroAssembler-vixl.cpp', + 'arm64/vixl/MozAssembler-vixl.cpp', + 'arm64/vixl/MozInstructions-vixl.cpp', + 'arm64/vixl/Utils-vixl.cpp' + ] + if CONFIG['JS_SIMULATOR_ARM64']: + UNIFIED_SOURCES += [ + 'arm64/vixl/Debugger-vixl.cpp', + 'arm64/vixl/Logic-vixl.cpp', + 'arm64/vixl/MozSimulator-vixl.cpp', + 'arm64/vixl/Simulator-vixl.cpp' + ] +elif CONFIG['JS_CODEGEN_MIPS32'] or CONFIG['JS_CODEGEN_MIPS64']: + UNIFIED_SOURCES += [ + 'mips-shared/Architecture-mips-shared.cpp', + 'mips-shared/Assembler-mips-shared.cpp', + 'mips-shared/Bailouts-mips-shared.cpp', + 'mips-shared/BaselineCompiler-mips-shared.cpp', + 'mips-shared/BaselineIC-mips-shared.cpp', + 'mips-shared/CodeGenerator-mips-shared.cpp', + 'mips-shared/Lowering-mips-shared.cpp', + 'mips-shared/MacroAssembler-mips-shared.cpp', + 'mips-shared/MoveEmitter-mips-shared.cpp', + ] + if CONFIG['JS_CODEGEN_MIPS32']: + UNIFIED_SOURCES += [ + 'mips32/Architecture-mips32.cpp', + 'mips32/Assembler-mips32.cpp', + 'mips32/Bailouts-mips32.cpp', + 'mips32/BaselineCompiler-mips32.cpp', + 'mips32/BaselineIC-mips32.cpp', + 'mips32/CodeGenerator-mips32.cpp', + 'mips32/Lowering-mips32.cpp', + 'mips32/MacroAssembler-mips32.cpp', + 'mips32/MoveEmitter-mips32.cpp', + 'mips32/SharedIC-mips32.cpp', + 'mips32/Trampoline-mips32.cpp', + ] + if CONFIG['JS_SIMULATOR_MIPS32']: + UNIFIED_SOURCES += [ + 'mips32/Simulator-mips32.cpp' + ] + elif CONFIG['JS_CODEGEN_MIPS64']: + UNIFIED_SOURCES += [ + 'mips64/Architecture-mips64.cpp', + 'mips64/Assembler-mips64.cpp', + 'mips64/Bailouts-mips64.cpp', + 'mips64/BaselineCompiler-mips64.cpp', + 'mips64/BaselineIC-mips64.cpp', + 'mips64/CodeGenerator-mips64.cpp', + 'mips64/Lowering-mips64.cpp', + 'mips64/MacroAssembler-mips64.cpp', + 'mips64/MoveEmitter-mips64.cpp', + 'mips64/SharedIC-mips64.cpp', + 'mips64/Trampoline-mips64.cpp', + ] + if CONFIG['JS_SIMULATOR_MIPS64']: + UNIFIED_SOURCES += [ + 'mips64/Simulator-mips64.cpp' + ] diff --git a/js/src/js-config.mozbuild b/js/src/js-config.mozbuild new file mode 100644 index 000000000..4166c0ad1 --- /dev/null +++ b/js/src/js-config.mozbuild @@ -0,0 +1,34 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +FILES_PER_UNIFIED_FILE = 6 + +# Also set in shell/moz.build +DEFINES['ENABLE_SHARED_ARRAY_BUFFER'] = True + +DEFINES['EXPORT_JS_API'] = True + +if CONFIG['NIGHTLY_BUILD']: + DEFINES['ENABLE_BINARYDATA'] = True + +if CONFIG['NIGHTLY_BUILD']: + DEFINES['ENABLE_SIMD'] = 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['JS_HAS_CTYPES']: + if not CONFIG['MOZ_SYSTEM_FFI']: + # Windows needs this to be linked with a static library. + DEFINES['FFI_BUILDING'] = True + +if CONFIG['OS_ARCH'] == 'WINNT': + DEFINES['_CRT_RAND_S'] = True + DEFINES['NOMINMAX'] = True \ No newline at end of file diff --git a/js/src/js-cxxflags.mozbuild b/js/src/js-cxxflags.mozbuild new file mode 100644 index 000000000..3cab923f1 --- /dev/null +++ b/js/src/js-cxxflags.mozbuild @@ -0,0 +1,42 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +CFLAGS += CONFIG['MOZ_ICU_CFLAGS'] +CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS'] + +if CONFIG['_MSC_VER']: + # Prevent floating point errors caused by VC++ optimizations + CFLAGS += ['-fp:precise'] + CXXFLAGS += ['-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', '-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', '-wd4312'] + +if CONFIG['GNU_CXX']: + # Disable strict-aliasing for GCC, which is enabled by default + # starting with version 7.1, see Mozilla bug 1363009. + CXXFLAGS += ['-Wno-shadow', '-Werror=format', '-fno-strict-aliasing'] + +if CONFIG['JS_HAS_CTYPES'] and CONFIG['MOZ_SYSTEM_FFI']: + CXXFLAGS += CONFIG['MOZ_FFI_CFLAGS'] + +if CONFIG['JS_CODEGEN_ARM'] and CONFIG['JS_SIMULATOR_ARM']: + # Configuration used only for testing. + if CONFIG['OS_ARCH'] == 'Linux' or CONFIG['OS_ARCH'] == 'Darwin': + CXXFLAGS += [ '-msse2', '-mfpmath=sse' ] \ No newline at end of file diff --git a/js/src/js-testing.mozbuild b/js/src/js-testing.mozbuild new file mode 100644 index 000000000..a880d9831 --- /dev/null +++ b/js/src/js-testing.mozbuild @@ -0,0 +1,48 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +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') + +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 + +TEST_DIRS += ['jsapi-tests', 'tests', 'gdb'] \ No newline at end of file diff --git a/js/src/jsapi-tests/moz.build b/js/src/jsapi-tests/moz.build index 378b2ed7f..35bc69b85 100644 --- a/js/src/jsapi-tests/moz.build +++ b/js/src/jsapi-tests/moz.build @@ -3,6 +3,8 @@ # 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/. +include(../js-cxxflags.mozbuild) + GeckoProgram('jsapi-tests', linkage=None) UNIFIED_SOURCES += [ @@ -142,12 +144,5 @@ USE_LIBS += [ OS_LIBS += CONFIG['MOZ_ZLIB_LIBS'] -if CONFIG['GNU_CXX']: - CXXFLAGS += ['-Wno-shadow', '-Werror=format', '-fno-strict-aliasing'] - -# This is intended as a temporary workaround to enable VS2015. -if CONFIG['_MSC_VER']: - CXXFLAGS += ['-wd4312'] - DEFINES['topsrcdir'] = '%s/js/src' % TOPSRCDIR OBJDIR_PP_FILES.js.src['jsapi-tests'] += ['jsapi-tests-gdb.py.in'] diff --git a/js/src/moz.build b/js/src/moz.build index 24ad2084e..b33965b66 100644 --- a/js/src/moz.build +++ b/js/src/moz.build @@ -3,65 +3,15 @@ # 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'] +include('js-config.mozbuild') +include('js-cxxflags.mozbuild') +include('js-testing.mozbuild') CONFIGURE_SUBST_FILES += [ - 'devtools/rootAnalysis/Makefile', 'js-config', 'js.pc', ] + CONFIGURE_DEFINE_FILES += [ 'js-confdefs.h', ] @@ -80,7 +30,6 @@ CONFIGURE_DEFINE_FILES += [ if CONFIG['HAVE_DTRACE']: GENERATED_FILES += ['javascript-trace.h'] - EXPORTS += ['!javascript-trace.h'] # Changes to internal header files, used externally, massively slow down @@ -101,7 +50,6 @@ EXPORTS += [ '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 @@ -154,122 +102,33 @@ EXPORTS.js += [ '../public/WeakMapPtr.h', ] -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/RegExpCharacters.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', +DIRS += [ + 'builtin', + 'devtools', + 'ds', + 'frontend', + 'gc', + 'irregexp', + 'jit', + 'perf', + 'proxy', + 'threading', + 'wasm', +] + +if CONFIG['JS_HAS_CTYPES']: + DIRS += ['ctypes'] + +if CONFIG['JS_BUNDLED_EDITLINE']: + DIRS += ['editline'] + +if not CONFIG['JS_DISABLE_SHELL']: + DIRS += ['shell'] + +if CONFIG['MOZ_VTUNE']: + DIRS += ['vtune'] + +UNIFIED_SOURCES += [ 'jsalloc.cpp', 'jsapi.cpp', 'jsbool.cpp', @@ -291,16 +150,23 @@ SOURCES += [ 'jsscript.cpp', 'jsstr.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', +] + +# Can't be built unified +SOURCES += [ + 'jsarray.cpp', + 'jsatom.cpp', + 'jsdtoa.cpp', + 'jsmath.cpp', + 'jsutil.cpp', +] + +# Suppress warnings in third-party code. +# We are keeping this in the main moz.build because it is file specific +if CONFIG['CLANG_CXX'] or CONFIG['GNU_CXX']: + SOURCES['jsdtoa.cpp'].flags += ['-Wno-implicit-fallthrough'] + +UNIFIED_SOURCES += [ 'vm/ArgumentsObject.cpp', 'vm/ArrayBufferObject.cpp', 'vm/AsyncFunction.cpp', @@ -359,273 +225,26 @@ SOURCES += [ '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. +# Can't be built unified 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']: - SOURCES += [ + UNIFIED_SOURCES += [ 'vm/PosixNSPR.cpp', ] -if CONFIG['MOZ_INSTRUMENTS']: - SOURCES += [ - 'devtools/Instruments.cpp', - ] - if CONFIG['ENABLE_TRACE_LOGGING']: + # Can't be built unified SOURCES += [ 'vm/TraceLogging.cpp', 'vm/TraceLoggingGraph.cpp', 'vm/TraceLoggingTypes.cpp', ] -if not CONFIG['ENABLE_ION']: - SOURCES += [ - 'jit/none/Trampoline-none.cpp' - ] -elif CONFIG['JS_CODEGEN_X86'] or CONFIG['JS_CODEGEN_X64']: - 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']: - 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: - 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']: - 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']: - 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']: - 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']: - 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']: - 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']: - 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']: - SOURCES += [ - 'jit/mips32/Simulator-mips32.cpp' - ] - elif CONFIG['JS_CODEGEN_MIPS64']: - 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']: - 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 += ['frontend/ReservedWordsGenerated.h'] -ReservedWordsGenerated = GENERATED_FILES['frontend/ReservedWordsGenerated.h'] -ReservedWordsGenerated.script = 'frontend/GenerateReservedWords.py' -ReservedWordsGenerated.inputs += [ - 'frontend/ReservedWords.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, @@ -661,65 +280,14 @@ USE_LIBS += [ '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 - CFLAGS += ['-fp:precise'] - CXXFLAGS += ['-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'): - OS_LIBS += [ - 'm', - ] + OS_LIBS += ['m'] if CONFIG['OS_ARCH'] == 'FreeBSD': - OS_LIBS += [ - '-pthread', - ] + OS_LIBS += ['-pthread'] if CONFIG['OS_ARCH'] == 'Linux': - OS_LIBS += [ - 'dl', - ] + OS_LIBS += ['dl'] if CONFIG['OS_ARCH'] == 'SunOS': OS_LIBS += [ @@ -731,65 +299,8 @@ if CONFIG['OS_ARCH'] == 'SunOS': 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/AsyncIteration.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/Promise.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['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']: - # Disable strict-aliasing for GCC, which is enabled by default - # starting with version 7.1, see Mozilla bug 1363009. - CXXFLAGS += ['-Wno-shadow', '-Werror=format', '-fno-strict-aliasing'] - -# Suppress warnings in third-party code. -if CONFIG['CLANG_CXX'] or CONFIG['GNU_CXX']: - SOURCES['jsdtoa.cpp'].flags += ['-Wno-implicit-fallthrough'] - -if CONFIG['OS_ARCH'] == 'WINNT': - DEFINES['NOMINMAX'] = True diff --git a/js/src/perf/moz.build b/js/src/perf/moz.build new file mode 100644 index 000000000..f0dd7e1d6 --- /dev/null +++ b/js/src/perf/moz.build @@ -0,0 +1,29 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +EXPORTS += ['jsperf.h'] + +SOURCES += [ + 'jsperf.cpp', +] + +if CONFIG['HAVE_LINUX_PERF_EVENT_H']: + SOURCES += [ + 'pm_linux.cpp' + ] + if CONFIG['LINUX_HEADERS_INCLUDES']: + SOURCES['pm_linux.cpp'].flags += [CONFIG['LINUX_HEADERS_INCLUDES']] +else: + SOURCES += [ + 'pm_stub.cpp' + ] \ No newline at end of file diff --git a/js/src/proxy/moz.build b/js/src/proxy/moz.build new file mode 100644 index 000000000..72082df85 --- /dev/null +++ b/js/src/proxy/moz.build @@ -0,0 +1,23 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'BaseProxyHandler.cpp', + 'CrossCompartmentWrapper.cpp', + 'DeadObjectProxy.cpp', + 'OpaqueCrossCompartmentWrapper.cpp', + 'Proxy.cpp', + 'ScriptedProxyHandler.cpp', + 'SecurityWrapper.cpp', + 'Wrapper.cpp', +] diff --git a/js/src/shell/moz.build b/js/src/shell/moz.build index 7c861fb0d..93812da74 100644 --- a/js/src/shell/moz.build +++ b/js/src/shell/moz.build @@ -3,6 +3,8 @@ # 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/. +include('../js-cxxflags.mozbuild') + if CONFIG['JS_SHELL_NAME']: GeckoProgram(CONFIG['JS_SHELL_NAME'], linkage=None) if CONFIG['JS_BUNDLED_EDITLINE']: @@ -49,13 +51,6 @@ shellmoduleloader.inputs = [ 'ModuleLoader.js', ] -if CONFIG['GNU_CXX']: - CXXFLAGS += ['-Wno-shadow', '-Werror=format'] - -# This is intended as a temporary workaround to enable VS2015. -if CONFIG['_MSC_VER']: - CXXFLAGS += ['-wd4312'] - # Place a GDB Python auto-load file next to the shell executable, both in # the build directory and in the dist/bin directory. DEFINES['topsrcdir'] = '%s/js/src' % TOPSRCDIR diff --git a/js/src/threading/moz.build b/js/src/threading/moz.build new file mode 100644 index 000000000..97673d0c6 --- /dev/null +++ b/js/src/threading/moz.build @@ -0,0 +1,30 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += [ + 'Mutex.cpp', +] + +if CONFIG['OS_ARCH'] == 'WINNT': + SOURCES += [ + 'windows/ConditionVariable.cpp', + 'windows/MutexImpl.cpp', + 'windows/Thread.cpp', + ] + # _CRT_RAND_S must be #defined before #including stdlib.h to get rand_s() +else: + SOURCES += [ + 'posix/ConditionVariable.cpp', + 'posix/MutexImpl.cpp', + 'posix/Thread.cpp', + ] \ No newline at end of file diff --git a/js/src/vm/SelfHosting.cpp b/js/src/vm/SelfHosting.cpp index b7d62efc1..dc1dfb9fa 100644 --- a/js/src/vm/SelfHosting.cpp +++ b/js/src/vm/SelfHosting.cpp @@ -20,8 +20,8 @@ #include "jsstr.h" #include "jsweakmap.h" #include "jswrapper.h" -#include "selfhosted.out.h" +#include "builtin/selfhosted.out.h" #include "builtin/Intl.h" #include "builtin/MapObject.h" #include "builtin/ModuleObject.h" diff --git a/js/src/vtune/moz.build b/js/src/vtune/moz.build new file mode 100644 index 000000000..465919795 --- /dev/null +++ b/js/src/vtune/moz.build @@ -0,0 +1,14 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +SOURCES += ['jitprofiling.c'] \ No newline at end of file diff --git a/js/src/wasm/moz.build b/js/src/wasm/moz.build new file mode 100644 index 000000000..5fe046add --- /dev/null +++ b/js/src/wasm/moz.build @@ -0,0 +1,39 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# 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/. + +include('../js-config.mozbuild') +include('../js-cxxflags.mozbuild') + +FINAL_LIBRARY = "js" + +# Includes should be relative to parent path +LOCAL_INCLUDES += ["!..", ".."] + +UNIFIED_SOURCES += [ + 'AsmJS.cpp', + 'WasmBaselineCompile.cpp', + 'WasmBinaryFormat.cpp', + 'WasmBinaryToAST.cpp', + 'WasmBinaryToExperimentalText.cpp', + 'WasmBinaryToText.cpp', + 'WasmCode.cpp', + 'WasmCompartment.cpp', + 'WasmCompile.cpp', + 'WasmFrameIterator.cpp', + 'WasmGenerator.cpp', + 'WasmInstance.cpp', + 'WasmIonCompile.cpp', + 'WasmJS.cpp', + 'WasmModule.cpp', + 'WasmSignalHandlers.cpp', + 'WasmStubs.cpp', + 'WasmTable.cpp', + 'WasmTextToBinary.cpp', + 'WasmTextUtils.cpp', + 'WasmTypes.cpp' +] + +if CONFIG['MOZ_DEBUG']: + SOURCES += ['WasmBinaryIterator.cpp'] \ No newline at end of file