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_