X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcomponent.cpp;h=de42d922404f995a186e80a6e62c5819faa59746;hb=1fdef3ec9d6291af8a467ea0e2c90e7f19141ae2;hp=5f6237e743f88f37d4f8929f59794e65e79e1c41;hpb=5006279d7b92e578ecfa8a04186f675c6b9f1eea;p=builder.git diff --git a/source/component.cpp b/source/component.cpp index 5f6237e..de42d92 100644 --- a/source/component.cpp +++ b/source/component.cpp @@ -89,7 +89,9 @@ void Component::create_targets() const Target *def_tgt=builder.get_target("default"); PathList files=collect_source_files(); + list inst_list; + string inst_loc; if(type==TARBALL) { string tarname=name; @@ -121,20 +123,34 @@ void Component::create_targets() const return; } - - list inst_list; - for(PathList::const_iterator i=files.begin(); i!=files.end(); ++i) + else if(type==INSTALL) { - string ext=FS::extpart(FS::basename(*i)); - if(ext==".h") + inst_loc=name; + for(PathList::const_iterator i=files.begin(); i!=files.end(); ++i) { - FileTarget *hdr=dynamic_cast(builder.get_target(i->str())); - if(!hdr) - hdr=new Header(builder, this, i->str()); + FileTarget *ft; + if(Target *tgt=builder.get_target(i->str())) + ft=dynamic_cast(tgt); + else + ft=new File(builder, pkg, *i); + inst_list.push_back(ft); + } + } + else + { + for(PathList::const_iterator i=files.begin(); i!=files.end(); ++i) + { + string ext=FS::extpart(FS::basename(*i)); + if(ext==".h") + { + FileTarget *hdr=dynamic_cast(builder.get_target(i->str())); + if(!hdr) + hdr=new Header(builder, *this, i->str()); - // Install headers if requested - if(type==HEADERS && install) - inst_list.push_back(hdr); + // Install headers if requested + if(type==HEADERS && install) + inst_list.push_back(hdr); + } } } @@ -146,7 +162,7 @@ void Component::create_targets() const string ext=FS::extpart(FS::basename(*i)); if((ext==".cpp" || ext==".cc" || ext==".c")) { - SourceFile *src=new SourceFile(builder, this, i->str()); + SourceFile *src=new SourceFile(builder, *this, i->str()); ObjectFile *obj=new ObjectFile(builder, *this, *src); objs.push_back(obj); } @@ -174,7 +190,7 @@ void Component::create_targets() const Target *inst_tgt=builder.get_target("install"); for(list::const_iterator i=inst_list.begin(); i!=inst_list.end(); ++i) - inst_tgt->add_depend(new Install(builder, pkg, **i)); + inst_tgt->add_depend(new Install(builder, pkg, **i, inst_loc)); } PathList Component::collect_source_files() const