- 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);