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/context.cxx | |
parent | ee36f1d58484479a2fa3547fad1eb1cc34c51c3e (diff) |
Pattern-type config.** variables with global visibility by default
Diffstat (limited to 'libbuild2/context.cxx')
-rw-r--r-- | libbuild2/context.cxx | 85 |
1 files changed, 42 insertions, 43 deletions
diff --git a/libbuild2/context.cxx b/libbuild2/context.cxx index 827894b..724a16e 100644 --- a/libbuild2/context.cxx +++ b/libbuild2/context.cxx @@ -476,65 +476,64 @@ namespace build2 // Enter builtin variables and patterns. // + const auto v_g (variable_visibility::normal); // Global. + const auto v_p (variable_visibility::project); + const auto v_t (variable_visibility::target); + const auto v_q (variable_visibility::prereq); - // All config.* variables are by default overridable. + // All config.** variables are by default overridable with global + // visibility. // - vp.insert_pattern ("config.**", nullopt, true, nullopt, true, false); + // For the config.**.configured semantics, see config::unconfigured(). + // + vp.insert_pattern ("config.**", nullopt, true, v_g, true, false); + vp.insert_pattern<bool> ("config.**.configured", false, v_p); // file.cxx:import() (note that order is important; see insert_pattern()). // - vp.insert_pattern<abs_dir_path> ( - "config.import.*", true, variable_visibility::normal, true); - vp.insert_pattern<path> ( - "config.import.**", true, variable_visibility::normal, true); + vp.insert_pattern<abs_dir_path> ("config.import.*", true, v_g, true); + vp.insert_pattern<path> ("config.import.**", true, v_g, true); // module.cxx:boot/init_module(). // - { - auto v_p (variable_visibility::project); - - vp.insert_pattern<bool> ("**.booted", false, v_p); - vp.insert_pattern<bool> ("**.loaded", false, v_p); - vp.insert_pattern<bool> ("**.configured", false, v_p); - } - - { - auto v_p (variable_visibility::project); - auto v_t (variable_visibility::target); - auto v_q (variable_visibility::prereq); + // Note that we also have the config.<module>.configured variable (see + // above). + // + vp.insert_pattern<bool> ("**.booted", false /* overridable */, v_p); + vp.insert_pattern<bool> ("**.loaded", false, v_p); + vp.insert_pattern<bool> ("**.configured", false, v_p); - var_src_root = &vp.insert<dir_path> ("src_root"); - var_out_root = &vp.insert<dir_path> ("out_root"); - var_src_base = &vp.insert<dir_path> ("src_base"); - var_out_base = &vp.insert<dir_path> ("out_base"); + var_src_root = &vp.insert<dir_path> ("src_root"); + var_out_root = &vp.insert<dir_path> ("out_root"); + var_src_base = &vp.insert<dir_path> ("src_base"); + var_out_base = &vp.insert<dir_path> ("out_base"); - var_forwarded = &vp.insert<bool> ("forwarded", v_p); + var_forwarded = &vp.insert<bool> ("forwarded", v_p); - // Note that subprojects is not typed since the value requires - // pre-processing (see file.cxx). - // - var_project = &vp.insert<project_name> ("project", v_p); - var_amalgamation = &vp.insert<dir_path> ("amalgamation", v_p); - var_subprojects = &vp.insert ("subprojects", v_p); - var_version = &vp.insert<string> ("version", v_p); + // Note that subprojects is not typed since the value requires + // pre-processing (see file.cxx). + // + var_project = &vp.insert<project_name> ("project", v_p); + var_amalgamation = &vp.insert<dir_path> ("amalgamation", v_p); + var_subprojects = &vp.insert ("subprojects", v_p); + var_version = &vp.insert<string> ("version", v_p); - var_project_url = &vp.insert<string> ("project.url", v_p); - var_project_summary = &vp.insert<string> ("project.summary", v_p); + var_project_url = &vp.insert<string> ("project.url", v_p); + var_project_summary = &vp.insert<string> ("project.summary", v_p); - var_import_target = &vp.insert<name> ("import.target"); + var_import_target = &vp.insert<name> ("import.target"); - var_extension = &vp.insert<string> ("extension", v_t); - var_clean = &vp.insert<bool> ("clean", v_t); - var_backlink = &vp.insert<string> ("backlink", v_t); - var_include = &vp.insert<string> ("include", v_q); + var_extension = &vp.insert<string> ("extension", v_t); + var_clean = &vp.insert<bool> ("clean", v_t); + var_backlink = &vp.insert<string> ("backlink", v_t); + var_include = &vp.insert<string> ("include", v_q); - // Backlink executables and (generated) documentation by default. - // - gs.target_vars[exe::static_type]["*"].assign (var_backlink) = "true"; - gs.target_vars[doc::static_type]["*"].assign (var_backlink) = "true"; + // Backlink executables and (generated) documentation by default. + // + gs.target_vars[exe::static_type]["*"].assign (var_backlink) = "true"; + gs.target_vars[doc::static_type]["*"].assign (var_backlink) = "true"; - var_build_meta_operation = &vp.insert<string> ("build.meta_operation"); - } + var_build_meta_operation = &vp.insert<string> ("build.meta_operation"); // Register builtin rules. // |