From ea24f530048cbce0c5335ca3fd3632c8ce34315a Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Sat, 24 Aug 2019 16:37:29 +0300 Subject: Move bin build system module to separate library --- build2/bin/rule.cxx | 89 ----------------------------------------------------- 1 file changed, 89 deletions(-) delete mode 100644 build2/bin/rule.cxx (limited to 'build2/bin/rule.cxx') diff --git a/build2/bin/rule.cxx b/build2/bin/rule.cxx deleted file mode 100644 index 42ba86a..0000000 --- a/build2/bin/rule.cxx +++ /dev/null @@ -1,89 +0,0 @@ -// file : build2/bin/rule.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include - -#include -#include -#include -#include - -#include - -using namespace std; - -namespace build2 -{ - namespace bin - { - // fail_rule - // - bool fail_rule:: - match (action a, target& t, const string&) const - { - const char* n (t.dynamic_type ().name); // Ignore derived type. - - fail << diag_doing (a, t) << " target group" << - info << "explicitly select " << n << "e{}, " << n << "a{}, or " - << n << "s{} member" << endf; - } - - recipe fail_rule:: - apply (action, target&) const {return empty_recipe;} - - // lib_rule - // - // The whole logic is pretty much as if we had our two group members as - // our prerequisites. - // - lib_rule::members lib_rule:: - build_members (const scope& rs) - { - const string& type (cast (rs["bin.lib"])); - - bool a (type == "static" || type == "both"); - bool s (type == "shared" || type == "both"); - - if (!a && !s) - fail << "unknown library type: " << type << - info << "'static', 'shared', or 'both' expected"; - - return members {a, s}; - } - - bool lib_rule:: - match (action, target& xt, const string&) const - { - lib& t (xt.as ()); - - members bm (build_members (t.root_scope ())); - t.a = bm.a ? &search (t, t.dir, t.out, t.name) : nullptr; - t.s = bm.s ? &search (t, t.dir, t.out, t.name) : nullptr; - - return true; - } - - recipe lib_rule:: - apply (action a, target& xt) const - { - lib& t (xt.as ()); - - //@@ outer: also prerequisites (if outer) or not? - - const target* m[] = {t.a, t.s}; - match_members (a, t, m); - - return &perform; - } - - target_state lib_rule:: - perform (action a, const target& xt) - { - const lib& t (xt.as ()); - - const target* m[] = {t.a, t.s}; - return execute_members (a, t, m); - } - } -} -- cgit v1.1