From 53eb43126e562a43f4e8f2247af10da5c4c3c87f Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 12 Aug 2016 16:39:13 +0200 Subject: Rename module to init --- build2/config/init | 31 ++++++++++++++ build2/config/init.cxx | 103 +++++++++++++++++++++++++++++++++++++++++++++++ build2/config/module | 14 +------ build2/config/module.cxx | 102 ---------------------------------------------- 4 files changed, 135 insertions(+), 115 deletions(-) create mode 100644 build2/config/init create mode 100644 build2/config/init.cxx delete mode 100644 build2/config/module.cxx (limited to 'build2/config') diff --git a/build2/config/init b/build2/config/init new file mode 100644 index 0000000..7efae99 --- /dev/null +++ b/build2/config/init @@ -0,0 +1,31 @@ +// file : build2/config/init -*- C++ -*- +// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef BUILD2_CONFIG_INIT +#define BUILD2_CONFIG_INIT + +#include +#include + +#include + +namespace build2 +{ + namespace config + { + void + boot (scope&, const location&, unique_ptr&); + + bool + init (scope&, + scope&, + const location&, + unique_ptr&, + bool, + bool, + const variable_map&); + } +} + +#endif // BUILD2_CONFIG_INIT diff --git a/build2/config/init.cxx b/build2/config/init.cxx new file mode 100644 index 0000000..6c713df --- /dev/null +++ b/build2/config/init.cxx @@ -0,0 +1,103 @@ +// file : build2/config/init.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include + +#include +#include +#include +#include +#include // file_exists() +#include + +#include +#include +#include + +using namespace std; +using namespace butl; + +namespace build2 +{ + namespace config + { + const string module::name ("config"); + + void + boot (scope& rs, const location&, unique_ptr&) + { + tracer trace ("config::boot"); + + const dir_path& out_root (rs.out_path ()); + l5 ([&]{trace << "for " << out_root;}); + + // Register meta-operations. + // + rs.meta_operations.insert (configure_id, configure); + rs.meta_operations.insert (disfigure_id, disfigure); + + // Load config.build if one exists. + // + // Note that we have to do this during bootstrap since the order in + // which the modules will be initialized is unspecified. So it is + // possible that some module which needs the configuration will get + // called first. + // + path f (out_root / config_file); + + if (file_exists (f)) + source (f, rs, rs); + } + + bool + init (scope& rs, + scope&, + const location& l, + unique_ptr& mod, + bool first, + bool, + const variable_map& config_hints) + { + tracer trace ("config::init"); + + if (!first) + { + warn (l) << "multiple config module initializations"; + return true; + } + + l5 ([&]{trace << "for " << rs.out_path ();}); + + assert (config_hints.empty ()); // We don't known any hints. + + // Only create the module if we are configuring. + // + if (current_mif->id == configure_id) + mod.reset (new module); + + // Adjust priority for the import pseudo-module so that config.import.* + // values come first in config.build. + // + config::save_module (rs, "import", INT32_MIN); + + // Register alias and fallback rule for the configure meta-operation. + // + { + // We need this rule for out-of-any-project dependencies (e.g., + // libraries imported from /usr/lib). + // + global_scope->rules.insert ( + configure_id, 0, "config.file", file_rule::instance); + + auto& r (rs.rules); + + r.insert (configure_id, 0, "config", fallback_rule::instance); + r.insert (configure_id, 0, "config.file", fallback_rule::instance); + r.insert (configure_id, 0, "config.alias", alias_rule::instance); + } + + return true; + } + } +} diff --git a/build2/config/module b/build2/config/module index 21a7e28..e6fb197 100644 --- a/build2/config/module +++ b/build2/config/module @@ -78,20 +78,8 @@ namespace build2 struct module: module_base { config::saved_modules saved_modules; - static const string name; + static const string name; // init.cxx }; - - void - boot (scope&, const location&, unique_ptr&); - - bool - init (scope&, - scope&, - const location&, - unique_ptr&, - bool, - bool, - const variable_map&); } } diff --git a/build2/config/module.cxx b/build2/config/module.cxx deleted file mode 100644 index de106b7..0000000 --- a/build2/config/module.cxx +++ /dev/null @@ -1,102 +0,0 @@ -// file : build2/config/module.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include - -#include -#include -#include -#include -#include // file_exists() -#include - -#include -#include - -using namespace std; -using namespace butl; - -namespace build2 -{ - namespace config - { - const string module::name ("config"); - - void - boot (scope& rs, const location&, unique_ptr&) - { - tracer trace ("config::boot"); - - const dir_path& out_root (rs.out_path ()); - l5 ([&]{trace << "for " << out_root;}); - - // Register meta-operations. - // - rs.meta_operations.insert (configure_id, configure); - rs.meta_operations.insert (disfigure_id, disfigure); - - // Load config.build if one exists. - // - // Note that we have to do this during bootstrap since the order in - // which the modules will be initialized is unspecified. So it is - // possible that some module which needs the configuration will get - // called first. - // - path f (out_root / config_file); - - if (file_exists (f)) - source (f, rs, rs); - } - - bool - init (scope& rs, - scope&, - const location& l, - unique_ptr& mod, - bool first, - bool, - const variable_map& config_hints) - { - tracer trace ("config::init"); - - if (!first) - { - warn (l) << "multiple config module initializations"; - return true; - } - - l5 ([&]{trace << "for " << rs.out_path ();}); - - assert (config_hints.empty ()); // We don't known any hints. - - // Only create the module if we are configuring. - // - if (current_mif->id == configure_id) - mod.reset (new module); - - // Adjust priority for the import pseudo-module so that config.import.* - // values come first in config.build. - // - config::save_module (rs, "import", INT32_MIN); - - // Register alias and fallback rule for the configure meta-operation. - // - { - // We need this rule for out-of-any-project dependencies (e.g., - // libraries imported from /usr/lib). - // - global_scope->rules.insert ( - configure_id, 0, "config.file", file_rule::instance); - - auto& r (rs.rules); - - r.insert (configure_id, 0, "config", fallback_rule::instance); - r.insert (configure_id, 0, "config.file", fallback_rule::instance); - r.insert (configure_id, 0, "config.alias", alias_rule::instance); - } - - return true; - } - } -} -- cgit v1.1