From 40537e7e0941926168226f8a841544f3536a55cb Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 29 Apr 2015 14:57:40 +0200 Subject: Get rid of on-demand configuration for now --- build/cxx/rule.cxx | 47 ++++------------------------------------------- 1 file changed, 4 insertions(+), 43 deletions(-) (limited to 'build/cxx/rule.cxx') diff --git a/build/cxx/rule.cxx b/build/cxx/rule.cxx index a23e81e..c942de9 100644 --- a/build/cxx/rule.cxx +++ b/build/cxx/rule.cxx @@ -25,8 +25,6 @@ #include -#include - using namespace std; namespace build @@ -478,56 +476,19 @@ namespace build return t.is_a () ? type::e : (t.is_a () ? type::a : type::so); } - static const list_value default_exe_order (names {name ("shared"), - name ("static")}); - static const list_value default_liba_order ("static"); - static const list_value default_libso_order ("shared"); - link::order link:: link_order (target& t) { const char* var; - const char* cvar; - const list_value* plv; - //@@ This should be in the bin module, not cxx! @@ remove config include. - // Maybe this should be triggered via the variable access? The same - // for bin.lib? After all, it can be queried in the buildfile. - // switch (link_type (t)) { - case type::e: - var = "bin.exe.lib"; - cvar = "config.bin.exe.lib"; - plv = &default_exe_order; - break; - case type::a: - var = "bin.liba.lib"; - cvar = "config.bin.liba.lib"; - plv = &default_liba_order; - break; - case type::so: - var = "bin.libso.lib"; - cvar = "config.bin.libso.lib"; - plv = &default_libso_order; - break; - } - - if (auto tv = t[var]) - plv = &tv.as (); - else - { - scope& root (*t.root_scope ()); - auto rv (root.vars.assign (var)); - rv = config::required (root, cvar, *plv).first; - plv = &rv.as (); + case type::e: var = "bin.exe.lib"; break; + case type::a: var = "bin.liba.lib"; break; + case type::so: var = "bin.libso.lib"; break; } - //@@ Need to validate the value. Would be more efficient - // to do it once on assignment than every time on query. - // Custom var type? - // - const list_value& lv (*plv); + const list_value& lv (t[var].as ()); return lv[0].value == "shared" ? lv.size () > 1 && lv[1].value == "static" ? order::so_a : order::so : lv.size () > 1 && lv[1].value == "shared" ? order::a_so : order::a; -- cgit v1.1