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_BUILD_WRITER_H_
6 #define TOOLS_GN_NINJA_BUILD_WRITER_H_
11 #include "tools/gn/path_output.h"
19 // Generates the toplevel "build.ninja" file. This references the individual
20 // toolchain files and lists all input .gn files as dependencies of the
22 class NinjaBuildWriter
{
24 static bool RunAndWriteFile(
25 const BuildSettings
* settings
,
26 const std::vector
<const Settings
*>& all_settings
,
27 const Toolchain
* default_toolchain
,
28 const std::vector
<const Target
*>& default_toolchain_targets
,
32 NinjaBuildWriter(const BuildSettings
* settings
,
33 const std::vector
<const Settings
*>& all_settings
,
34 const Toolchain
* default_toolchain
,
35 const std::vector
<const Target
*>& default_toolchain_targets
,
37 std::ostream
& dep_out
);
42 void WriteNinjaRules();
44 void WriteSubninjas();
45 bool WritePhonyAndAllRules(Err
* err
);
47 void WritePhonyRule(const Target
* target
, const OutputFile
& target_file
,
48 const std::string
& phony_name
);
50 const BuildSettings
* build_settings_
;
51 std::vector
<const Settings
*> all_settings_
;
52 const Toolchain
* default_toolchain_
;
53 std::vector
<const Target
*> default_toolchain_targets_
;
55 std::ostream
& dep_out_
;
56 PathOutput path_output_
;
58 DISALLOW_COPY_AND_ASSIGN(NinjaBuildWriter
);
61 #endif // TOOLS_GN_NINJA_BUILD_WRITER_H_