diff options
Diffstat (limited to 'build/cxx/module.cxx')
-rw-r--r-- | build/cxx/module.cxx | 131 |
1 files changed, 68 insertions, 63 deletions
diff --git a/build/cxx/module.cxx b/build/cxx/module.cxx index 4c0e493..c704ab0 100644 --- a/build/cxx/module.cxx +++ b/build/cxx/module.cxx @@ -48,18 +48,57 @@ namespace build load_module (false, "bin", r, b, loc); } + // Enter module variables. + // + // @@ Probably should only be done on load; make sure reset() unloads + // modules. + // + // @@ Should probably cache the variable pointers so we don't have + // to keep looking them up. + // + if (first) + { + auto& v (var_pool); + + v.find ("config.cxx", string_type); //@@ VAR type + + v.find ("config.cxx.poptions", strings_type); + v.find ("config.cxx.coptions", strings_type); + v.find ("config.cxx.loptions", strings_type); + v.find ("config.cxx.libs", strings_type); + + v.find ("cxx.poptions", strings_type); + v.find ("cxx.coptions", strings_type); + v.find ("cxx.loptions", strings_type); + v.find ("cxx.libs", strings_type); + + v.find ("cxx.export.poptions", strings_type); + v.find ("cxx.export.coptions", strings_type); + v.find ("cxx.export.loptions", strings_type); + v.find ("cxx.export.libs", strings_type); + + v.find ("cxx.std", string_type); + + v.find ("h.ext", string_type); + v.find ("c.ext", string_type); + v.find ("hxx.ext", string_type); + v.find ("ixx.ext", string_type); + v.find ("txx.ext", string_type); + v.find ("cxx.ext", string_type); + } + // Register target types. // { - auto& tts (b.target_types); + auto& t (b.target_types); - tts.insert<h> (); - tts.insert<c> (); + t.insert<h> (); + t.insert<c> (); - tts.insert<cxx> (); - tts.insert<hxx> (); - tts.insert<ixx> (); - tts.insert<txx> (); + t.insert<cxx> (); + t.insert<hxx> (); + t.insert<ixx> (); + t.insert<txx> (); } // Register rules. @@ -67,74 +106,40 @@ namespace build { using namespace bin; - auto& rs (b.rules); + auto& r (b.rules); - rs.insert<obja> (perform_id, update_id, "cxx", compile::instance); - rs.insert<obja> (perform_id, clean_id, "cxx", compile::instance); + r.insert<obja> (perform_update_id, "cxx.compile", compile::instance); - rs.insert<objso> (perform_id, update_id, "cxx", compile::instance); - rs.insert<objso> (perform_id, clean_id, "cxx", compile::instance); + r.insert<obja> (perform_update_id, "cxx.compile", compile::instance); + r.insert<obja> (perform_clean_id, "cxx.compile", compile::instance); - rs.insert<exe> (perform_id, update_id, "cxx", link::instance); - rs.insert<exe> (perform_id, clean_id, "cxx", link::instance); + r.insert<objso> (perform_update_id, "cxx.compile", compile::instance); + r.insert<objso> (perform_clean_id, "cxx.compile", compile::instance); - rs.insert<liba> (perform_id, update_id, "cxx", link::instance); - rs.insert<liba> (perform_id, clean_id, "cxx", link::instance); + r.insert<exe> (perform_update_id, "cxx.link", link::instance); + r.insert<exe> (perform_clean_id, "cxx.link", link::instance); - rs.insert<libso> (perform_id, update_id, "cxx", link::instance); - rs.insert<libso> (perform_id, clean_id, "cxx", link::instance); + r.insert<liba> (perform_update_id, "cxx.link", link::instance); + r.insert<liba> (perform_clean_id, "cxx.link", link::instance); + + r.insert<libso> (perform_update_id, "cxx.link", link::instance); + r.insert<libso> (perform_clean_id, "cxx.link", link::instance); // Register for configure so that we detect unresolved imports // during configuration rather that later, e.g., during update. // - rs.insert<obja> (configure_id, update_id, "cxx", compile::instance); - rs.insert<objso> (configure_id, update_id, "cxx", compile::instance); - rs.insert<exe> (configure_id, update_id, "cxx", link::instance); - rs.insert<liba> (configure_id, update_id, "cxx", link::instance); - rs.insert<libso> (configure_id, update_id, "cxx", link::instance); + r.insert<obja> (configure_update_id, "cxx.compile", compile::instance); + r.insert<objso> (configure_update_id, "cxx.compile", compile::instance); + + r.insert<exe> (configure_update_id, "cxx.link", link::instance); + r.insert<liba> (configure_update_id, "cxx.link", link::instance); + r.insert<libso> (configure_update_id, "cxx.link", link::instance); //@@ Should we check if install module was loaded (see bin)? // - rs.insert<exe> (perform_id, install_id, "cxx", install::instance); - rs.insert<liba> (perform_id, install_id, "cxx", install::instance); - rs.insert<libso> (perform_id, install_id, "cxx", install::instance); - } - - // Enter module variables. - // - // @@ Probably should only be done on load; make sure reset() unloads - // modules. - // - // @@ Should probably cache the variable pointers so we don't have - // to keep looking them up. - // - if (first) - { - var_pool.find ("config.cxx", string_type); //@@ VAR type - - var_pool.find ("config.cxx.poptions", strings_type); - var_pool.find ("config.cxx.coptions", strings_type); - var_pool.find ("config.cxx.loptions", strings_type); - var_pool.find ("config.cxx.libs", strings_type); - - var_pool.find ("cxx.poptions", strings_type); - var_pool.find ("cxx.coptions", strings_type); - var_pool.find ("cxx.loptions", strings_type); - var_pool.find ("cxx.libs", strings_type); - - var_pool.find ("cxx.export.poptions", strings_type); - var_pool.find ("cxx.export.coptions", strings_type); - var_pool.find ("cxx.export.loptions", strings_type); - var_pool.find ("cxx.export.libs", strings_type); - - var_pool.find ("cxx.std", string_type); - - var_pool.find ("h.ext", string_type); - var_pool.find ("c.ext", string_type); - var_pool.find ("hxx.ext", string_type); - var_pool.find ("ixx.ext", string_type); - var_pool.find ("txx.ext", string_type); - var_pool.find ("cxx.ext", string_type); + r.insert<exe> (perform_install_id, "cxx.install", install::instance); + r.insert<liba> (perform_install_id, "cxx.install", install::instance); + r.insert<libso> (perform_install_id, "cxx.install", install::instance); } // Configure. |