aboutsummaryrefslogtreecommitdiff
path: root/build/config/operation.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-08-27 15:11:40 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-08-27 15:11:40 +0200
commitfd689eb883655dcb29e505b041cd02fac01f0bac (patch)
tree0d85ec32d95a1c96eaa7eff28734b900c44dd3ca /build/config/operation.cxx
parent7f2d06258d57e39940e8fa959336da0ea66fe37f (diff)
Dist module/meta-operation initial implementation
Diffstat (limited to 'build/config/operation.cxx')
-rw-r--r--build/config/operation.cxx34
1 files changed, 22 insertions, 12 deletions
diff --git a/build/config/operation.cxx b/build/config/operation.cxx
index 913ae29..80b92dc 100644
--- a/build/config/operation.cxx
+++ b/build/config/operation.cxx
@@ -187,17 +187,26 @@ namespace build
}
static void
- configure_execute (action a, const action_targets& ts)
+ configure_search (scope& root,
+ const target_key&,
+ const location&,
+ action_targets& ts)
{
- for (void* v: ts)
- {
- target& t (*static_cast<target*> (v));
- scope* rs (t.base_scope ().root_scope ());
+ tracer trace ("configure_search");
+ level5 ([&]{trace << "collecting " << root.path ();});
+ ts.push_back (&root);
+ }
- if (rs == nullptr)
- fail << "out of project target " << t;
+ static void
+ configure_match (action, action_targets&) {}
- configure_project (a, *rs);
+ static void
+ configure_execute (action a, const action_targets& ts, bool)
+ {
+ for (void* v: ts)
+ {
+ scope& root (*static_cast<scope*> (v));
+ configure_project (a, root);
}
}
@@ -209,8 +218,8 @@ namespace build
nullptr, // meta-operation pre
&configure_operation_pre,
&load, // normal load
- &search, // normal search
- &match, // normal match
+ &configure_search,
+ &configure_match,
&configure_execute,
nullptr, // operation post
nullptr // meta-operation post
@@ -355,7 +364,7 @@ namespace build
}
static void
- disfigure_execute (action a, const action_targets& ts)
+ disfigure_execute (action a, const action_targets& ts, bool quiet)
{
tracer trace ("disfigure_execute");
@@ -372,7 +381,8 @@ namespace build
targets.insert (
dir::static_type, root.path (), "", nullptr, trace).first);
- info << diag_done (a, t);
+ if (!quiet)
+ info << diag_done (a, t);
}
}
}