aboutsummaryrefslogtreecommitdiff
path: root/build2/cc/link-rule.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-02-14 12:27:11 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-02-14 12:27:11 +0200
commit8d1735e04faadaa6765c71b12a96188e6d56c9fa (patch)
treeaa5bb1d0a76e1e525bc4dd9cd5177c35d5d532c8 /build2/cc/link-rule.cxx
parentedc9022131b77cec3fe5a662766e36fa9a71d23e (diff)
Don't ignore objX{} and bmiX{} prerequisites in cc::link_rule
Diffstat (limited to 'build2/cc/link-rule.cxx')
-rw-r--r--build2/cc/link-rule.cxx30
1 files changed, 14 insertions, 16 deletions
diff --git a/build2/cc/link-rule.cxx b/build2/cc/link-rule.cxx
index cd355c6..c59597a 100644
--- a/build2/cc/link-rule.cxx
+++ b/build2/cc/link-rule.cxx
@@ -630,12 +630,15 @@ namespace build2
//
else
{
- // @@ Temporary hack until we get the default outer operation for
- // update. This allows operations like test and install to skip
- // such tacked on stuff.
- //
- if (current_outer_oif != nullptr)
- continue;
+ if (!p.is_a<objx> () && !p.is_a<bmix> ())
+ {
+ // @@ Temporary hack until we get the default outer operation
+ // for update. This allows operations like test and install to
+ // skip such tacked on stuff.
+ //
+ if (current_outer_oif != nullptr)
+ continue;
+ }
pt = &p.search (t);
}
@@ -792,8 +795,7 @@ namespace build2
if (p1.is_a<fsdir> () ||
p1.is_a<libx> () ||
p1.is_a<liba> () || p1.is_a<libs> () || p1.is_a<libux> () ||
- p1.is_a<bmi> () ||
- p1.is_a<bmie> () || p1.is_a<bmia> () || p1.is_a<bmis> () ||
+ p1.is_a<bmi> () || p1.is_a<bmix> () ||
(p.is_a (mod ? *x_mod : x_src) && x_header (p1)) ||
(p.is_a<c> () && p1.is_a<h> ()))
continue;
@@ -1555,16 +1557,14 @@ namespace build2
//
if (modules)
{
- if (pt->is_a<bmie> () || pt->is_a<bmia> () || pt->is_a<bmis> ())
+ if (pt->is_a<bmix> ())
pt = pt->member;
}
const file* f;
bool la (false), ls (false);
- if ((f = pt->is_a<obje> ()) ||
- (f = pt->is_a<obja> ()) ||
- (f = pt->is_a<objs> ()) ||
+ if ((f = pt->is_a<objx> ()) ||
(!lt.static_library () && // @@ UTL: TODO libua to liba link.
((la = (f = pt->is_a<liba> ())) ||
(la = (f = pt->is_a<libux> ())) ||
@@ -1841,16 +1841,14 @@ namespace build2
if (modules)
{
- if (pt->is_a<bmie> () || pt->is_a<bmia> () || pt->is_a<bmis> ())
+ if (pt->is_a<bmix> ())
pt = pt->member;
}
const file* f;
bool la (false), ls (false);
- if ((f = pt->is_a<obje> ()) ||
- (f = pt->is_a<obja> ()) ||
- (f = pt->is_a<objs> ()) ||
+ if ((f = pt->is_a<objx> ()) ||
(!lt.static_library () && // @@ UTL: TODO libua to liba link.
((la = (f = pt->is_a<liba> ())) ||
(la = (f = pt->is_a<libux> ())) ||