Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / gn / ninja_target_writer.h
index 6cd0a0a..f67eba5 100644 (file)
@@ -8,10 +8,11 @@
 #include <iosfwd>
 
 #include "base/basictypes.h"
-#include "tools/gn/ninja_helper.h"
 #include "tools/gn/path_output.h"
+#include "tools/gn/substitution_type.h"
 
 class FileTemplate;
+class OutputFile;
 class Settings;
 class Target;
 
@@ -19,33 +20,38 @@ class Target;
 // generated by the NinjaBuildWriter.
 class NinjaTargetWriter {
  public:
-  NinjaTargetWriter(const Target* target,
-                    const Toolchain* toolchain,
-                    std::ostream& out);
+  NinjaTargetWriter(const Target* target, std::ostream& out);
   virtual ~NinjaTargetWriter();
 
-  static void RunAndWriteFile(const Target* target, const Toolchain* toolchain);
+  static void RunAndWriteFile(const Target* target);
 
   virtual void Run() = 0;
 
  protected:
+  // Writes out the substitution values that are shared between the different
+  // types of tools (target gen dir, target label, etc.). Only the substitutions
+  // identified by the given bits will be written.
+  void WriteSharedVars(const SubstitutionBits& bits);
+
   // Writes to the output stream a stamp rule for input dependencies, and
-  // returns the string to be appended to source rules that encodes the
-  // order-only dependencies for the current target. This will include the "|"
-  // character so can just be appended to the source rules. If there are no
-  // implicit dependencies and no extra target dependencies passed in, returns
-  // the empty string.
-  std::string WriteInputDepsStampAndGetDep(
+  // returns the file to be appended to source rules that encodes the
+  // order-only dependencies for the current target. The returned OutputFile
+  // will be empty if there are no implicit dependencies and no extra target
+  // dependencies passed in.
+  OutputFile WriteInputDepsStampAndGetDep(
       const std::vector<const Target*>& extra_hard_deps) const;
 
+  // Writes to the output file a final stamp rule for the target that stamps
+  // the given list of files. This function assumes the stamp is for the target
+  // as a whole so the stamp file is set as the target's dependency output.
+  void WriteStampForTarget(const std::vector<OutputFile>& deps,
+                           const std::vector<OutputFile>& order_only_deps);
+
   const Settings* settings_;  // Non-owning.
   const Target* target_;  // Non-owning.
-  const Toolchain* toolchain_;  // Non-owning.
   std::ostream& out_;
   PathOutput path_output_;
 
-  NinjaHelper helper_;
-
  private:
   void WriteCopyRules();