From dee4003df645803a7883fd7b97dab7ca6b1f79ae Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Tue, 27 Aug 2019 23:51:46 +0300 Subject: Add build2_cli_load() --- build2/b.cxx | 10 +--------- build2/cli/init.cxx | 16 ++++++++++++++++ build2/cli/init.hxx | 26 +++++++++----------------- 3 files changed, 26 insertions(+), 26 deletions(-) (limited to 'build2') diff --git a/build2/b.cxx b/build2/b.cxx index a4e799c..d6b364d 100644 --- a/build2/b.cxx +++ b/build2/b.cxx @@ -507,12 +507,6 @@ main (int argc, char* argv[]) loaded_modules[i->name] = i; }; - // @@ TMP - // -#define TMP_LOAD(N, S, I) \ - static const module_functions N {S, nullptr, &I}; \ - loaded_modules[S] = &N - load (&config::build2_config_load); load (&dist::build2_dist_load); load (&test::build2_test_load); @@ -526,9 +520,7 @@ main (int argc, char* argv[]) load (&in::build2_in_load); #ifndef BUILD2_BOOTSTRAP - TMP_LOAD (cli_config, "cli.config", cli::config_init); - TMP_LOAD (cli, "cli", cli::init); - + load (&cli::build2_cli_load); load (&bash::build2_bash_load); #endif } diff --git a/build2/cli/init.cxx b/build2/cli/init.cxx index 7b7a519..67aad29 100644 --- a/build2/cli/init.cxx +++ b/build2/cli/init.cxx @@ -368,5 +368,21 @@ namespace build2 return true; } + + static const module_functions mod_functions[] = + { + // NOTE: don't forget to also update the documentation in init.hxx if + // changing anything here. + + {"cli.config", nullptr, config_init}, + {"cli", nullptr, init}, + {nullptr, nullptr, nullptr} + }; + + const module_functions* + build2_cli_load () + { + return mod_functions; + } } } diff --git a/build2/cli/init.hxx b/build2/cli/init.hxx index 341dc11..4bb7d0d 100644 --- a/build2/cli/init.hxx +++ b/build2/cli/init.hxx @@ -14,23 +14,15 @@ namespace build2 { namespace cli { - bool - config_init (scope&, - scope&, - const location&, - unique_ptr&, - bool, - bool, - const variable_map&); - - bool - init (scope&, - scope&, - const location&, - unique_ptr&, - bool, - bool, - const variable_map&); + // Module `cli` does not require bootstrapping. + // + // Submodules: + // + // `cli.config` -- registers variables. + // `cli` -- loads cli.config and registers target types and rules. + // + extern "C" const module_functions* + build2_cli_load (); } } -- cgit v1.1