diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-04-27 08:29:52 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-04-27 08:29:52 +0200 |
commit | c2001eb367b9b82e26689cad6f1f74f46c72b904 (patch) | |
tree | db2ee46fc11989d85201ccebaf44f51b978fb313 /build2/algorithm.cxx | |
parent | 530e19cc8f53f066039967c41bb432111ce98626 (diff) |
Pass target to prerequisite search
Diffstat (limited to 'build2/algorithm.cxx')
-rw-r--r-- | build2/algorithm.cxx | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/build2/algorithm.cxx b/build2/algorithm.cxx index 51a683c..049df0c 100644 --- a/build2/algorithm.cxx +++ b/build2/algorithm.cxx @@ -20,7 +20,7 @@ using namespace butl; namespace build2 { const target& - search (const prerequisite_key& pk) + search (const target& t, const prerequisite_key& pk) { assert (phase == run_phase::match); @@ -30,14 +30,14 @@ namespace build2 if (pk.proj) return import (pk); - if (const target* t = pk.tk.type->search (pk)) - return *t; + if (const target* pt = pk.tk.type->search (t, pk)) + return *pt; return create_new_target (pk); } const target& - search (name n, const scope& s) + search (const target& t, name n, const scope& s) { assert (phase == run_phase::match); @@ -53,7 +53,8 @@ namespace build2 // @@ OUT: for now we assume the prerequisite's out is undetermined. // Would need to pass a pair of names. // - return search (*tt, + return search (t, + *tt, n.dir, dir_path (), n.value, @@ -634,7 +635,7 @@ namespace build2 size_t i (pts.size ()); // Index of the first to be added. for (auto&& p: forward<R> (r)) { - const target& pt (search (p)); + const target& pt (search (t, p)); if (s != nullptr && !pt.in (*s)) continue; @@ -733,7 +734,7 @@ namespace build2 // Target is in the out tree, so out directory is empty. // const fsdir* r ( - &search<fsdir> (d, dir_path (), string (), nullptr, nullptr)); + &search<fsdir> (t, d, dir_path (), string (), nullptr, nullptr)); match (a, *r); t.prerequisite_targets.emplace_back (r); return r; |