diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2020-03-18 08:25:19 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2020-03-18 08:25:19 +0200 |
commit | 7d0c4c5ab6760e4487230f9eda87c352609be553 (patch) | |
tree | cec71d00d5186aa6aa03244b143858d5bb2f54de /libbuild2/config | |
parent | ee36f1d58484479a2fa3547fad1eb1cc34c51c3e (diff) |
Pattern-type config.** variables with global visibility by default
Diffstat (limited to 'libbuild2/config')
-rw-r--r-- | libbuild2/config/init.cxx | 29 | ||||
-rw-r--r-- | libbuild2/config/utility.cxx | 4 |
2 files changed, 20 insertions, 13 deletions
diff --git a/libbuild2/config/init.cxx b/libbuild2/config/init.cxx index ca34d52..f15bfc5 100644 --- a/libbuild2/config/init.cxx +++ b/libbuild2/config/init.cxx @@ -37,15 +37,21 @@ namespace build2 l5 ([&]{trace << "for " << rs;}); - // Note that the config.<name>* variables belong to the module <name>. - // So the only "special" variables we can allocate in config.* are - // config.config.*, names that have been "gifted" to us by other modules - // (like config.version below) as well as names that we have reserved to - // not be valid module names (`build`). We also currently treat `import` - // as special. + // Note that the config.<name>* variables belong to the module/project + // <name>. So the only "special" variables we can allocate in config.** + // are config.config.**, names that have been "gifted" to us by other + // modules (like config.version below) as well as names that we have + // reserved to not be valid module names (`build`). We also currently + // treat `import` as special. + // + // NOTE: all config.** variables are by default made (via a pattern) to + // be overridable with global visibility. So we must override this if a + // different semantics is required. // auto& vp (rs.var_pool ()); + const auto v_p (variable_visibility::project); + // While config.config.load (see below) could theoretically be specified // in a buildfile, config.config.save is expected to always be specified // as a command line override. @@ -88,9 +94,7 @@ namespace build2 // Use the NULL value to clear. // auto& c_p (vp.insert<vector<pair<string, string>>> ( - "config.config.persist", - true /* ovr */, - variable_visibility::project)); + "config.config.persist", true /* ovr */, v_p)); // Only create the module if we are configuring or creating or if it was // requested with config.config.module (useful if we need to call @@ -99,7 +103,7 @@ namespace build2 // Detecting the former (configuring/creating) is a bit tricky since the // build2 core may not yet know if this is the case. But we know. // - auto& c_m (vp.insert<bool> ("config.config.module", false /*ovr*/)); + auto& c_m (vp.insert<bool> ("config.config.module", false /*ovr*/, v_p)); const string& mname (ctx.current_mname); const string& oname (ctx.current_oname); @@ -161,8 +165,11 @@ namespace build2 l5 ([&]{trace << "for " << rs;}); auto& vp (rs.var_pool ()); + + const auto v_p (variable_visibility::project); + auto& c_l (vp.insert<paths> ("config.config.load", true /* ovr */)); - auto& c_v (vp.insert<uint64_t> ("config.version", false /*ovr*/)); + auto& c_v (vp.insert<uint64_t> ("config.version", false /*ovr*/, v_p)); // Load config.build if one exists followed by extra files specified in // config.config.load (we don't need to worry about disfigure since we diff --git a/libbuild2/config/utility.cxx b/libbuild2/config/utility.cxx index 7415085..cf0f73b 100644 --- a/libbuild2/config/utility.cxx +++ b/libbuild2/config/utility.cxx @@ -84,7 +84,7 @@ namespace build2 bool unconfigured (scope& rs, const string& n) { - // Pattern-typed in boot() as bool. + // Pattern-typed as bool. // const variable& var ( rs.var_pool ().insert ("config." + n + ".configured")); @@ -98,7 +98,7 @@ namespace build2 bool unconfigured (scope& rs, const string& n, bool v) { - // Pattern-typed in boot() as bool. + // Pattern-typed as bool. // const variable& var ( rs.var_pool ().insert ("config." + n + ".configured")); |