X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=plugins%2Fdatafile%2Fdatapackcomponent.cpp;fp=plugins%2Fdatafile%2Fdatapackcomponent.cpp;h=9b628f4dc58e360f9e5c83bdf0f0228fed3e1f95;hb=c8e829c219c65ff8e93b6c7b66212ff0876441c5;hp=0000000000000000000000000000000000000000;hpb=e2c9c3fffcc61a0c102ccf6a7924e2de709092ad;p=builder.git diff --git a/plugins/datafile/datapackcomponent.cpp b/plugins/datafile/datapackcomponent.cpp new file mode 100644 index 0000000..9b628f4 --- /dev/null +++ b/plugins/datafile/datapackcomponent.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#include "datapackcomponent.h" +#include "datasourcefile.h" + +using namespace std; +using namespace Msp; + +DataPackComponent::DataPackComponent(SourcePackage &p, const string &n): + Component(p, n) +{ } + +void DataPackComponent::create_targets() const +{ + Builder &builder = package.get_builder(); + Tool &dcomp = builder.get_toolchain().get_tool("DATA"); + + vector files; + for(const FS::Path &s: collect_source_files()) + { + string ext = FS::extpart(FS::basename(s)); + if(ext==".mdt") + { + Target *src = dcomp.create_source(*this, s); + files.push_back(dcomp.create_target(*src, "collection")); + } + else if(Target *tgt = builder.get_vfs().get_target(s)) + files.push_back(tgt); + else + files.push_back(new DataSourceFile(builder, *this, s)); + } + + Target *result = dcomp.create_target(files, "pack"); + + BuildGraph &build_graph = builder.get_build_graph(); + build_graph.add_primary_target(*result); + if(install) + build_graph.add_installed_target(*result); +}