aboutsummaryrefslogtreecommitdiff
path: root/build/cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-06-18 10:11:27 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-06-18 10:11:27 +0200
commit33ef0312f43646ab3dd9ff95430d70d24bc1d701 (patch)
treec67fa9081431da5faddbfb62eb275b9ca11dc1f3 /build/cxx
parent0490097565744b4a37de230b4d23d89902d15596 (diff)
Make cxx.export.* machinery work for library chains
Diffstat (limited to 'build/cxx')
-rw-r--r--build/cxx/rule.cxx16
1 files changed, 7 insertions, 9 deletions
diff --git a/build/cxx/rule.cxx b/build/cxx/rule.cxx
index d5a9b9c..4fce59a 100644
--- a/build/cxx/rule.cxx
+++ b/build/cxx/rule.cxx
@@ -839,20 +839,18 @@ namespace build
//
pt->prerequisites.emplace_back (cp);
- // Add our imported lib*{} prerequisites to the object file (see
+ // Add our lib*{} prerequisites to the object file (see
// cxx.export.poptions above for details).
//
+ // Initially, we were only adding imported libraries, but
+ // there is a problem with this approach: the non-imported
+ // library might depend on the imported one(s) which we
+ // will never "see" unless we add this library as well.
+ //
for (prerequisite& p: group_prerequisites (t))
{
if (p.is_a<lib> () || p.is_a<liba> () || p.is_a<libso> ())
- {
- // Check that it is imported, that is its root scope differs
- // from ours.
- //
- if (p.dir.absolute () && // Imported is always absolute.
- scopes.find (p.dir).root_scope () != root)
- pt->prerequisites.emplace_back (p);
- }
+ pt->prerequisites.emplace_back (p);
}
build::match (a, *ot);