using namespace Msp;
Binary::Binary(Builder &b, const Component &c, const list<ObjectFile *> &objs):
- FileTarget(b, &c.get_package(), generate_target_path(c)),
- comp(c)
+ FileTarget(b, &c.get_package(), generate_target_path(c))
{
- buildable = true;
+ component = &c;
for(list<ObjectFile *>::const_iterator i=objs.begin(); i!=objs.end(); ++i)
add_depend(*i);
}
void Binary::find_depends()
{
- LibMode libmode = comp.get_package().get_library_mode();
+ if(!component)
+ return;
+
+ const SourcePackage &spkg = component->get_package();
+ LibMode libmode = spkg.get_library_mode();
if(dynamic_cast<SharedLibrary *>(this))
libmode = DYNAMIC;
list<const Component *> queue;
list<Target *> dep_libs;
- queue.push_back(&comp);
+ queue.push_back(component);
while(!queue.empty())
{
const Component *c = queue.front();
lib = lib->get_real_target();
if(StaticLibrary *stlib = dynamic_cast<StaticLibrary *>(lib))
- queue.push_back(&stlib->get_component());
+ queue.push_back(stlib->get_component());
}
else
- builder.problem(comp.get_package().get_name(), format("Couldn't find library %s for %s", *i, name));
+ builder.problem(spkg.get_name(), format("Couldn't find library %s for %s", *i, name));
}
}