X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ffiletarget.cpp;h=51a92d13b1a11f61c34671a1d8c39adfa710bdcc;hb=6382743d26f8d5bb10a53cb907659bee6614b549;hp=862ddbe5836197c500ae99cf05f324c419bacbe5;hpb=24981eb7ef702aa97b2ab90399ccd3fc23ce9ccf;p=builder.git diff --git a/source/filetarget.cpp b/source/filetarget.cpp index 862ddbe..51a92d1 100644 --- a/source/filetarget.cpp +++ b/source/filetarget.cpp @@ -30,6 +30,8 @@ void FileTarget::init(const SourcePackage *p) { size = 0; package = p; + nested_build_sig = false; + arch_in_build_sig = false; builder.get_vfs().register_path(path, this); @@ -118,7 +120,27 @@ string FileTarget::create_build_signature() const return string(); const BuildInfo &binfo = (component ? component->get_build_info() : package->get_build_info()); - return tool->create_build_signature(binfo); + list sigs; + if(nested_build_sig && component) + { + set depend_tools; + for(Dependencies::const_iterator i=depends.begin(); i!=depends.end(); ++i) + if((*i)->get_component()==component && (*i)->get_tool()) + depend_tools.insert((*i)->get_tool()); + + for(set::const_iterator i=depend_tools.begin(); i!=depend_tools.end(); ++i) + sigs.push_back((*i)->create_build_signature(binfo)); + sigs.sort(); + sigs.push_front(tool->create_build_signature(binfo)); + } + else + sigs.push_back(tool->create_build_signature(binfo)); + + if(arch_in_build_sig) + if(const Architecture *arch = tool->get_architecture()) + sigs.push_front(arch->get_name()); + + return join(sigs.begin(), sigs.end(), ";"); } void FileTarget::build(Task &task)