Component::Loader::Loader(Component &c):
DataFile::ObjectLoader<Component>(c)
{
+ add("if_arch", &Loader::if_arch);
+ add("if_feature", &Loader::if_feature);
add("source", &Loader::source);
add("install", &Component::install);
add("install_map", &Loader::install_map);
add("use", &Loader::use);
}
+void Component::Loader::if_arch(const string &cond)
+{
+ bool match = obj.package.get_builder().get_current_arch().match_name(cond);
+ obj.package.get_builder().get_logger().log("configure",
+ format("%s/%s: arch %s %smatched", obj.package.get_name(), obj.name, cond, (match ? "" : "not ")));
+ if(match)
+ load_sub_with(*this);
+}
+
+void Component::Loader::if_feature(const string &cond)
+{
+ bool match = obj.package.match_feature(cond);
+ obj.package.get_builder().get_logger().log("configure",
+ format("%s/%s: feature %s %smatched", obj.package.get_name(), obj.name, cond, (match ? "" : "not ")));
+ if(match)
+ load_sub_with(*this);
+}
+
void Component::Loader::source(const string &s)
{
obj.sources.push_back((obj.package.get_source_directory()/s).str());