]> git.tdb.fi Git - builder.git/commitdiff
Generate shorter object file names for generated source files
authorMikko Rasa <tdb@tdb.fi>
Thu, 3 Oct 2013 08:09:26 +0000 (11:09 +0300)
committerMikko Rasa <tdb@tdb.fi>
Thu, 3 Oct 2013 08:09:26 +0000 (11:09 +0300)
source/objectfile.cpp

index 7208f424bd1b001493cec14420df2d92bf7c4fae..27883bb41245cf5ef66dac8cf2b6bcef1aa69113 100644 (file)
@@ -20,7 +20,12 @@ ObjectFile::ObjectFile(Builder &b, const Component &c, SourceFile &s):
 FS::Path ObjectFile::generate_target_path(const Component &comp, const FS::Path &src)
 {
        const SourcePackage &pkg = comp.get_package();
-       FS::Path rel_src = FS::relative(src, pkg.get_source_directory()).str();
+       FS::Path temp_dir = pkg.get_temp_directory()/comp.get_name();
+       FS::Path rel_src;
+       if(FS::descendant_depth(src, temp_dir)>=0)
+               rel_src = FS::relative(src, temp_dir);
+       else
+               rel_src = FS::relative(src, pkg.get_source_directory());
        string fn;
        for(FS::Path::Iterator i=rel_src.begin(); i!=rel_src.end(); ++i)
        {
@@ -29,7 +34,7 @@ FS::Path ObjectFile::generate_target_path(const Component &comp, const FS::Path
                if(*i!=".")
                        fn += *i;
        }
-       return pkg.get_temp_directory()/comp.get_name()/(FS::basepart(fn)+".o");
+       return temp_dir/(FS::basepart(fn)+".o");
 }
 
 void ObjectFile::find_dependencies()