/**
Creates a buildable package.
*/
-SourcePackage::SourcePackage(Builder &b, const string &n, const Path::Path &s):
+SourcePackage::SourcePackage(Builder &b, const string &n, const FS::Path &s):
Package(b, n),
source(s),
config(*this),
tar_files.push_back(source/"Build");
}
-Msp::Path::Path SourcePackage::get_temp_dir() const
+Msp::FS::Path SourcePackage::get_temp_dir() const
{
- return source/config.get_option("tempdir").value/config.get_option("profile").value;
+ return source/config.get_option("tempdir").value/builder.get_current_arch().get_name()/config.get_option("profile").value;
}
-Msp::Path::Path SourcePackage::get_out_dir() const
+Msp::FS::Path SourcePackage::get_out_dir() const
{
return source/config.get_option("outdir").value;
}
{
const StringList &reqs=i->get_requires();
for(StringList::const_iterator j=reqs.begin(); j!=reqs.end(); ++j)
- requires.push_back(builder.get_package(*j));
+ if(Package *pkg=builder.get_package(*j))
+ requires.push_back(pkg);
}
base_reqs=requires;
config.add_option("strip", "0", "Strip symbols from programs");
config.add_option("debug", "0", "Produce debugging symbols");
config.add_option("cpu", "auto", "CPU type to optimize for");
- config.add_option("arch", "native", "Architecture for cross-compiling");
config.add_option("staticlibs", "local", "Use static libraries");
- unsigned flags=get_install_flags();
- if(flags)
- config.add_option("prefix", "$HOME/local", "Installation prefix");
- /*if(flags&INCLUDE)
- config.add_option("includedir", "$prefix/include", "Header installation directory");
- if(flags&BIN)
- config.add_option("includedir", "$prefix/bin", "Binary installation directory");
- if(flags&LIB)
- config.add_option("includedir", "$prefix/lib", "Library installation directory");
- if(flags&DATA)
- config.add_option("includedir", "$prefix/share", "Data installation directory");*/
-
for(FeatureList::iterator i=features.begin(); i!=features.end(); ++i)
config.add_option("with_"+i->name, "0", i->descr);
{
BinaryPackage *bpkg=dynamic_cast<BinaryPackage *>(*i);
if(bpkg && bpkg->get_need_path())
- config.add_option(bpkg->get_name()+"_path", "", "Path for "+bpkg->get_name());
+ config.add_option(bpkg->get_name()+"_path", "/usr", "Path for "+bpkg->get_name());
}
}
export_binfo.defines.insert(export_binfo.defines.end(), ebi.defines.begin(), ebi.defines.end());
}
- build_info.cflags.push_back("-Wall");
- build_info.cflags.push_back("-Wshadow");
- build_info.cflags.push_back("-Wextra");
- build_info.cflags.push_back("-Wpointer-arith");
- build_info.cflags.push_back("-Wconversion");
- build_info.cflags.push_back("-Werror");
+ // 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());
unsigned flags=get_install_flags();
+ build_info.incpath.push_back((builder.get_prefix()/"include").str());
+ build_info.libpath.push_back((builder.get_prefix()/"lib").str());
+
if(flags&INCLUDE)
- export_binfo.incpath.push_back((Path::Path(config.get_option("prefix").value)/"include").str());
+ export_binfo.incpath.push_back((builder.get_prefix()/"include").str());
if(flags&LIB)
- export_binfo.libpath.push_back((Path::Path(config.get_option("prefix").value)/"lib").str());
+ export_binfo.libpath.push_back((builder.get_prefix()/"lib").str());
string optimize=config.get_option("optimize").value;
if(lexical_cast<unsigned>(optimize))