From 49d5628e35593a5300d39596286c768d7aa435b6 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 7 Jul 2015 09:18:22 +0200 Subject: Rework module architecture Now the target type and rule maps are in scopes (builtins -- in global scope). We also now have the map of loaded modules in the root scope of each project. --- build/context.cxx | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'build/context.cxx') diff --git a/build/context.cxx b/build/context.cxx index 22b6f53..d62be61 100644 --- a/build/context.cxx +++ b/build/context.cxx @@ -9,6 +9,8 @@ #include #include +#include +#include #include using namespace std; @@ -22,7 +24,12 @@ namespace build const meta_operation_info* current_mif; const operation_info* current_oif; execution_mode current_mode; - const target_rule_map* current_rules; + + // Builtin rules. + // + static dir_rule dir_; + static fsdir_rule fsdir_; + static file_rule file_; void reset () @@ -43,6 +50,35 @@ namespace build global_scope->assign ("work") = work; global_scope->assign ("home") = home; + + // Register builtin target types. + // + { + target_type_map& tts (global_scope->target_types); + + tts.insert (); + tts.insert (); + tts.insert (); + } + + // Register builtin rules. + // + { + rule_map& rs (global_scope->rules); + + rs.insert (default_id, "dir", dir_); + rs.insert (update_id, "dir", dir_); + rs.insert (clean_id, "dir", dir_); + + rs.insert (default_id, "fsdir", fsdir_); + rs.insert (update_id, "fsdir", fsdir_); + rs.insert (clean_id, "fsdir", fsdir_); + + rs.insert (default_id, "file", file_); + rs.insert (update_id, "file", file_); + rs.insert (clean_id, "file", file_); + } + } fs_status -- cgit v1.1