From 4f5c9357b7e17b4fb9ecaad36c8740a05cfc1bc6 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 27 Jun 2022 13:11:06 +0200 Subject: Add support for rule-specific import phase 2 For example: import! [metadata, rule_hint=cxx.link] lib = libhello%lib{hello} --- libbuild2/file.ixx | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'libbuild2/file.ixx') diff --git a/libbuild2/file.ixx b/libbuild2/file.ixx index dbd892d..43c46c9 100644 --- a/libbuild2/file.ixx +++ b/libbuild2/file.ixx @@ -24,6 +24,7 @@ namespace build2 LIBBUILD2_SYMEXPORT const target* import (context&, const prerequisite_key&, + const string& hint, bool optional_, const optional& metadata, // False or metadata key. bool existing, @@ -39,13 +40,13 @@ namespace build2 // Looks like the only way to do this is to keep location in name and // then in prerequisite. Perhaps one day... // - return *import (ctx, pk, false, nullopt, false, location ()); + return *import (ctx, pk, string (), false, nullopt, false, location ()); } inline import_result import_direct (scope& base, name tgt, - bool ph2, bool opt, bool md, + const optional& ph2, bool opt, bool md, const location& loc, const char* w) { bool dummy (false); @@ -59,7 +60,13 @@ namespace build2 bool ph2, bool opt, bool md, const location& loc, const char* w) { - auto r (import_direct (base, move (tgt), ph2, opt, md, loc, w)); + auto r (import_direct (base, + move (tgt), + ph2 ? optional (string ()) : nullopt, + opt, + md, + loc, + w)); return import_result { r.target != nullptr ? &r.target->as () : nullptr, move (r.name), @@ -74,7 +81,14 @@ namespace build2 bool ph2, bool opt, bool md, const location& loc, const char* w) { - auto r (import_direct (nv, base, move (tgt), ph2, opt, md, loc, w)); + auto r (import_direct (nv, + base, + move (tgt), + ph2 ? optional (string ()) : nullopt, + opt, + md, + loc, + w)); return import_result { r.target != nullptr ? &r.target->as () : nullptr, move (r.name), @@ -84,6 +98,6 @@ namespace build2 inline const target* import_existing (context& ctx, const prerequisite_key& pk) { - return import (ctx, pk, false, nullopt, true, location ()); + return import (ctx, pk, string (), false, nullopt, true, location ()); } } -- cgit v1.1