]> git.tdb.fi Git - builder.git/blobdiff - source/target.h
Improve automatic package finding to detect directories with version number
[builder.git] / source / target.h
index eb46d9fe7116125798f4e7920baf71f5c87c8260..04a360dab57394ec23c305b69825a80135edcee9 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();
-       virtual Action     *build()=0;
+
+       /**
+       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.
+       */
+       Action             *build();
+
        void               reset_count()               { counted=false; }
        virtual unsigned   count_rebuild();
        void               touch();
@@ -53,8 +76,10 @@ protected:
        Target(Builder &, const Package *, const std::string &);
        void         mark_rebuild(const std::string &);
        virtual void check_rebuild();
-       Action       *build(Action *);
+       virtual Action *create_action() =0;
        virtual void build_done();
 };
 
+typedef std::map<std::string, Target *> TargetMap;
+
 #endif