| // Copyright (c) 2023 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_OUTPUTS_WRITER_H_ |
| #define TOOLS_GN_NINJA_OUTPUTS_WRITER_H_ |
| |
| #include <string> |
| #include <unordered_map> |
| #include <vector> |
| |
| #include "gn/err.h" |
| #include "gn/output_file.h" |
| #include "gn/string_output_buffer.h" |
| #include "gn/target.h" |
| |
| class Builder; |
| class BuildSettings; |
| class StringOutputBuffer; |
| |
| // Generates the --ninja-outputs-file content |
| class NinjaOutputsWriter { |
| public: |
| // A map from targets to list of corresponding Ninja output paths. |
| using MapType = std::unordered_map<const Target*, std::vector<OutputFile>>; |
| |
| static bool RunAndWriteFiles(const MapType& outputs_map, |
| const BuildSettings* build_setting, |
| const std::string& file_name, |
| const std::string& exec_script, |
| const std::string& exec_script_extra_args, |
| bool quiet, |
| Err* err); |
| |
| private: |
| FRIEND_TEST_ALL_PREFIXES(NinjaOutputsWriterTest, OutputsFile); |
| |
| static StringOutputBuffer GenerateJSON(const MapType& outputs_map); |
| }; |
| |
| #endif |