X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpkgconfiggenerator.cpp;h=141b363cda3d348692d93887cf335a84e9873d93;hb=5881b8499dc159564d2f69c3b037e16b4d1af4db;hp=708a9130ed63e6c158df084dbba9b01ae29b2369;hpb=338eefb513953ae55e8e3614c009c242ba8ad74e;p=builder.git diff --git a/source/pkgconfiggenerator.cpp b/source/pkgconfiggenerator.cpp index 708a913..141b363 100644 --- a/source/pkgconfiggenerator.cpp +++ b/source/pkgconfiggenerator.cpp @@ -2,7 +2,7 @@ #include #include #include "builder.h" -#include "pkgconfig.h" +#include "pkgconfigfile.h" #include "pkgconfiggenerator.h" using namespace std; @@ -20,22 +20,20 @@ Target *PkgConfigGenerator::create_target(const list &, const string & Task *PkgConfigGenerator::run(const Target &target) const { - const PkgConfig &pkgc = dynamic_cast(target); + const PkgConfigFile &pkgc = dynamic_cast(target); Worker *worker = new Worker(pkgc); return new InternalTask(worker); } -PkgConfigGenerator::Worker::Worker(const PkgConfig &t): +PkgConfigGenerator::Worker::Worker(const PkgConfigFile &t): target(t) -{ - launch(); -} +{ } void PkgConfigGenerator::Worker::main() { Builder &builder = target.get_package()->get_builder(); - const SourcePackage &spkg = dynamic_cast(*target.get_package()); + const SourcePackage &spkg = *target.get_package(); IO::BufferedFile out(target.get_path().str(), IO::M_WRITE); IO::print(out, "prefix=%s\n", builder.get_prefix().str()); @@ -54,20 +52,23 @@ void PkgConfigGenerator::Worker::main() const BuildInfo &binfo = spkg.get_exported_binfo(); IO::print(out, "Libs:"); - for(StringList::const_iterator i=binfo.libpath.begin(); i!=binfo.libpath.end(); ++i) + for(BuildInfo::PathList::const_iterator i=binfo.libpath.begin(); i!=binfo.libpath.end(); ++i) IO::print(out, " -L%s", FS::relative(*i, builder.get_prefix()).str()); - for(StringList::const_iterator i=binfo.libs.begin(); i!=binfo.libs.end(); ++i) + for(BuildInfo::WordList::const_iterator i=binfo.libs.begin(); i!=binfo.libs.end(); ++i) IO::print(out, " -l%s", *i); - for(StringList::const_iterator i=binfo.ldflags.begin(); i!=binfo.ldflags.end(); ++i) - IO::print(out, " %s", *i); + if(binfo.threads) + out.write("-pthread"); out.put('\n'); IO::print(out, "Cflags:"); - for(StringList::const_iterator i=binfo.incpath.begin(); i!=binfo.incpath.end(); ++i) + for(BuildInfo::PathList::const_iterator i=binfo.incpath.begin(); i!=binfo.incpath.end(); ++i) IO::print(out, " -I%s", FS::relative(*i, builder.get_prefix()).str()); - for(StringList::const_iterator i=binfo.defines.begin(); i!=binfo.defines.end(); ++i) - IO::print(out, " -D%s", *i); - for(StringList::const_iterator i=binfo.cflags.begin(); i!=binfo.cflags.end(); ++i) - IO::print(out, " %s", *i); + for(BuildInfo::DefineMap::const_iterator i=binfo.defines.begin(); i!=binfo.defines.end(); ++i) + if(i->second.empty()) + IO::print(out, " -D%s", i->first); + else + IO::print(out, " -D%s=%s", i->first, i->second); out.put('\n'); + + status = Task::SUCCESS; }