DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (b6d82b1a6b02)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
# -*- 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/.

FINAL_LIBRARY = 'js'

# Includes should be relative to parent path
LOCAL_INCLUDES += [
    '!..',
    '..'
]

include('../js-config.mozbuild')
include('../js-cxxflags.mozbuild')


# Generate frontend/ReservedWordsGenerated.h from frontend/ReservedWords.h
GENERATED_FILES += ['ReservedWordsGenerated.h']
ReservedWordsGenerated = GENERATED_FILES['ReservedWordsGenerated.h']
ReservedWordsGenerated.script = 'GenerateReservedWords.py'
ReservedWordsGenerated.inputs += ['ReservedWords.h']


UNIFIED_SOURCES += [
    'BytecodeCompiler.cpp',
    'BytecodeControlStructures.cpp',
    'BytecodeEmitter.cpp',
    'BytecodeSection.cpp',
    'CallOrNewEmitter.cpp',
    'CForEmitter.cpp',
    'DefaultEmitter.cpp',
    'DoWhileEmitter.cpp',
    'ElemOpEmitter.cpp',
    'EmitterScope.cpp',
    'ExpressionStatementEmitter.cpp',
    'FoldConstants.cpp',
    'ForInEmitter.cpp',
    'ForOfEmitter.cpp',
    'ForOfLoopControl.cpp',
    'FunctionEmitter.cpp',
    'IfEmitter.cpp',
    'JumpList.cpp',
    'LabelEmitter.cpp',
    'LexicalScopeEmitter.cpp',
    'NameFunctions.cpp',
    'NameOpEmitter.cpp',
    'ObjectEmitter.cpp',
    'ParseContext.cpp',
    'ParseNode.cpp',
    'ParseNodeVerify.cpp',
    'PropOpEmitter.cpp',
    'SharedContext.cpp',
    'SwitchEmitter.cpp',
    'TDZCheckCache.cpp',
    'TokenStream.cpp',
    'TryEmitter.cpp',
    'WhileEmitter.cpp',
]

# Parser.cpp cannot be built in unified mode because of explicit
#   template instantiations.
SOURCES += [
    'Parser.cpp',
]

if CONFIG['JS_BUILD_BINAST']:
    # Using SOURCES, as UNIFIED_SOURCES causes mysterious bugs on 32-bit
    # platforms.

    # These parts of BinAST should eventually move to release.
    SOURCES += [
        'BinASTParser.cpp',
        'BinASTParserBase.cpp',
        'BinASTParserPerTokenizer.cpp',
        'BinASTRuntimeSupport.cpp',
        'BinASTToken.cpp',
        'BinASTTokenReaderBase.cpp',
        'BinASTTokenReaderContext.cpp',
        'BinASTTokenReaderMultipart.cpp',
    ]

    if CONFIG['JS_STANDALONE']:
        DIRS += [
            'binast'
        ]

    # Instrument BinAST files for fuzzing as we have a fuzzing target for BinAST.
    if CONFIG['FUZZING_INTERFACES'] and CONFIG['LIBFUZZER']:
        include('/tools/fuzzing/libfuzzer-flags.mozbuild')

        SOURCES['BinASTParser.cpp'].flags += libfuzzer_flags
        SOURCES['BinASTParserBase.cpp'].flags += libfuzzer_flags
        SOURCES['BinASTParserPerTokenizer.cpp'].flags += libfuzzer_flags
        SOURCES['BinASTToken.cpp'].flags += libfuzzer_flags
        SOURCES['BinASTTokenReaderBase.cpp'].flags += libfuzzer_flags
        SOURCES['BinASTTokenReaderMultipart.cpp'].flags += libfuzzer_flags