X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpackage.cpp;h=121213f19b068147f062d3afb5f4233f143ced26;hb=b1a6e6dcdd7e0da272ab0ebbed4e295f83f1165a;hp=e6e3b5099c1814a46ab02586e750f936843e3c27;hpb=97001ddfa2463e6a3526eff772962acdad45f995;p=builder.git diff --git a/source/package.cpp b/source/package.cpp index e6e3b50..121213f 100644 --- a/source/package.cpp +++ b/source/package.cpp @@ -107,20 +107,31 @@ void Package::create_build_info() void Package::process_options(const RawOptionMap &opts) { - config.process(opts); + if(config.process(opts)) + config.save(source/".options.cache"); } Package *Package::create(Builder &b, const string &name) { list argv; argv.push_back("pkg-config"); + argv.push_back("--silence-errors"); argv.push_back("--cflags"); argv.push_back("--libs"); argv.push_back(name); vector info=split(run_command(argv)); if(info.empty()) - return 0; + { + if(name=="opengl") + info.push_back("-lGL"); + else if(name=="pthread") + info.push_back("-lpthread"); + else if(name=="gmpxx") + info.push_back("-lgmpxx"); + else + return 0; + } Package *pkg=new Package(b, name, info); return pkg; @@ -148,6 +159,8 @@ void Package::init_buildable() config.add_option("includedir", "$prefix/lib", "Library installation directory"); if(flags&DATA) config.add_option("includedir", "$prefix/share", "Data installation directory");*/ + + config.load(source/".options.cache"); } unsigned Package::get_install_flags() @@ -177,6 +190,7 @@ Package::Loader::Loader(Package &p): add("require", &Loader::require); add("program", &Loader::program); add("library", &Loader::library); + add("headers", &Loader::headers); } Package::Loader::~Loader() @@ -189,16 +203,23 @@ void Package::Loader::require(const string &n) pkg.requires.push_back(PackageRef(pkg.builder, n)); } -void Package::Loader::program(const std::string &n) +void Package::Loader::program(const string &n) { Component prog(pkg, Component::PROGRAM, n); load_sub(prog); pkg.components.push_back(prog); } -void Package::Loader::library(const std::string &n) +void Package::Loader::library(const string &n) { Component prog(pkg, Component::LIBRARY, n); load_sub(prog); pkg.components.push_back(prog); } + +void Package::Loader::headers(const string &n) +{ + Component prog(pkg, Component::HEADERS, n); + load_sub(prog); + pkg.components.push_back(prog); +}