From 83bb02cada0b894d9134cc5489999e0f0fe8bd7c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 8 Jul 2019 14:55:35 +0200 Subject: Move in build system module to separate library --- build2/b.cxx | 94 ++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 50 insertions(+), 44 deletions(-) (limited to 'build2/b.cxx') diff --git a/build2/b.cxx b/build2/b.cxx index a76a8e4..907784b 100644 --- a/build2/b.cxx +++ b/build2/b.cxx @@ -42,20 +42,18 @@ #include +#include + +// Build system modules. +// #include #include #include #include -#include - -using namespace butl; -using namespace std; - +#include #include -#include - #include #include #include @@ -66,6 +64,9 @@ using namespace std; # include #endif +using namespace butl; +using namespace std; + namespace build2 { static options ops; @@ -437,46 +438,51 @@ main (int argc, char* argv[]) using mf = module_functions; auto& bm (builtin_modules); - bm["config"] = config::build2_config_load (); - bm["dist"] = dist::build2_dist_load (); - bm["test"] = test::build2_test_load (); - bm["install"] = install::build2_install_load (); - - bm["version"] = mf {&version::boot, &version::init}; - - bm["in.base"] = mf {nullptr, &in::base_init}; - bm["in"] = mf {nullptr, &in::init}; - - bm["bin.vars"] = mf {nullptr, &bin::vars_init}; - bm["bin.config"] = mf {nullptr, &bin::config_init}; - bm["bin"] = mf {nullptr, &bin::init}; - bm["bin.ar.config"] = mf {nullptr, &bin::ar_config_init}; - bm["bin.ar"] = mf {nullptr, &bin::ar_init}; - bm["bin.ld.config"] = mf {nullptr, &bin::ld_config_init}; - bm["bin.ld"] = mf {nullptr, &bin::ld_init}; - bm["bin.rc.config"] = mf {nullptr, &bin::rc_config_init}; - bm["bin.rc"] = mf {nullptr, &bin::rc_init}; - - bm["cc.core.vars"] = mf {nullptr, &cc::core_vars_init}; - bm["cc.core.guess"] = mf {nullptr, &cc::core_guess_init}; - bm["cc.core.config"] = mf {nullptr, &cc::core_config_init}; - bm["cc.core"] = mf {nullptr, &cc::core_init}; - bm["cc.config"] = mf {nullptr, &cc::config_init}; - bm["cc"] = mf {nullptr, &cc::init}; - - bm["c.guess"] = mf {nullptr, &c::guess_init}; - bm["c.config"] = mf {nullptr, &c::config_init}; - bm["c"] = mf {nullptr, &c::init}; - - bm["cxx.guess"] = mf {nullptr, &cxx::guess_init}; - bm["cxx.config"] = mf {nullptr, &cxx::config_init}; - bm["cxx"] = mf {nullptr, &cxx::init}; + auto reg = [] (module_load_function* lf) + { + for (const module_functions* i (lf ()); i->name != nullptr; ++i) + builtin_modules[i->name] = *i; + }; + + reg (&config::build2_config_load); + reg (&dist::build2_dist_load); + reg (&test::build2_test_load); + reg (&install::build2_install_load); + + bm["version"] = mf {"version", &version::boot, &version::init}; + + reg (&in::build2_in_load); + + bm["bin.vars"] = mf {"bin.vars", nullptr, &bin::vars_init}; + bm["bin.config"] = mf {"bin.config", nullptr, &bin::config_init}; + bm["bin"] = mf {"bin", nullptr, &bin::init}; + bm["bin.ar.config"] = mf {"bin.ar.config", nullptr, &bin::ar_config_init}; + bm["bin.ar"] = mf {"bin.ar", nullptr, &bin::ar_init}; + bm["bin.ld.config"] = mf {"bin.ld.config", nullptr, &bin::ld_config_init}; + bm["bin.ld"] = mf {"bin.ld", nullptr, &bin::ld_init}; + bm["bin.rc.config"] = mf {"bin.rc.config", nullptr, &bin::rc_config_init}; + bm["bin.rc"] = mf {"bin.rc", nullptr, &bin::rc_init}; + + bm["cc.core.vars"] = mf {"cc.core.vars", nullptr, &cc::core_vars_init}; + bm["cc.core.guess"] = mf {"cc.core.guess", nullptr, &cc::core_guess_init}; + bm["cc.core.config"] = mf {"cc.core.config", nullptr, &cc::core_config_init}; + bm["cc.core"] = mf {"cc.core", nullptr, &cc::core_init}; + bm["cc.config"] = mf {"cc.config", nullptr, &cc::config_init}; + bm["cc"] = mf {"cc", nullptr, &cc::init}; + + bm["c.guess"] = mf {"c.guess", nullptr, &c::guess_init}; + bm["c.config"] = mf {"c.config", nullptr, &c::config_init}; + bm["c"] = mf {"c", nullptr, &c::init}; + + bm["cxx.guess"] = mf {"cxx.guess", nullptr, &cxx::guess_init}; + bm["cxx.config"] = mf {"cxx.config", nullptr, &cxx::config_init}; + bm["cxx"] = mf {"cxx", nullptr, &cxx::init}; #ifndef BUILD2_BOOTSTRAP - bm["cli.config"] = mf {nullptr, &cli::config_init}; - bm["cli"] = mf {nullptr, &cli::init}; + bm["cli.config"] = mf {"cli.config", nullptr, &cli::config_init}; + bm["cli"] = mf {"cli", nullptr, &cli::init}; - bm["bash"] = mf {nullptr, &bash::init}; + bm["bash"] = mf {"bash", nullptr, &bash::init}; #endif } -- cgit v1.1