aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/common.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-02-03 09:45:46 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-02-03 09:45:46 +0200
commit90d37f3fe126fa7b3d97fb071f537f910bd4a7fa (patch)
tree95d8395498c6d2ba7909e46212414c648647855f /libbuild2/cc/common.cxx
parent67d799852492743a93a464002395ccb624514fb8 (diff)
Propagate relevant options/prerequisites to header unit sidebuilds
Diffstat (limited to 'libbuild2/cc/common.cxx')
-rw-r--r--libbuild2/cc/common.cxx17
1 files changed, 15 insertions, 2 deletions
diff --git a/libbuild2/cc/common.cxx b/libbuild2/cc/common.cxx
index 1bbdf14..7492181 100644
--- a/libbuild2/cc/common.cxx
+++ b/libbuild2/cc/common.cxx
@@ -335,9 +335,22 @@ namespace build2
// on Windows import-installed DLLs may legally have empty
// paths.
//
- if (t.mtime () == timestamp_unknown)
+ const char* w (nullptr);
+ if (t.ctx.phase == run_phase::match)
+ {
+ size_t o (t.state[a].task_count.load (memory_order_consume) -
+ t.ctx.count_base ());
+
+ if (o != target::offset_applied &&
+ o != target::offset_executed)
+ w = "not matched";
+ }
+ else if (t.mtime () == timestamp_unknown)
+ w = "out of date";
+
+ if (w != nullptr)
fail << (impl ? "implementation" : "interface")
- << " dependency " << t << " is out of date" <<
+ << " dependency " << t << " is " << w <<
info << "mentioned in *.export." << (impl ? "imp_" : "")
<< "libs of target " << l <<
info << "is it a prerequisite of " << l << "?";