From: Mikko Rasa Date: Sat, 16 Aug 2008 08:21:21 +0000 (+0000) Subject: Load builderrc from sys_data_dir to avoid the need of copying it to $HOME X-Git-Tag: 1.0~25 X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=f0042e452d1d2771eebbc9c54bd90e5218836a8b;p=builder.git Load builderrc from sys_data_dir to avoid the need of copying it to $HOME Do not incorporate the from path in include hash for <> includes Fix an error with C++ include path construction Use package-relative filenames for storing dependencies Detect if dependencies are ot found in deps cache and find them --- diff --git a/source/builder.cpp b/source/builder.cpp index 286f53b..bb7b68f 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -139,6 +139,7 @@ Builder::Builder(int argc, char **argv): native_arch->set_tool("LXX", "g++"); native_arch->set_tool("AR", "ar"); + load_build_file((FS::get_sys_data_dir(argv[0], "builder")/"builderrc").str()); load_build_file((FS::get_home_dir()/".builderrc").str()); if(arch.empty()) @@ -225,7 +226,8 @@ returned. Target *Builder::get_header(const string &include, const string &from, const list &path) { string hash(8, 0); - update_hash(hash, from); + if(include[0]=='\"') + update_hash(hash, from); for(list::const_iterator i=path.begin(); i!=path.end(); ++i) update_hash(hash, *i); @@ -261,7 +263,7 @@ Target *Builder::get_header(const string &include, const string &from, const lis syspath.push_back("/usr/include"); else syspath.push_back("/usr/"+current_arch->get_prefix()+"/include"); - syspath.push_back((FS::Path("/usr/include/c++/")/cxx_ver/fn).str()); + syspath.push_back((FS::Path("/usr/include/c++/")/cxx_ver).str()); Target *tgt=0; if(include[0]=='\"') diff --git a/source/dependencycache.cpp b/source/dependencycache.cpp index 3afbf00..978a0e3 100644 --- a/source/dependencycache.cpp +++ b/source/dependencycache.cpp @@ -24,10 +24,8 @@ const StringList &DependencyCache::get_deps(const string &tgt) const { DepsMap::const_iterator i=deps.find(tgt); if(i==deps.end()) - { - static StringList dummy; - return dummy; - } + throw KeyError("Unknown dependencies", tgt); + return i->second; } diff --git a/source/sourcefile.cpp b/source/sourcefile.cpp index af1c04a..7041035 100644 --- a/source/sourcefile.cpp +++ b/source/sourcefile.cpp @@ -7,6 +7,7 @@ Distributed under the LGPL #include #include +#include #include #include "builder.h" #include "component.h" @@ -30,8 +31,22 @@ void SourceFile::find_depends() if(!comp) return; - DependencyCache &deps_cache=comp->get_package().get_deps_cache(); - if(mtime>deps_cache.get_mtime()) + const SourcePackage &spkg=comp->get_package(); + string relname=FS::relative(name, spkg.get_source()).str(); + DependencyCache &deps_cache=spkg.get_deps_cache(); + bool deps_found=false; + if(mtimeget_build_info().incpath;