]> git.tdb.fi Git - builder.git/blobdiff - source/objectfile.cpp
Add a feature for overlay source directories
[builder.git] / source / objectfile.cpp
index fff1309057916baefffe63bf4ce8192469796647..321b954d4e96c59bbbdb9ae845465853a6e7da54 100644 (file)
@@ -29,7 +29,7 @@ FS::Path ObjectFile::generate_target_path(const Component &comp, const FS::Path
                if(*i!=".")
                        fn += *i;
        }
-       return pkg.get_temp_dir()/comp.get_name()/(FS::basepart(fn)+".o");
+       return pkg.get_temp_directory()/comp.get_name()/(FS::basepart(fn)+".o");
 }
 
 void ObjectFile::find_dependencies()
@@ -65,6 +65,19 @@ void ObjectFile::find_dependencies(FileTarget *tgt)
                                FS::Path displaced = tgt->get_path()/FS::relative(file->get_path(), rtgt->get_path());
                                if(Target *ddep = builder.get_vfs().get_target(displaced))
                                        deps_to_add.push_back(ddep);
+                               else
+                               {
+                                       const Component *tcomp = file->get_component();
+                                       const Component::OverlayList &overlays = tcomp->get_overlays();
+                                       string last_dir = FS::basename(FS::dirname(displaced));
+                                       for(Component::OverlayList::const_iterator j=overlays.begin(); j!=overlays.end(); ++j)
+                                               if(last_dir==*j)
+                                               {
+                                                       displaced = displaced.subpath(0, displaced.size()-2)/FS::basename(file->get_path());
+                                                       if((ddep = builder.get_vfs().get_target(displaced)))
+                                                               deps_to_add.push_back(ddep);
+                                               }
+                               }
                        }
                        else
                                deps_to_add.push_back(*i);