# -*- 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',
'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',
'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',
'BinASTTokenReaderMultipart.cpp',
]
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