Add utility functions needed for rect-based event targeting
[chromium-blink-merge.git] / tools / gn / ninja_toolchain_writer.h
blob5d3daa5252d3291052337507a0a5cb2f9c5f158b
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_
8 #include <iosfwd>
9 #include <set>
10 #include <string>
11 #include <vector>
13 #include "tools/gn/ninja_helper.h"
14 #include "tools/gn/path_output.h"
16 class BuildSettings;
17 class Settings;
18 class Target;
20 class NinjaToolchainWriter {
21 public:
22 // Takes the settings for the toolchain, as well as the list of all targets
23 // assicoated with the toolchain. Ninja files exactly matching "skip_files"
24 // will not be included in the subninja list.
25 static bool RunAndWriteFile(const Settings* settings,
26 const std::vector<const Target*>& targets,
27 const std::set<std::string>& skip_files);
29 private:
30 NinjaToolchainWriter(const Settings* settings,
31 const std::vector<const Target*>& targets,
32 const std::set<std::string>& skip_files,
33 std::ostream& out);
34 ~NinjaToolchainWriter();
36 void Run();
38 void WriteRules();
39 void WriteSubninjas();
41 const Settings* settings_;
42 std::vector<const Target*> targets_;
43 const std::set<std::string>& skip_files_;
44 std::ostream& out_;
45 PathOutput path_output_;
47 NinjaHelper helper_;
49 DISALLOW_COPY_AND_ASSIGN(NinjaToolchainWriter);
52 #endif // TOOLS_GN_NINJA_TOOLCHAIN_WRITER_H_