blob: cf648d2cd59cae95c7205bb6f0e1bcb55d23d41c [file] [log] [blame]
// Copyright (c) 2013 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.
#include <map>
#include <set>
#include <string>
#include <vector>
class Builder;
class BuildSettings;
class Err;
class Target;
class Toolchain;
class NinjaWriter {
// Combines a target and the computed build rule for it.
using TargetRulePair = std::pair<const Target*, std::string>;
// Associates the build rules with each toolchain.
using PerToolchainRules =
std::map<const Toolchain*, std::vector<TargetRulePair>>;
// On failure will populate |err| and will return false. The map contains
// the per-toolchain set of rules collected to write to the toolchain build
// files.
static bool RunAndWriteFiles(const BuildSettings* build_settings,
const Builder& builder,
const PerToolchainRules& per_toolchain_rules,
Err* err);
NinjaWriter(const Builder& builder);
bool WriteToolchains(const PerToolchainRules& per_toolchain_rules, Err* err);
const Builder& builder_;
NinjaWriter(const NinjaWriter&) = delete;
NinjaWriter& operator=(const NinjaWriter&) = delete;