X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexecutable.cpp;h=25353cf23282576e4280a189d213aafa1354e7cc;hb=a2adbd9c0a8d7a7567848c4c6bdbf0de6ba32bb1;hp=076728c833ae81c5f2a35d0f9035f84406b3f098;hpb=4d0d003b022943d8a0e39ba19078bab8d32d8857;p=builder.git diff --git a/source/executable.cpp b/source/executable.cpp index 076728c..25353cf 100644 --- a/source/executable.cpp +++ b/source/executable.cpp @@ -5,7 +5,7 @@ Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ -#include +#include #include #include "builder.h" #include "component.h" @@ -14,6 +14,7 @@ Distributed under the LGPL #include "link.h" #include "objectfile.h" #include "package.h" +#include "sharedlibrary.h" #include "staticlibrary.h" using namespace std; @@ -34,6 +35,8 @@ Finds and adds any required libraries to the dependencies. void Executable::find_depends() { LibMode libmode=comp.get_package().get_library_mode(); + if(dynamic_cast(this)) + libmode=DYNAMIC; list queue; list dep_libs; @@ -44,12 +47,11 @@ void Executable::find_depends() queue.erase(queue.begin()); const StringList &libpath=c->get_build_info().libpath; - const string &arch=c->get_package().get_arch(); const list &libs=c->get_build_info().libs; for(StringList::const_iterator i=libs.begin(); i!=libs.end(); ++i) { - Target *lib=builder.get_library(*i, arch, libpath, libmode); + Target *lib=builder.get_library(*i, libpath, libmode); if(lib) { dep_libs.push_back(lib); @@ -60,7 +62,7 @@ void Executable::find_depends() queue.push_back(&stlib->get_component()); } else - builder.problem(comp.get_package().get_name(), format("Couldn't find library %s for %s", *i, basename(name))); + builder.problem(comp.get_package().get_name(), format("Couldn't find library %s for %s", *i, FS::basename(name))); } } @@ -78,9 +80,9 @@ void Executable::find_depends() deps_ready=true; } -Action *Executable::build() +Action *Executable::create_action() { - return Target::build(new Link(builder, *this));; + return new Link(builder, *this); } /** @@ -89,8 +91,9 @@ we need to pass the value to the Target c'tor. */ string Executable::generate_target_name(const Component &c) { + const SourcePackage &pkg=c.get_package(); string prefix, suffix; - const string &arch=c.get_package().get_arch(); + const string &arch=pkg.get_builder().get_current_arch().get_name(); if(c.get_type()==Component::LIBRARY) { @@ -108,5 +111,5 @@ string Executable::generate_target_name(const Component &c) suffix=".exe"; } - return (c.get_package().get_out_dir()/(prefix+c.get_name()+suffix)).str(); + return (pkg.get_out_dir()/(prefix+c.get_name()+suffix)).str(); }