From 83bb02cada0b894d9134cc5489999e0f0fe8bd7c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 8 Jul 2019 14:55:35 +0200 Subject: Move in build system module to separate library --- build2/in/init.cxx | 110 ----------------------------------------------------- 1 file changed, 110 deletions(-) delete mode 100644 build2/in/init.cxx (limited to 'build2/in/init.cxx') diff --git a/build2/in/init.cxx b/build2/in/init.cxx deleted file mode 100644 index f01fe20..0000000 --- a/build2/in/init.cxx +++ /dev/null @@ -1,110 +0,0 @@ -// file : build2/in/init.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include - -#include -#include -#include -#include - -#include -#include - -using namespace std; - -namespace build2 -{ - namespace in - { - static const rule rule_ ("in", "in"); - - bool - base_init (scope& rs, - scope&, - const location&, - unique_ptr&, - bool first, - bool, - const variable_map&) - { - tracer trace ("in::base_init"); - l5 ([&]{trace << "for " << rs;}); - - assert (first); - - // Enter variables. - // - { - auto& vp (var_pool.rw (rs)); - - // Alternative variable substitution symbol with '$' being the - // default. - // - vp.insert ("in.symbol"); - - // Substitution mode. Valid values are 'strict' (default) and 'lax'. - // In the strict mode every substitution symbol is expected to start a - // substitution with the double symbol (e.g., $$) serving as an escape - // sequence. - // - // In the lax mode a pair of substitution symbols is only treated as a - // substitution if what's between them looks like a build2 variable - // name (i.e., doesn't contain spaces, etc). Everything else, - // including unterminated substitution symbols, is copied as is. Note - // also that in this mode the double symbol is not treated as an - // escape sequence. - // - // The lax mode is mostly useful when trying to reuse existing .in - // files, for example, from autoconf. Note, however, that the lax mode - // is still stricter than the autoconf's semantics which also leaves - // unknown substitutions as is. - // - vp.insert ("in.substitution"); - } - - // Register target types. - // - rs.target_types.insert (); - - return true; - } - - bool - init (scope& rs, - scope& bs, - const location& loc, - unique_ptr&, - bool, - bool, - const variable_map&) - { - tracer trace ("in::init"); - l5 ([&]{trace << "for " << bs;}); - - // Load in.base. - // - if (!cast_false (rs["in.base.loaded"])) - load_module (rs, rs, "in.base", loc); - - // Register rules. - // - { - auto& r (bs.rules); - - // There are rules that are "derived" from this generic in rule in - // order to provide extended preprocessing functionality (see the - // version module for an example). To make sure they are tried first - // we register for path_target, not file, but in rule::match() we only - // match if the target is a file. A bit of a hack. - // - r.insert (perform_update_id, "in", rule_); - r.insert (perform_clean_id, "in", rule_); - r.insert (configure_update_id, "in", rule_); - } - - return true; - } - } -} -- cgit v1.1