X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpackage.cpp;h=c905ee464e7041de6372cbcca0f7e7142e20ef35;hb=1968c546cfb30214e8dc5afc722bec14aa8373f5;hp=20fec32acfb84d64665ff2c05372482761de3eb2;hpb=c679a9dd1a97ae3b1ffa568143d42d02c2ca9e74;p=builder.git diff --git a/source/package.cpp b/source/package.cpp index 20fec32..c905ee4 100644 --- a/source/package.cpp +++ b/source/package.cpp @@ -26,6 +26,26 @@ Package::Package(Builder &b, const string &n): use_pkgconfig(true) { } +/** +Collects all directly and indirectly required packages, including the package +itself. +*/ +PackageList Package::collect_requires() +{ + PackageList result; + result.push_back(this); + for(PackageList::const_iterator i=requires.begin(); i!=requires.end(); ++i) + { + PackageList r=(*i)->collect_requires(); + result.splice(result.end(), r); + } + + result.sort(); + result.unique(); + + return result; +} + /** Processes configuration options that were most likely obtained from the command line.