| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef V8_TORQUE_TORQUE_COMPILER_H_ |
| #define V8_TORQUE_TORQUE_COMPILER_H_ |
| |
| #include "src/torque/ast.h" |
| #include "src/torque/contextual.h" |
| #include "src/torque/server-data.h" |
| #include "src/torque/source-positions.h" |
| #include "src/torque/utils.h" |
| |
| namespace v8 { |
| namespace internal { |
| namespace torque { |
| |
| struct TorqueCompilerOptions { |
| std::string output_directory = ""; |
| std::string v8_root = ""; |
| bool collect_language_server_data = false; |
| |
| // assert(...) are only generated for debug builds. The provide |
| // language server support for statements inside asserts, this flag |
| // can force generate them. |
| bool force_assert_statements = false; |
| |
| // Forge (Google3) can only run 64-bit executables. As Torque runs as part |
| // of the build process, we need a "cross-compile" mode when we target 32-bit |
| // architectures. Note that this does not needed in Chromium/V8 land, since we |
| // always build with the same bit width as the target architecture. |
| bool force_32bit_output = false; |
| }; |
| |
| struct TorqueCompilerResult { |
| // Map translating SourceIds to filenames. This field is |
| // set on errors, so the SourcePosition of the error can be |
| // resolved. |
| base::Optional<SourceFileMap> source_file_map; |
| |
| // Eagerly collected data needed for the LanguageServer. |
| // Set the corresponding options flag to enable. |
| LanguageServerData language_server_data; |
| |
| // Errors collected during compilation. |
| std::vector<TorqueMessage> messages; |
| }; |
| |
| V8_EXPORT_PRIVATE TorqueCompilerResult |
| CompileTorque(const std::string& source, TorqueCompilerOptions options); |
| TorqueCompilerResult CompileTorque(std::vector<std::string> files, |
| TorqueCompilerOptions options); |
| |
| } // namespace torque |
| } // namespace internal |
| } // namespace v8 |
| |
| #endif // V8_TORQUE_TORQUE_COMPILER_H_ |