+ Builder &builder=pkg.get_builder();
+ Target *world=builder.get_target("world");
+ Target *def_tgt=builder.get_target("default");
+
+ PathList files=collect_source_files();
+
+ bool build_exe=(type!=HEADERS);
+
+ list<ObjectFile *> objs;
+ list<Target *> inst_tgts;
+ for(PathList::const_iterator i=files.begin(); i!=files.end(); ++i)
+ {
+ string basename=(*i)[-1];
+ string ext=Path::splitext(basename).ext;
+ if((ext==".cpp" || ext==".c") && build_exe)
+ {
+ SourceFile *src=new SourceFile(builder, this, i->str());
+
+ // Compile sources
+ ObjectFile *obj=new ObjectFile(builder, *this, *src);
+ objs.push_back(obj);
+ }
+ else if(ext==".h")
+ {
+ Target *hdr=builder.get_target(i->str());
+ if(!hdr)
+ hdr=new Header(builder, this, i->str());
+
+ // Install headers if requested
+ if(!install_headers.empty())
+ inst_tgts.push_back(hdr);
+ }
+ }