SourcePackage::SourcePackage(Builder &b, const string &n, const FS::Path &s):
Package(b, n),
- source(s),
+ source_dir(s),
build_type(0),
config(*this),
deps_cache(*this)
if(temp.is_absolute())
return temp/name/subdir;
else
- return source/temp/subdir;
+ return source_dir/temp/subdir;
}
FS::Path SourcePackage::get_out_dir() const
const Architecture &arch = builder.get_current_arch();
string detail = (build_type ? build_type->get_name() : string());
if(arch.is_native())
- return source/detail;
+ return source_dir/detail;
else
- return source/arch.get_name()/detail;
-}
-
-void SourcePackage::do_configure(const StringMap &opts, unsigned flag)
-{
- init_config();
-
- config.load();
-
- if(flag && config.update(opts))
- builder.get_logger().log("configure", format("Configuration of %s changed", name));
-
- deps_cache.load();
-
- for(ComponentList::iterator i=components.begin(); i!=components.end(); ++i)
- i->configure(opts, flag);
-}
-
-void SourcePackage::init_config()
-{
+ return source_dir/arch.get_name()/detail;
}
void SourcePackage::create_build_info()
if(build_type)
build_info.update_from(build_type->get_build_info());
- // XXX Currently, a package-specific settings will override cmdline. This might or might not be desirable.
- const StringList &warnings = builder.get_warnings();
- build_info.warnings.insert(build_info.warnings.begin(), warnings.begin(), warnings.end());
-
build_info.incpath.push_back((builder.get_prefix()/"include").str());
build_info.libpath.push_back((builder.get_prefix()/"lib").str());
for(list<Component>::iterator i=components.begin(); i!=components.end(); ++i)
{
+ i->prepare();
i->create_build_info();
if(i->get_type()==Component::LIBRARY)
export_binfo.libs.push_back(i->get_name());
void SourcePackage::create_targets()
{
+ deps_cache.load();
+
bool pc_needed = false;
for(ComponentList::const_iterator i=components.begin(); i!=components.end(); ++i)
{
if(pc_needed)
{
PkgConfigFile *pc = new PkgConfigFile(builder, *this);
- builder.get_target("install")->add_depend(*builder.get_toolchain().get_tool("CP").create_target(*pc));
+ builder.get_target("install")->add_dependency(*builder.get_toolchain().get_tool("CP").create_target(*pc));
}
}
{
if(!i->first.compare(0, k->size(), *k))
{
- const_cast<InstallMap &>(j->get_install_map()).add_mapping(obj.source/i->first, i->second);
+ const_cast<InstallMap &>(j->get_install_map()).add_mapping(obj.source_dir/i->first, i->second);
}
}
}
IO::print("%s: Note: tar_file is deprecated\n", get_source());
for(ComponentList::iterator i=obj.components.begin(); i!=obj.components.end(); ++i)
if(i->get_type()==Component::TARBALL && i->get_name()=="@src")
- const_cast<StringList &>(i->get_sources()).push_back((obj.source/f).str());
+ const_cast<StringList &>(i->get_sources()).push_back((obj.source_dir/f).str());
}