+void BuildInfo::Loader::libmode_for_lib(const string &l, LibraryMode m)
+{
+ obj.libmodes[l] = m;
+}
+
+void BuildInfo::Loader::libpath(const string &s)
+{
+ obj.libpath.push_back(s);
+}
+
+void BuildInfo::Loader::library(const string &s)
+{
+ obj.libs.push_back(s);
+}
+
+void BuildInfo::Loader::local_incpath(const string &s)
+{
+ obj.local_incpath.push_back(s);
+}
+
+void BuildInfo::Loader::standard(DataFile::Symbol tag, const string &std)
+{
+ obj.standards[tag.name] = std;
+}
+
+void BuildInfo::Loader::sysroot(const string &s)
+{
+ obj.sysroot = s;
+}
+
+
+void operator>>(const LexicalConverter &conv, BuildInfo::LibraryMode &libmode)
+{
+ if(conv.get()=="FORCE_STATIC")
+ libmode = BuildInfo::FORCE_STATIC;
+ else if(conv.get()=="STATIC")
+ libmode = BuildInfo::STATIC;
+ else if(conv.get()=="DYNAMIC")
+ libmode = BuildInfo::DYNAMIC;
+ else if(conv.get()=="FORCE_DYNAMIC")
+ libmode = BuildInfo::FORCE_DYNAMIC;
+ else
+ throw lexical_error(format("Conversion of '%s' to LibraryMode", conv.get()));
+}
+
+
+void operator>>(const LexicalConverter &conv, BuildInfo::RuntimePathMode &rpath_mode)
+{
+ if(conv.get()=="NONE")
+ rpath_mode = BuildInfo::NO_RPATH;
+ else if(conv.get()=="RELATIVE")
+ rpath_mode = BuildInfo::RELATIVE;
+ else if(conv.get()=="ABSOLUTE")
+ rpath_mode = BuildInfo::ABSOLUTE;
+ else
+ throw lexical_error(format("Conversion of '%s' to RuntimePathMode", conv.get()));
+}