From ab4421747146aa7995f0cfb1a639c9121c82c915 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 8 Jan 2015 13:27:15 +0200 Subject: Implement tracing support Also use to-relative path translation in diagnostics. --- build/prerequisite.cxx | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'build/prerequisite.cxx') diff --git a/build/prerequisite.cxx b/build/prerequisite.cxx index 8153a6c..c43827d 100644 --- a/build/prerequisite.cxx +++ b/build/prerequisite.cxx @@ -6,7 +6,9 @@ #include +#include #include // target_type +#include using namespace std; @@ -15,9 +17,36 @@ namespace build ostream& operator<< (ostream& os, const prerequisite& p) { - // @@ TODO: need to come up with a relative (to current) path. + if (p.target != nullptr) + os << *p.target; + else + { + os << p.type.name << '{'; - return os << p.type.name << '{' << p.name << '}'; + // Print scope unless the directory is absolute. + // + if (!p.directory.absolute ()) + { + string s (diagnostic_string (p.scope.path ())); + + if (!s.empty ()) + os << s << path::traits::directory_separator << ": "; + } + + // Print directory. + // + if (!p.directory.empty ()) + { + string s (diagnostic_string (p.directory)); + + if (!s.empty ()) + os << s << path::traits::directory_separator; + } + + os << p.name << '}'; + } + + return os; } bool -- cgit v1.1