aboutsummaryrefslogtreecommitdiff
path: root/build2/in/init.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/in/init.cxx')
-rw-r--r--build2/in/init.cxx110
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;
- }
- }
-}