# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
{
  'variables': {
    'mozjs_sources': [
      'js/src/builtin/Eval.cpp',
      'js/src/builtin/Intl.cpp',
      'js/src/builtin/MapObject.cpp',
      'js/src/builtin/Module.cpp',
      'js/src/builtin/Object.cpp',
      'js/src/builtin/ParallelArray.cpp',
      'js/src/builtin/Profilers.cpp',
      'js/src/builtin/RegExp.cpp',
      'js/src/builtin/TestingFunctions.cpp',
      'js/src/devtools/sharkctl.cpp',
      'js/src/ds/LifoAlloc.cpp',
      'js/src/frontend/BytecodeCompiler.cpp',
      'js/src/frontend/BytecodeEmitter.cpp',
      'js/src/frontend/FoldConstants.cpp',
      'js/src/frontend/NameFunctions.cpp',
      'js/src/frontend/ParseMaps.cpp',
      'js/src/frontend/ParseNode.cpp',
      'js/src/frontend/Parser.cpp',
      'js/src/frontend/TokenStream.cpp',
      'js/src/gc/Iteration.cpp',
      'js/src/gc/Marking.cpp',
      'js/src/gc/Memory.cpp',
      'js/src/gc/Nursery.cpp',
      'js/src/gc/RootMarking.cpp',
      'js/src/gc/Statistics.cpp',
      'js/src/gc/StoreBuffer.cpp',
      'js/src/gc/Verifier.cpp',
      'js/src/gc/Zone.cpp',
      'js/src/jsalloc.cpp',
      'js/src/jsanalyze.cpp',
      'js/src/jsapi.cpp',
      'js/src/jsarray.cpp',
      'js/src/jsatom.cpp',
      'js/src/jsbool.cpp',
      'js/src/jsclone.cpp',
      'js/src/jscntxt.cpp',
      'js/src/jscompartment.cpp',
      'js/src/jscrashreport.cpp',
      'js/src/jsdate.cpp',
      'js/src/jsdbgapi.cpp',
      'js/src/jsdtoa.cpp',
      'js/src/jsexn.cpp',
      'js/src/jsfriendapi.cpp',
      'js/src/jsfun.cpp',
      'js/src/jsgc.cpp',
      'js/src/jsinfer.cpp',
      'js/src/jsiter.cpp',
      'js/src/jsmath.cpp',
      'js/src/jsmemorymetrics.cpp',
      'js/src/jsnativestack.cpp',
      'js/src/jsnum.cpp',
      'js/src/jsobj.cpp',
      'js/src/json.cpp',
      'js/src/jsonparser.cpp',
      'js/src/jsopcode.cpp',
      'js/src/jsprf.cpp',
      'js/src/jspropertytree.cpp',
      'js/src/jsproxy.cpp',
      'js/src/jsreflect.cpp',
      'js/src/jsscript.cpp',
      'js/src/jsstarboard-time.cpp',
      'js/src/jsstr.cpp',
      'js/src/jstypedarray.cpp',
      'js/src/jsutil.cpp',
      'js/src/jswatchpoint.cpp',
      'js/src/jsweakmap.cpp',
      'js/src/jsworkers.cpp',
      'js/src/jswrapper.cpp',
      'js/src/memory_allocator_reporter.cpp',
      'js/src/perf/jsperf.cpp',
      'js/src/perf/pm_stub.cpp',
      'js/src/prmjtime.cpp',
      'js/src/vm/ArgumentsObject.cpp',
      'js/src/vm/CharacterEncoding.cpp',
      'js/src/vm/DateTime.cpp',
      'js/src/vm/Debugger.cpp',
      'js/src/vm/ForkJoin.cpp',
      'js/src/vm/GlobalObject.cpp',
      'js/src/vm/Interpreter.cpp',
      'js/src/vm/Monitor.cpp',
      'js/src/vm/ObjectImpl.cpp',
      'js/src/vm/Probes.cpp',
      'js/src/vm/PropertyKey.cpp',
      'js/src/vm/RegExpObject.cpp',
      'js/src/vm/RegExpStatics.cpp',
      'js/src/vm/ScopeObject.cpp',
      'js/src/vm/SelfHosting.cpp',
      'js/src/vm/Shape.cpp',
      'js/src/vm/SPSProfiler.cpp',
      'js/src/vm/Stack.cpp',
      'js/src/vm/String.cpp',
      'js/src/vm/StringBuffer.cpp',
      'js/src/vm/ThreadPool.cpp',
      'js/src/vm/Unicode.cpp',
      'js/src/vm/Xdr.cpp',
      'js/src/yarr/OSAllocatorStarboard.cpp',
      'js/src/yarr/PageBlock.cpp',
      'js/src/yarr/YarrCanonicalizeUCS2.cpp',
      'js/src/yarr/YarrInterpreter.cpp',
      'js/src/yarr/YarrJIT.cpp',
      'js/src/yarr/YarrPattern.cpp',
      'js/src/yarr/YarrSyntaxChecker.cpp',
      'mfbt/decimal/Decimal.cpp',
      'mfbt/double-conversion/bignum-dtoa.cc',
      'mfbt/double-conversion/bignum.cc',
      'mfbt/double-conversion/cached-powers.cc',
      'mfbt/double-conversion/diy-fp.cc',
      'mfbt/double-conversion/double-conversion.cc',
      'mfbt/double-conversion/fast-dtoa.cc',
      'mfbt/double-conversion/fixed-dtoa.cc',
      'mfbt/double-conversion/strtod.cc',
      'mfbt/HashFunctions.cpp',
      'mfbt/Poison.cpp',
      'mfbt/SHA1.cpp',
    ],
    'mozjs_jit_sources': [
      'js/src/assembler/jit/ExecutableAllocator.cpp',
      'js/src/assembler/jit/ExecutableAllocatorStarboard.cpp',
      'js/src/jit/AliasAnalysis.cpp',
      'js/src/jit/AsmJS.cpp',
      'js/src/jit/AsmJSLink.cpp',
      'js/src/jit/AsmJSSignalHandlersStarboard.cpp',
      'js/src/jit/BacktrackingAllocator.cpp',
      'js/src/jit/Bailouts.cpp',
      'js/src/jit/BaselineBailouts.cpp',
      'js/src/jit/BaselineCompiler.cpp',
      'js/src/jit/BaselineFrame.cpp',
      'js/src/jit/BaselineFrameInfo.cpp',
      'js/src/jit/BaselineIC.cpp',
      'js/src/jit/BaselineInspector.cpp',
      'js/src/jit/BaselineJIT.cpp',
      'js/src/jit/BitSet.cpp',
      'js/src/jit/BytecodeAnalysis.cpp',
      'js/src/jit/C1Spewer.cpp',
      'js/src/jit/CodeGenerator.cpp',
      'js/src/jit/EdgeCaseAnalysis.cpp',
      'js/src/jit/EffectiveAddressAnalysis.cpp',
      'js/src/jit/Ion.cpp',
      'js/src/jit/IonAnalysis.cpp',
      'js/src/jit/IonBuilder.cpp',
      'js/src/jit/IonCaches.cpp',
      'js/src/jit/IonFrames.cpp',
      'js/src/jit/IonMacroAssembler.cpp',
      'js/src/jit/IonSpewer.cpp',
      'js/src/jit/JSONSpewer.cpp',
      'js/src/jit/LICM.cpp',
      'js/src/jit/LinearScan.cpp',
      'js/src/jit/LIR.cpp',
      'js/src/jit/LiveRangeAllocator.cpp',
      'js/src/jit/Lowering.cpp',
      'js/src/jit/MCallOptimize.cpp',
      'js/src/jit/MIR.cpp',
      'js/src/jit/MIRGraph.cpp',
      'js/src/jit/MoveResolver.cpp',
      'js/src/jit/ParallelArrayAnalysis.cpp',
      'js/src/jit/ParallelFunctions.cpp',
      'js/src/jit/PerfSpewer.cpp',
      'js/src/jit/RangeAnalysis.cpp',
      'js/src/jit/RegisterAllocator.cpp',
      'js/src/jit/Safepoints.cpp',
      'js/src/jit/shared/BaselineCompiler-shared.cpp',
      'js/src/jit/shared/CodeGenerator-shared.cpp',
      'js/src/jit/shared/Lowering-shared.cpp',
      'js/src/jit/Snapshots.cpp',
      'js/src/jit/StupidAllocator.cpp',
      'js/src/jit/TypePolicy.cpp',
      'js/src/jit/UnreachableCodeElimination.cpp',
      'js/src/jit/ValueNumbering.cpp',
      'js/src/jit/VMFunctions.cpp',
    ],
    # The order of these is important. Scripts later in the list rely on stuff
    # having been defined in earlier scripts.
    'embedded_js_sources': [
      'js/src/builtin/Utilities.js',
      'js/src/builtin/Array.js',
      'js/src/builtin/Date.js',
      'js/src/builtin/Intl.js',
      'js/src/builtin/IntlData.js',
      'js/src/builtin/Number.js',
      'js/src/builtin/ParallelArray.js',
      'js/src/builtin/String.js',
    ],
    'generated_include_directory': '<(SHARED_INTERMEDIATE_DIR)/mozjs/include',
    'embedded_js_file': '<(SHARED_INTERMEDIATE_DIR)/mozjs/selfhosted.js',
    'embedded_js_header': '<(generated_include_directory)/selfhosted.out.h',
    'generated_keyword_header': '<(generated_include_directory)/jsautokw.h',
    'generated_opcode_length_header': '<(generated_include_directory)/jsautooplen.h',
  },
}
