diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-08-31 13:45:57 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-08-31 13:45:57 +0200 |
commit | 5974cab56148a18628bfb423189e016ade2d40f9 (patch) | |
tree | 472a7966d0e1c5725f0736c73812cbdeaab827dc /build/operation.cxx | |
parent | 2a9d673f298b623db061ee85d397563d644c8268 (diff) |
Rework scoping logic
Now the src directory is entered into the scope map and points to
the same scope as out. This means that targets that are in src,
not out (e.g., source files) will "see" rules, variables, etc.
This becomes important when we try, for example, to install a
source file (say, a header) from src: we need the rule as well
as the install.* variables.
Diffstat (limited to 'build/operation.cxx')
-rw-r--r-- | build/operation.cxx | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/build/operation.cxx b/build/operation.cxx index 55a926a..9cc8025 100644 --- a/build/operation.cxx +++ b/build/operation.cxx @@ -62,13 +62,11 @@ namespace build load_root_pre (root); // Create the base scope. Note that its existence doesn't - // mean it was already processed as a base scope; it can - // be the same as root. + // mean it was already setup as a base scope; it can be the + // same as root. // - scope& base (scopes[out_base]); - - base.assign ("out_base") = out_base; - base.src_path_ = &as<dir_path> (base.assign ("src_base") = src_base); + auto i (scopes.insert (out_base, nullptr, true, false)); + scope& base (setup_base (i, out_base, src_base)); // Load the buildfile unless it has already been loaded. // |