// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef TOOLS_GN_NINJA_BUILD_WRITER_H_ #define TOOLS_GN_NINJA_BUILD_WRITER_H_ #include #include #include "tools/gn/ninja_helper.h" #include "tools/gn/path_output.h" class BuildSettings; class Settings; class Target; // Generates the toplevel "build.ninja" file. This references the individual // toolchain files and lists all input .gn files as dependencies of the // build itself. class NinjaBuildWriter { public: static bool RunAndWriteFile( const BuildSettings* settings, const std::vector& all_settings, const std::vector& default_toolchain_targets); private: NinjaBuildWriter(const BuildSettings* settings, const std::vector& all_settings, const std::vector& default_toolchain_targets, std::ostream& out, std::ostream& dep_out); ~NinjaBuildWriter(); void Run(); void WriteNinjaRules(); void WriteSubninjas(); void WritePhonyAndAllRules(); const BuildSettings* build_settings_; std::vector all_settings_; std::vector default_toolchain_targets_; std::ostream& out_; std::ostream& dep_out_; PathOutput path_output_; NinjaHelper helper_; DISALLOW_COPY_AND_ASSIGN(NinjaBuildWriter); }; #endif // TOOLS_GN_NINJA_BUILD_GENERATOR_H_