From cea5dd6f96f2c06467264644f800619e9d24564d Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 8 Apr 2020 13:44:33 +0200 Subject: Allow configuration variables in unnamed projects While generally a bad idea, there are valid situations where this may happen, such as a standalone build of the tests subproject in test-installed. --- libbuild2/file.cxx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'libbuild2/file.cxx') diff --git a/libbuild2/file.cxx b/libbuild2/file.cxx index 3e6282c..cbad9ec 100644 --- a/libbuild2/file.cxx +++ b/libbuild2/file.cxx @@ -1305,7 +1305,7 @@ namespace build2 // if (!p.config_report.empty () && verb >= (p.config_report_new ? 2 : 3)) { - const project_name& proj (named_project (root)); // Must be there. + const project_name& proj (named_project (root)); // Can be empty. // @@ TODO/MAYBE: // @@ -1323,7 +1323,14 @@ namespace build2 // the repetitive config.. So we are only going to print the // part after (see parser::parse_config() for details). // - string stem ('.' + proj.variable () + '.'); + // But if there is no named project, then we print everything after + // config. This feels right since there could be zero identifiable + // information about the project in the header line. For example: + // + // config @/tmp/tests + // libhello.tests.remote true + // + string stem (!proj.empty () ? '.' + proj.variable () + '.' : string ()); names storage; for (const pair& lf: p.config_report) @@ -1342,8 +1349,10 @@ namespace build2 } else { - size_t p (l.var->name.find (stem)); // Must be there. - n = string (l.var->name, p + stem.size ()); + size_t p (!stem.empty () + ? l.var->name.find (stem) + stem.size () + : 7); // "config." + n = string (l.var->name, p); } dr << "\n "; -- cgit v1.1