# 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/pr_starboard.cc',
      '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',
  },
}
