X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcsourcefile.cpp;h=d3cb807a781cc1f35cefafa8ece08079ee126f94;hb=47496103adfdfe45cdc162a4f6341e924211302d;hp=7c4c453b85be92c66991d58e32b3d0eaf9c24d8f;hpb=b959a6bfd1a878fe814f43daa2b9d43bb0fbcb52;p=builder.git diff --git a/source/csourcefile.cpp b/source/csourcefile.cpp index 7c4c453..d3cb807 100644 --- a/source/csourcefile.cpp +++ b/source/csourcefile.cpp @@ -24,7 +24,7 @@ CSourceFile::CSourceFile(Builder &b, const Component &c, const FS::Path &p): void CSourceFile::find_depends() { - if(!comp) + if(!comp || !mtime) return; const SourcePackage &spkg = comp->get_package(); @@ -35,36 +35,27 @@ void CSourceFile::find_depends() includes = deps_cache.get_deps(relname); else { - try - { - IO::BufferedFile in(path.str()); + IO::BufferedFile in(path.str()); - if(builder.get_verbose()>=4) - IO::print("Reading includes from %s\n", path.str()); + builder.get_logger().log("files", format("Reading includes from %s", path.str())); - Regex r_include("^[ \t]*#include[ \t]+([\"<].*)[\">]"); + Regex r_include("^[ \t]*#include[ \t]+([\"<].*)[\">]"); - string line; - while(in.getline(line)) - if(RegMatch match = r_include.match(line)) - includes.push_back(match[1].str); + string line; + while(in.getline(line)) + if(RegMatch match = r_include.match(line)) + includes.push_back(match[1].str); - deps_cache.set_deps(relname, includes); - } - catch(const IO::file_not_found &) - { - if(builder.get_verbose()>=4) - IO::print("Failed to read includes from %s\n", path.str()); - return; - } + deps_cache.set_deps(relname, includes); } const StringList &incpath = comp->get_build_info().incpath; + StringList local_incpath = incpath; + local_incpath.push_front(FS::dirname(path).str()); - FS::Path dir = FS::dirname(path); for(list::iterator i=includes.begin(); i!=includes.end(); ++i) { - Target *hdr = builder.get_vfs().find_header(*i, dir, incpath); + Target *hdr = builder.get_vfs().find_header(i->substr(1), ((*i)[0]=='"' ? local_incpath : incpath)); if(hdr) add_depend(hdr); }