]> git.tdb.fi Git - builder.git/blobdiff - source/lib/target.h
Refactor transitive dependencies to work on all targets
[builder.git] / source / lib / target.h
index 1ae268cce54b5c7096c48aa6d9c8a7a665e50785..c6c8baa89d6e5046001afbf4ffb8c3c628316e99 100644 (file)
@@ -67,6 +67,7 @@ protected:
        Dependencies trans_depends;
        Dependencies side_effects;
        Target *primary_target = 0;
+       bool rescan_trans_deps = false;
 
        static std::vector<Target *> prepare_stack;
 
@@ -96,6 +97,13 @@ protected:
        direct dependencies first. */
        virtual void find_dependencies() { }
 
+private:
+       bool find_transitive_dependencies();
+       void find_transitive_dependencies(Target &, std::vector<Target *> &) const;
+
+protected:
+       virtual Target *resolve_transitive_dependency(Target &, Target &dep) const { return &dep; }
+
 public:
        /// Returns the dependencies of the target, in the order they were added.
        const Dependencies &get_dependencies() const { return depends; }