]> git.tdb.fi Git - builder.git/blobdiff - source/package.cpp
Add gmpxx package
[builder.git] / source / package.cpp
index e6e3b5099c1814a46ab02586e750f936843e3c27..121213f19b068147f062d3afb5f4233f143ced26 100644 (file)
@@ -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<string> argv;
        argv.push_back("pkg-config");
+       argv.push_back("--silence-errors");
        argv.push_back("--cflags");
        argv.push_back("--libs");
        argv.push_back(name);
        vector<string> 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);
+}