X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fobjectfile.cpp;h=cd870592530f74b0220b6e5ed9692c090db16e8b;hb=409a427f912f9c203b102beed0816b53b250931f;hp=f3d6183afa6b01161b1039af0bb6f838d571e5d8;hpb=835948343817c0e359330f8522dc4b8a0e025224;p=builder.git diff --git a/source/objectfile.cpp b/source/objectfile.cpp index f3d6183..cd87059 100644 --- a/source/objectfile.cpp +++ b/source/objectfile.cpp @@ -19,7 +19,7 @@ using namespace std; using namespace Msp; ObjectFile::ObjectFile(Builder &b, const Component &c, SourceFile &s): - FileTarget(b, &c.get_package(), generate_target_path(c, FS::basename(s.get_path()))), + FileTarget(b, &c.get_package(), generate_target_path(c, FS::relative(s.get_path(), c.get_package().get_source()).str())), comp(c), source(s) { @@ -78,5 +78,11 @@ Action *ObjectFile::create_action() FS::Path ObjectFile::generate_target_path(const Component &comp, const string &src) { const SourcePackage &pkg = comp.get_package(); - return pkg.get_temp_dir()/comp.get_name()/(FS::basepart(src)+".o"); + string fn = FS::basepart(src)+".o"; + if(!fn.compare(0, 2, "./")) + fn.erase(0, 2); + for(string::iterator i=fn.begin(); i!=fn.end(); ++i) + if(*i=='/') + *i = '_'; + return pkg.get_temp_dir()/comp.get_name()/fn; }