X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbinarypackage.cpp;h=8c3571d103ac4fb9cc955e7178d3a8b745d26d95;hb=519f2006e8b33e9b14fdc985766ab4e4e869544b;hp=f804da08394c31fc3489109a46b1abf9eb9ef5fd;hpb=43bd25ffcb0b4f7882773f4676b209a99cb73c04;p=builder.git diff --git a/source/binarypackage.cpp b/source/binarypackage.cpp index f804da0..8c3571d 100644 --- a/source/binarypackage.cpp +++ b/source/binarypackage.cpp @@ -29,25 +29,30 @@ void BinaryPackage::create_build_info() *i = (path/i->substr(1)).str(); } -BinaryPackage *BinaryPackage::from_pkgconfig(Builder &builder, const string &name) +BinaryPackage *BinaryPackage::from_flags(Builder &builder, const std::string &name, const vector &flags) { - string info = builder.run_pkgconfig(name, "flags"); - BinaryPackage *pkg = new BinaryPackage(builder, name); pkg->use_pkgconfig = true; BuildInfo &binfo = pkg->export_binfo; - vector flags = split(info); for(vector::const_iterator i=flags.begin(); i!=flags.end(); ++i) { if(!i->compare(0, 2, "-I")) binfo.incpath.push_back(i->substr(2)); else if(!i->compare(0, 2, "-D")) - binfo.defines.push_back(i->substr(2)); + { + string::size_type equals = i->find('='); + if(equals!=string::npos) + binfo.defines[i->substr(2, equals-2)] = i->substr(equals+1); + else + binfo.defines[i->substr(2)] = string(); + } else if(!i->compare(0, 2, "-L")) binfo.libpath.push_back(i->substr(2)); else if(!i->compare(0, 2, "-l")) binfo.libs.push_back(i->substr(2)); + else if(*i=="-pthread") + binfo.threads = true; } return pkg;