]> git.tdb.fi Git - builder.git/blobdiff - source/target.h
Move architecture information from Builder to class Architecture
[builder.git] / source / target.h
index eb46d9fe7116125798f4e7920baf71f5c87c8260..cf1d18651c9ed5f92c0ac0792b1ae6d75bf153a8 100644 (file)
@@ -1,7 +1,15 @@
+/* $Id$
+
+This file is part of builder
+Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
 #ifndef TARGET_H_
 #define TARGET_H_
 
 #include <list>
+#include <map>
 #include <string>
 #include <msp/time/timestamp.h>
 
@@ -12,11 +20,16 @@ class Package;
 class Target;
 typedef std::list<Target *> TargetList;
 
+/**
+Targets make up the build graph.  This class is a base for all target types and
+handles many common tasks.  Most targets are associated with a file.
+*/
 class Target
 {
 public:
        const std::string  &get_name() const           { return name; }
        Target             *get_buildable_target();
+       bool               get_buildable() const       { return buildable; }
        bool               get_rebuild() const         { return rebuild; }
        const std::string  &get_rebuild_reason() const { return rebuild_reason; }
        const Msp::Time::TimeStamp &get_mtime() const  { return mtime; }
@@ -25,9 +38,19 @@ public:
        const Package      *get_package() const        { return package; }
        bool               get_depends_ready() const   { return deps_ready; }
        void               add_depend(Target *);
-       virtual void       find_depends()              { deps_ready=true; }
        virtual void       prepare();
+
+       /**
+       Finds dependencies for the target.  When all dependencies have been found,
+       the function should set deps_ready to true.
+       */
+       virtual void       find_depends()              { deps_ready=true; }
+
+       /**
+       Creates and returns an Action suitable for building this target.
+       */
        virtual Action     *build()=0;
+
        void               reset_count()               { counted=false; }
        virtual unsigned   count_rebuild();
        void               touch();
@@ -57,4 +80,6 @@ protected:
        virtual void build_done();
 };
 
+typedef std::map<std::string, Target *> TargetMap;
+
 #endif