# Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# This file contains all sources (vm and tests) for the compiler pipeline.
# Unit test files need to have a "_test" suffix appended to the name.
compiler_sources = [
  "aot/aot_call_specializer.cc",
  "aot/aot_call_specializer.h",
  "aot/precompiler.cc",
  "aot/precompiler.h",
  "asm_intrinsifier.cc",
  "asm_intrinsifier.h",
  "asm_intrinsifier_arm.cc",
  "asm_intrinsifier_arm64.cc",
  "asm_intrinsifier_dbc.cc",
  "asm_intrinsifier_ia32.cc",
  "asm_intrinsifier_x64.cc",
  "assembler/assembler.cc",
  "assembler/assembler.h",
  "assembler/assembler_arm.cc",
  "assembler/assembler_arm.h",
  "assembler/assembler_arm64.cc",
  "assembler/assembler_arm64.h",
  "assembler/assembler_dbc.cc",
  "assembler/assembler_dbc.h",
  "assembler/assembler_ia32.cc",
  "assembler/assembler_ia32.h",
  "assembler/assembler_x64.cc",
  "assembler/assembler_x64.h",
  "assembler/disassembler.cc",
  "assembler/disassembler.h",
  "assembler/disassembler_arm.cc",
  "assembler/disassembler_arm64.cc",
  "assembler/disassembler_dbc.cc",
  "assembler/disassembler_kbc.cc",
  "assembler/disassembler_kbc.h",
  "assembler/disassembler_x86.cc",
  "assembler/object_pool_builder.h",
  "backend/block_builder.h",
  "backend/block_scheduler.cc",
  "backend/block_scheduler.h",
  "backend/branch_optimizer.cc",
  "backend/branch_optimizer.h",
  "backend/code_statistics.cc",
  "backend/code_statistics.h",
  "backend/compile_type.h",
  "backend/constant_propagator.cc",
  "backend/constant_propagator.h",
  "backend/flow_graph.cc",
  "backend/flow_graph.h",
  "backend/flow_graph_checker.cc",
  "backend/flow_graph_checker.h",
  "backend/flow_graph_compiler.cc",
  "backend/flow_graph_compiler.h",
  "backend/flow_graph_compiler_arm.cc",
  "backend/flow_graph_compiler_arm64.cc",
  "backend/flow_graph_compiler_dbc.cc",
  "backend/flow_graph_compiler_ia32.cc",
  "backend/flow_graph_compiler_x64.cc",
  "backend/il.cc",
  "backend/il.h",
  "backend/il_arm.cc",
  "backend/il_arm64.cc",
  "backend/il_dbc.cc",
  "backend/il_ia32.cc",
  "backend/il_printer.cc",
  "backend/il_printer.h",
  "backend/il_serializer.cc",
  "backend/il_serializer.h",
  "backend/il_x64.cc",
  "backend/inliner.cc",
  "backend/inliner.h",
  "backend/linearscan.cc",
  "backend/linearscan.h",
  "backend/locations.cc",
  "backend/locations.h",
  "backend/locations_helpers.h",
  "backend/locations_helpers_arm.h",
  "backend/loops.cc",
  "backend/loops.h",
  "backend/range_analysis.cc",
  "backend/range_analysis.h",
  "backend/redundancy_elimination.cc",
  "backend/redundancy_elimination.h",
  "backend/sexpression.cc",
  "backend/sexpression.h",
  "backend/slot.cc",
  "backend/slot.h",
  "backend/type_propagator.cc",
  "backend/type_propagator.h",
  "call_specializer.cc",
  "call_specializer.h",
  "cha.cc",
  "cha.h",
  "compiler_pass.cc",
  "compiler_pass.h",
  "compiler_state.cc",
  "compiler_state.h",
  "ffi.cc",
  "ffi.h",
  "frontend/base_flow_graph_builder.cc",
  "frontend/base_flow_graph_builder.h",
  "frontend/bytecode_fingerprints.cc",
  "frontend/bytecode_fingerprints.h",
  "frontend/bytecode_flow_graph_builder.cc",
  "frontend/bytecode_flow_graph_builder.h",
  "frontend/bytecode_reader.cc",
  "frontend/bytecode_reader.h",
  "frontend/bytecode_scope_builder.cc",
  "frontend/bytecode_scope_builder.h",
  "frontend/constant_evaluator.cc",
  "frontend/constant_evaluator.h",
  "frontend/flow_graph_builder.cc",
  "frontend/flow_graph_builder.h",
  "frontend/kernel_binary_flowgraph.cc",
  "frontend/kernel_binary_flowgraph.h",
  "frontend/kernel_fingerprints.cc",
  "frontend/kernel_fingerprints.h",
  "frontend/kernel_to_il.cc",
  "frontend/kernel_to_il.h",
  "frontend/kernel_translation_helper.cc",
  "frontend/kernel_translation_helper.h",
  "frontend/prologue_builder.cc",
  "frontend/prologue_builder.h",
  "frontend/scope_builder.cc",
  "frontend/scope_builder.h",
  "graph_intrinsifier.cc",
  "graph_intrinsifier.h",
  "graph_intrinsifier_arm.cc",
  "graph_intrinsifier_arm64.cc",
  "graph_intrinsifier_ia32.cc",
  "graph_intrinsifier_x64.cc",
  "intrinsifier.cc",
  "intrinsifier.h",
  "jit/compiler.cc",
  "jit/compiler.h",
  "jit/jit_call_specializer.cc",
  "jit/jit_call_specializer.h",
  "method_recognizer.cc",
  "method_recognizer.h",
  "recognized_methods_list.h",
  "relocation.cc",
  "relocation.h",
  "runtime_api.cc",
  "runtime_api.h",
  "stub_code_compiler.h",
  "stub_code_compiler_arm.cc",
  "stub_code_compiler_arm64.cc",
  "stub_code_compiler_dbc.cc",
  "stub_code_compiler_ia32.cc",
  "stub_code_compiler_x64.cc",
]

# The most common way to include assembly files in C projects is to have
# separate assembly files per architecture and operating system (for example
# boringssl).
#
# Not that this diverges from our convention to build every file on every OS
# but have ifdef guards which make the files empty on some configurations.
if (is_linux || is_mac) {
  # MASM on Windows does not support c preproccesor style flags.
  compiler_sources += [ "ffi_dbc_trampoline_x64_linux_mac.S" ]
}

compiler_sources_tests = [
  "assembler/assembler_arm64_test.cc",
  "assembler/assembler_arm_test.cc",
  "assembler/assembler_dbc_test.cc",
  "assembler/assembler_ia32_test.cc",
  "assembler/assembler_test.cc",
  "assembler/assembler_x64_test.cc",
  "assembler/disassembler_test.cc",
  "backend/bce_test.cc",
  "backend/il_test.cc",
  "backend/il_test_helper.h",
  "backend/il_test_helper.cc",
  "backend/inliner_test.cc",
  "backend/locations_helpers_test.cc",
  "backend/loops_test.cc",
  "backend/range_analysis_test.cc",
  "backend/redundancy_elimination_test.cc",
  "backend/sexpression_test.cc",
  "backend/slot_test.cc",
  "backend/type_propagator_test.cc",
  "backend/typed_data_aot_test.cc",
  "cha_test.cc",
]
