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