1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef TOOLS_GN_NINJA_TOOLCHAIN_WRITER_H_
6 #define TOOLS_GN_NINJA_TOOLCHAIN_WRITER_H_
13 #include "base/gtest_prod_util.h"
14 #include "tools/gn/path_output.h"
15 #include "tools/gn/toolchain.h"
23 class NinjaToolchainWriter {
25 // Takes the settings for the toolchain, as well as the list of all targets
26 // associated with the toolchain.
27 static bool RunAndWriteFile(const Settings* settings,
28 const Toolchain* toolchain,
29 const std::vector<const Target*>& targets);
32 FRIEND_TEST_ALL_PREFIXES(NinjaToolchainWriter, WriteToolRule);
34 NinjaToolchainWriter(const Settings* settings,
35 const Toolchain* toolchain,
36 const std::vector<const Target*>& targets,
38 ~NinjaToolchainWriter();
43 void WriteToolRule(Toolchain::ToolType type,
45 const std::string& rule_prefix);
46 void WriteRulePattern(const char* name,
47 const SubstitutionPattern& pattern,
48 const EscapeOptions& options);
49 void WriteSubninjas();
51 const Settings* settings_;
52 const Toolchain* toolchain_;
53 std::vector<const Target*> targets_;
55 PathOutput path_output_;
57 DISALLOW_COPY_AND_ASSIGN(NinjaToolchainWriter);
60 #endif // TOOLS_GN_NINJA_TOOLCHAIN_WRITER_H_