Home | History | Annotate | Download | only in gn
      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_TOOLCHAIN_WRITER_H_
      6 #define TOOLS_GN_NINJA_TOOLCHAIN_WRITER_H_
      7 
      8 #include <iosfwd>
      9 #include <vector>
     10 
     11 #include "tools/gn/ninja_helper.h"
     12 #include "tools/gn/path_output.h"
     13 
     14 class BuildSettings;
     15 class Settings;
     16 class Target;
     17 
     18 class NinjaToolchainWriter {
     19  public:
     20   // Takes the settings for the toolchain, as well as the list of all targets
     21   // assicoated with the toolchain.
     22   static bool RunAndWriteFile(const Settings* settings,
     23                               const std::vector<const Target*>& targets);
     24 
     25  private:
     26   NinjaToolchainWriter(const Settings* settings,
     27                        const std::vector<const Target*>& targets,
     28                        std::ostream& out);
     29   ~NinjaToolchainWriter();
     30 
     31   void Run();
     32 
     33   void WriteRules();
     34   void WriteSubninjas();
     35 
     36   const Settings* settings_;
     37   std::vector<const Target*> targets_;
     38   std::ostream& out_;
     39   PathOutput path_output_;
     40 
     41   NinjaHelper helper_;
     42 
     43   DISALLOW_COPY_AND_ASSIGN(NinjaToolchainWriter);
     44 };
     45 
     46 #endif  // TOOLS_GN_NINJA_TOOLCHAIN_WRITER_H_
     47