diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2019-07-08 14:55:35 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2019-07-24 13:53:25 +0200 |
commit | 83bb02cada0b894d9134cc5489999e0f0fe8bd7c (patch) | |
tree | 1dedff27ce2b7d54bd6b0875c9125f4dafde2e80 /build2/in/init.cxx | |
parent | 1ba934bb973c234b68751ee5866365c14da4e795 (diff) |
Move in build system module to separate library
Diffstat (limited to 'build2/in/init.cxx')
-rw-r--r-- | build2/in/init.cxx | 110 |
1 files changed, 0 insertions, 110 deletions
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 <build2/in/init.hxx> - -#include <libbuild2/scope.hxx> -#include <libbuild2/context.hxx> -#include <libbuild2/variable.hxx> -#include <libbuild2/diagnostics.hxx> - -#include <build2/in/rule.hxx> -#include <build2/in/target.hxx> - -using namespace std; - -namespace build2 -{ - namespace in - { - static const rule rule_ ("in", "in"); - - bool - base_init (scope& rs, - scope&, - const location&, - unique_ptr<module_base>&, - 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<string> ("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<string> ("in.substitution"); - } - - // Register target types. - // - rs.target_types.insert<in> (); - - return true; - } - - bool - init (scope& rs, - scope& bs, - const location& loc, - unique_ptr<module_base>&, - bool, - bool, - const variable_map&) - { - tracer trace ("in::init"); - l5 ([&]{trace << "for " << bs;}); - - // Load in.base. - // - if (!cast_false<bool> (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<path_target> (perform_update_id, "in", rule_); - r.insert<path_target> (perform_clean_id, "in", rule_); - r.insert<path_target> (configure_update_id, "in", rule_); - } - - return true; - } - } -} |