- Builder &builder = pkg.get_builder();
- Target *world = builder.get_target("world");
- Target *def_tgt = builder.get_target("default");
-
- PathList files = collect_source_files();
- list<FileTarget *> inst_list;
-
- string inst_loc;
- if(type==TARBALL)
- {
- string tarname = name;
- if(name=="@src")
- tarname = pkg.get_name()+"-"+pkg.get_version();
- TarBall *result = new TarBall(builder, pkg, tarname);
-
- if(name=="@src")
- {
- const TargetMap &targets = builder.get_targets();
- for(TargetMap::const_iterator i=targets.begin(); i!=targets.end(); ++i)
- if(i->second->get_package()==&pkg && !i->second->is_buildable())
- result->add_depend(i->second);
- files.push_back(pkg.get_source()/"Build");
- }
-
- for(PathList::const_iterator i=files.begin(); i!=files.end(); ++i)
- {
- FileTarget *ft;
- if(Target *tgt = builder.get_target(i->str()))
- ft = dynamic_cast<FileTarget *>(tgt);
- else
- ft = new File(builder, *i);
- result->add_depend(ft);
- }
-
- Target *tarbls_tgt = builder.get_target("tarballs");
- tarbls_tgt->add_depend(result);
-
- return;
- }
- else if(type==INSTALL)
- {
- inst_loc = name;
- for(PathList::const_iterator i=files.begin(); i!=files.end(); ++i)
- {
- FileTarget *ft;
- if(Target *tgt = builder.get_target(i->str()))
- ft = dynamic_cast<FileTarget *>(tgt);
- else
- ft = new File(builder, pkg, *i);
- inst_list.push_back(ft);
- }
- }
- else if(type==DATAFILE)
- {
- File *source;
- if(Target *tgt = builder.get_target(files.front().str()))
- source = dynamic_cast<File *>(tgt);
- else
- source = new File(builder, pkg, files.front());
- ::DataFile *result = new ::DataFile(builder, *this, *source);
-
- if(&pkg==builder.get_main_package() && deflt)
- def_tgt->add_depend(result);
- else
- world->add_depend(result);
- if(install)
- inst_list.push_back(result);
- }
- else