From 2a0f9e035f673f1ee387924501a31990de37f18d Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 24 Apr 2015 12:29:20 +0200 Subject: Implement lib/liba/libso{} target group, shared/static library build --- build/b.cxx | 69 ++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 24 deletions(-) (limited to 'build/b.cxx') diff --git a/build/b.cxx b/build/b.cxx index 01ca248..eac0768 100644 --- a/build/b.cxx +++ b/build/b.cxx @@ -77,14 +77,15 @@ namespace build } } -#include +#include + +#include +#include #include #include #include -#include - using namespace build; int @@ -139,11 +140,13 @@ main (int argc, char* argv[]) target_types.insert (dir::static_type); target_types.insert (fsdir::static_type); - target_types.insert (obja::static_type); - target_types.insert (objso::static_type); - target_types.insert (obj::static_type); - target_types.insert (exe::static_type); - target_types.insert (lib::static_type); + target_types.insert (bin::obja::static_type); + target_types.insert (bin::objso::static_type); + target_types.insert (bin::obj::static_type); + target_types.insert (bin::exe::static_type); + target_types.insert (bin::liba::static_type); + target_types.insert (bin::libso::static_type); + target_types.insert (bin::lib::static_type); target_types.insert (cxx::h::static_type); target_types.insert (cxx::c::static_type); @@ -155,27 +158,45 @@ main (int argc, char* argv[]) // Register rules. // - cxx::link cxx_link; - rules[default_id][typeid (exe)].emplace ("cxx.gnu.link", cxx_link); - rules[update_id][typeid (exe)].emplace ("cxx.gnu.link", cxx_link); - rules[clean_id][typeid (exe)].emplace ("cxx.gnu.link", cxx_link); + bin::obj_rule obj_rule; + bin::lib_rule lib_rule; + { + using namespace bin; + + rules[default_id][typeid (obj)].emplace ("bin.obj", obj_rule); + rules[update_id][typeid (obj)].emplace ("bin.obj", obj_rule); + rules[clean_id][typeid (obj)].emplace ("bin.obj", obj_rule); - rules[default_id][typeid (lib)].emplace ("cxx.gnu.link", cxx_link); - rules[update_id][typeid (lib)].emplace ("cxx.gnu.link", cxx_link); - rules[clean_id][typeid (lib)].emplace ("cxx.gnu.link", cxx_link); + rules[default_id][typeid (lib)].emplace ("bin.lib", lib_rule); + rules[update_id][typeid (lib)].emplace ("bin.lib", lib_rule); + rules[clean_id][typeid (lib)].emplace ("bin.lib", lib_rule); + } cxx::compile cxx_compile; - rules[default_id][typeid (obja)].emplace ("cxx.gnu.compile", cxx_compile); - rules[update_id][typeid (obja)].emplace ("cxx.gnu.compile", cxx_compile); - rules[clean_id][typeid (obja)].emplace ("cxx.gnu.compile", cxx_compile); + cxx::link cxx_link; + { + using namespace bin; + + rules[default_id][typeid (obja)].emplace ("cxx.gnu.compile", cxx_compile); + rules[update_id][typeid (obja)].emplace ("cxx.gnu.compile", cxx_compile); + rules[clean_id][typeid (obja)].emplace ("cxx.gnu.compile", cxx_compile); - rules[default_id][typeid (objso)].emplace ("cxx.gnu.compile", cxx_compile); - rules[update_id][typeid (objso)].emplace ("cxx.gnu.compile", cxx_compile); - rules[clean_id][typeid (objso)].emplace ("cxx.gnu.compile", cxx_compile); + rules[default_id][typeid (objso)].emplace ("cxx.gnu.compile", cxx_compile); + rules[update_id][typeid (objso)].emplace ("cxx.gnu.compile", cxx_compile); + rules[clean_id][typeid (objso)].emplace ("cxx.gnu.compile", cxx_compile); - rules[default_id][typeid (obj)].emplace ("cxx.gnu.compile", cxx_compile); - rules[update_id][typeid (obj)].emplace ("cxx.gnu.compile", cxx_compile); - rules[clean_id][typeid (obj)].emplace ("cxx.gnu.compile", cxx_compile); + rules[default_id][typeid (exe)].emplace ("cxx.gnu.link", cxx_link); + rules[update_id][typeid (exe)].emplace ("cxx.gnu.link", cxx_link); + rules[clean_id][typeid (exe)].emplace ("cxx.gnu.link", cxx_link); + + rules[default_id][typeid (liba)].emplace ("cxx.gnu.link", cxx_link); + rules[update_id][typeid (liba)].emplace ("cxx.gnu.link", cxx_link); + rules[clean_id][typeid (liba)].emplace ("cxx.gnu.link", cxx_link); + + rules[default_id][typeid (libso)].emplace ("cxx.gnu.link", cxx_link); + rules[update_id][typeid (libso)].emplace ("cxx.gnu.link", cxx_link); + rules[clean_id][typeid (libso)].emplace ("cxx.gnu.link", cxx_link); + } dir_rule dir_r; rules[default_id][typeid (dir)].emplace ("dir", dir_r); -- cgit v1.1