• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef TOOLS_GN_NINJA_WRITER_H_
6 #define TOOLS_GN_NINJA_WRITER_H_
7 
8 #include <set>
9 #include <string>
10 #include <vector>
11 
12 #include "base/basictypes.h"
13 
14 class Builder;
15 class BuildSettings;
16 class Settings;
17 class Target;
18 
19 class NinjaWriter {
20  public:
21   // On failure will print an error and will return false.
22   static bool RunAndWriteFiles(const BuildSettings* build_settings,
23                                Builder* builder);
24 
25   // Writes only the toolchain.ninja files, skipping the root buildfile. The
26   // settings for the files written will be added to the vector.
27   static bool RunAndWriteToolchainFiles(
28       const BuildSettings* build_settings,
29       Builder* builder,
30       std::vector<const Settings*>* all_settings);
31 
32  private:
33   NinjaWriter(const BuildSettings* build_settings, Builder* builder);
34   ~NinjaWriter();
35 
36   bool WriteToolchains(
37       std::vector<const Settings*>* all_settings,
38       std::vector<const Target*>* default_targets);
39   bool WriteRootBuildfiles(const std::vector<const Settings*>& all_settings,
40                            const std::vector<const Target*>& default_targets);
41 
42   const BuildSettings* build_settings_;
43   Builder* builder_;
44 
45   DISALLOW_COPY_AND_ASSIGN(NinjaWriter);
46 };
47 
48 #endif  // TOOLS_GN_NINJA_WRITER_H_
49