| // Copyright 2019 The Chromium 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 TOOLS_GN_NINJA_RUST_BINARY_TARGET_WRITER_H_ | |
| #define TOOLS_GN_NINJA_RUST_BINARY_TARGET_WRITER_H_ | |
| #include "base/macros.h" | |
| #include "tools/gn/ninja_binary_target_writer.h" | |
| #include "tools/gn/rust_tool.h" | |
| struct EscapeOptions; | |
| // Writes a .ninja file for a binary target type (an executable, a shared | |
| // library, or a static library). | |
| class NinjaRustBinaryTargetWriter : public NinjaBinaryTargetWriter { | |
| public: | |
| NinjaRustBinaryTargetWriter(const Target* target, std::ostream& out); | |
| ~NinjaRustBinaryTargetWriter() override; | |
| void Run() override; | |
| private: | |
| void WriteCompilerVars(); | |
| void WriteSources(const OutputFile& input_dep, | |
| const std::vector<OutputFile>& order_only_deps); | |
| void WriteExterns(const std::vector<const Target*>& deps); | |
| void WriteRustdeps(const std::vector<OutputFile>& rustdeps, | |
| const std::vector<OutputFile>& nonrustdeps); | |
| void WriteEdition(); | |
| const RustTool* tool_; | |
| DISALLOW_COPY_AND_ASSIGN(NinjaRustBinaryTargetWriter); | |
| }; | |
| #endif // TOOLS_GN_NINJA_RUST_BINARY_TARGET_WRITER_H_ |