using namespace std;
using namespace Msp;
-PackageRef::PackageRef(Builder &b, const string &n):
- builder(b),
- name(n),
- package(0)
-{ }
-
-Package *PackageRef::resolve()
-{
- if(!package)
- package=builder.get_package(name);
- return package;
-}
-
Package::Package(Builder &b, const string &n, const Path::Path &s):
builder(b),
name(n),
{
for(list<PackageRef>::iterator i=requires.begin(); i!=requires.end(); ++i)
i->resolve();
+ for(ComponentList::iterator i=components.begin(); i!=components.end(); ++i)
+ i->resolve_refs();
}
void Package::create_build_info()
}
if(strtobool(config.get_option("debug").value))
+ {
build_info.cflags.push_back("-ggdb");
+ build_info.defines.push_back("DEBUG");
+ }
build_info.unique();
export_binfo.unique();
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)
info.push_back("-lGL");
else if(name=="pthread")
info.push_back("-lpthread");
+ else if(name=="gmpxx")
+ info.push_back("-lgmpxx");
else
return 0;
}
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()
add("program", &Loader::program);
add("library", &Loader::library);
add("headers", &Loader::headers);
+ add("build_info", &Loader::build_info);
}
Package::Loader::~Loader()
load_sub(prog);
pkg.components.push_back(prog);
}
+
+void Package::Loader::build_info()
+{
+ load_sub(pkg.build_info);
+}