]> git.tdb.fi Git - builder.git/blobdiff - source/lib/target.h
Report which targets participate in a dependency cycle
[builder.git] / source / lib / target.h
index 0ba38f82031b06122aa10c001f222e0bbf143c49..1ae268cce54b5c7096c48aa6d9c8a7a665e50785 100644 (file)
@@ -6,6 +6,7 @@
 #include <string>
 #include <vector>
 #include <sigc++/signal.h>
+#include <msp/core/noncopyable.h>
 #include <msp/time/timestamp.h>
 #include "libbuilder_api.h"
 
@@ -41,6 +42,12 @@ protected:
                BROKEN
        };
 
+       struct PushPrepare: Msp::NonCopyable
+       {
+               PushPrepare(Target *t) { prepare_stack.push_back(t); }
+               ~PushPrepare() { prepare_stack.pop_back(); }
+       };
+
 public:
        sigc::signal<void> signal_bubble_rebuild;
        sigc::signal<void> signal_modified;
@@ -61,6 +68,8 @@ protected:
        Dependencies side_effects;
        Target *primary_target = 0;
 
+       static std::vector<Target *> prepare_stack;
+
        Target(Builder &, const std::string &);
 public:
        virtual ~Target() { }