blob: c81a3ed1367cb43ce6469056cc25754a0c9ca050 [file] [log] [blame]
// 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