}
+BuildInfo::BuildInfo():
+ threads(false),
+ debug(false),
+ optimize(0),
+ strip(false)
+{ }
+
void BuildInfo::update_from(const BuildInfo &bi, UpdateLevel level)
{
- cflags.insert(cflags.end(), bi.cflags.begin(), bi.cflags.end());
- defines.insert(defines.end(), bi.defines.begin(), bi.defines.end());
+ for(DefineMap::const_iterator i=bi.defines.begin(); i!=bi.defines.end(); ++i)
+ defines[i->first] = i->second;
incpath.insert(incpath.end(), bi.incpath.begin(), bi.incpath.end());
if(level!=CHAINED)
{
- ldflags.insert(ldflags.end(), bi.ldflags.begin(), bi.ldflags.end());
libpath.insert(libpath.end(), bi.libpath.begin(), bi.libpath.end());
libs.insert(libs.end(), bi.libs.begin(), bi.libs.end());
}
warnings.insert(warnings.end(), bi.warnings.begin(), bi.warnings.end());
+ threads = bi.threads;
+ if(level==LOCAL)
+ {
+ debug = bi.debug;
+ optimize = bi.optimize;
+ strip = bi.strip;
+ }
}
void BuildInfo::unique()
{
- ::unique(cflags);
- ::unique(defines);
::unique(incpath);
- ::unique(ldflags);
::unique(libpath);
::unique(libs);
BuildInfo::Loader::Loader(BuildInfo &bi):
DataFile::ObjectLoader<BuildInfo>(bi)
{
- add("cflag", &Loader::cflag);
- add("incpath", &Loader::incpath);
- add("define", &Loader::define);
- add("ldflag", &Loader::ldflag);
- add("libpath", &Loader::libpath);
- add("library", &Loader::library);
- add("warning", &Loader::warning);
-}
-
-void BuildInfo::Loader::cflag(const std::string &s)
-{
- obj.cflags.push_back(s);
+ add("debug", &BuildInfo::debug);
+ add("define", &Loader::define);
+ add("incpath", &Loader::incpath);
+ add("libpath", &Loader::libpath);
+ add("library", &Loader::library);
+ add("optimize", &BuildInfo::optimize);
+ add("strip", &BuildInfo::strip);
+ add("threads", &BuildInfo::threads);
+ add("warning", &Loader::warning);
}
void BuildInfo::Loader::incpath(const std::string &s)
obj.incpath.push_back(s);
}
-void BuildInfo::Loader::define(const std::string &s)
-{
- obj.defines.push_back(s);
-}
-
-void BuildInfo::Loader::ldflag(const std::string &s)
+void BuildInfo::Loader::define(const std::string &d, const std::string &v)
{
- obj.ldflags.push_back(s);
+ obj.defines[d] = v;
}
void BuildInfo::Loader::libpath(const std::string &s)