X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=bbf6eb1d046dbf8fee32e4d2279de3d2ccaad329;hb=66d1078c04849ec17a7343d0494d6ed087e04318;hp=3838ae5c0ba14813cb0c3ae795ad7c1f40649d60;hpb=242c55b17e6608b29a77ca17a5b677e202a3ca90;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index 3838ae5..bbf6eb1 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -134,7 +134,7 @@ Builder::Builder(int argc, char **argv): cmdline_targets.push_back("default"); if(!work_dir.empty()) - chdir(work_dir.c_str()); + FS::chdir(work_dir); cwd=FS::getcwd(); @@ -300,17 +300,18 @@ Package *Builder::get_package(const string &name) Target *Builder::get_target(const string &n) const { + // XXX Used for getting targets by path. get_target(const FS::Path &)? TargetMap::const_iterator i=targets.find(n); if(i!=targets.end()) return i->second; return 0; } -Target *Builder::get_header(const string &include, const string &from, const list &path) +Target *Builder::get_header(const string &include, const FS::Path &from, const list &path) { string hash(8, 0); if(include[0]=='\"') - update_hash(hash, from); + update_hash(hash, from.str()); for(list::const_iterator i=path.begin(); i!=path.end(); ++i) update_hash(hash, *i); @@ -669,8 +670,8 @@ Target *Builder::get_library(const string &lib, const FS::Path &path, LibMode mo if(tgt) { Target *real_tgt=tgt; - if(dynamic_cast(tgt)) - real_tgt=real_tgt->get_depends().front(); + if(Install *inst=dynamic_cast(tgt)) + real_tgt=&inst->get_source(); /* Ignore dynamic libraries from local packages unless library mode is DYNAMIC */ @@ -784,11 +785,12 @@ int Builder::do_clean() } for(set::iterator i=clean_tgts.begin(); i!=clean_tgts.end(); ++i) - { - Action *action=new Unlink(*this, **i); - while(action->check()<0) ; - delete action; - } + if(FileTarget *ft=dynamic_cast(*i)) + { + Action *action=new Unlink(*this, *ft); + while(action->check()<0) ; + delete action; + } return 0; }