FS::Path ObjectFile::generate_target_path(const Component &comp, const FS::Path &src)
{
- const SourcePackage &pkg = comp.get_package();
- FS::Path temp_dir = pkg.get_temp_directory();
- 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(const string &c: rel_src)
- {
- if(!fn.empty())
- fn += '_';
- if(c!=".")
- fn += c;
- }
+ string fn = comp.flatten_source_path(src);
const Architecture &arch = comp.get_package().get_builder().get_current_arch();
- return temp_dir/comp.get_name()/arch.create_filename<ObjectFile>(FS::basepart(fn));
+ return comp.get_temp_directory()/arch.create_filename<ObjectFile>(FS::basepart(fn));
}
void ObjectFile::set_used_in_shared_library(bool u)
{
tgt.prepare();
- FileTarget *rtgt = dynamic_cast<FileTarget *>(tgt.get_real_target());
+ FileTarget *rtgt = tgt.get_real_target();
Dependencies deps_to_add = rtgt->get_transitive_dependencies();
if(rtgt!=&tgt)
{