aboutsummaryrefslogtreecommitdiff
path: root/build/algorithm.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-06-24 13:53:28 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-06-24 13:53:28 +0200
commite815af118562c68794efbd310c887acd8eae800c (patch)
treecedd8745cce259693c038c309d663a682c982e98 /build/algorithm.ixx
parent4f52c4ed65883dacef32587cf066fbb1182c6628 (diff)
First take on the cli module plus necessary infrastructure
Diffstat (limited to 'build/algorithm.ixx')
-rw-r--r--build/algorithm.ixx18
1 files changed, 15 insertions, 3 deletions
diff --git a/build/algorithm.ixx b/build/algorithm.ixx
index 3907209..3a6f183 100644
--- a/build/algorithm.ixx
+++ b/build/algorithm.ixx
@@ -2,6 +2,8 @@
// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd
// license : MIT; see accompanying LICENSE file
+#include <utility> // pair
+
#include <build/prerequisite>
#include <build/context>
@@ -36,18 +38,28 @@ namespace build
return static_cast<T&> (search (T::static_type, dir, name, ext, scope));
}
- void
- match_impl (action, target&);
+ std::pair<const rule*, void*>
+ match_impl (action, target&, bool apply);
inline void
match (action a, target& t)
{
if (!t.recipe (a))
- match_impl (a, t);
+ match_impl (a, t, true);
t.dependents++;
}
+ group_view
+ resolve_group_members_impl (action, target_group&);
+
+ inline group_view
+ resolve_group_members (action a, target_group& g)
+ {
+ group_view r (g.members (a));
+ return r.members != nullptr ? r : resolve_group_members_impl (a, g);
+ }
+
target_state
execute_impl (action, target&);