X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexecutable.cpp;h=fb1edfb2f2193b34b9f46ff35d0b95817a66b8a4;hb=4fcc283a4bb1f695bd124006906bcdaba053193f;hp=2dfeee8affbbbce98ee5a812da75433ca60d32b2;hpb=4dc31cca056ea293d320928f61fef0558089d32d;p=builder.git diff --git a/source/executable.cpp b/source/executable.cpp index 2dfeee8..fb1edfb 100644 --- a/source/executable.cpp +++ b/source/executable.cpp @@ -1,5 +1,7 @@ +#include "builder.h" #include "component.h" #include "executable.h" +#include "link.h" #include "objectfile.h" #include "package.h" @@ -9,20 +11,38 @@ Executable::Executable(Builder &b, const Component &c, const list Target(b, &c.get_package(), generate_target_name(c)), comp(c) { + buildable=true; for(list::const_iterator i=objs.begin(); i!=objs.end(); ++i) add_depend(*i); } -string Executable::generate_target_name(const Component &comp) +void Executable::find_depends() { - string prefix; - string suffix; + const list &libs=comp.get_build_info().libs; + for(list::const_iterator i=libs.begin(); i!=libs.end(); ++i) + { + Target *lib=builder.get_library(*i, comp.get_build_info().libpath); + if(lib) + add_depend(lib); + } + + deps_ready=true; +} + +Action *Executable::build() +{ + return Target::build(new Link(builder, *this));; +} + +string Executable::generate_target_name(const Component &c) +{ + string prefix,suffix; - if(comp.get_type()==Component::LIBRARY) + if(c.get_type()==Component::LIBRARY) { prefix="lib"; suffix=".so"; } - return (comp.get_package().get_source()/(prefix+comp.get_name()+suffix)).str(); + return (c.get_package().get_source()/(prefix+c.get_name()+suffix)).str(); }