#include "misc.h"
#include "objectfile.h"
#include "package.h"
+#include "sharedlibrary.h"
+#include "staticlibrary.h"
#include "systemlibrary.h"
#include "virtualtarget.h"
using namespace Msp;
Builder::Builder(int argc, char **argv):
+ analyzer(0),
+ do_build(true),
verbose(1),
+ chrome(false),
build_file("Build"),
- do_build(true),
- analyzer(0),
- jobs(1),
- chrome(false)
+ jobs(1)
{
GetOpt getopt;
getopt.add_option(GetOpt::Option('a', "analyze", GetOpt::REQUIRED));
return 0;
}
- std::list<std::string> missing;
+ StringList missing;
for(PackageMap::iterator i=packages.begin(); i!=packages.end(); ++i)
if(!i->second)
missing.push_back(i->first);
if(build_exe)
{
- Executable *exe=new Executable(*this, *j, objs);
+ Executable *exe=0;
+ StaticLibrary *slib=0;
+ if(j->get_type()==Component::LIBRARY)
+ {
+ exe=new SharedLibrary(*this, *j, objs);
+ slib=new StaticLibrary(*this, *j, objs);
+ add_target(slib);
+ }
+ else
+ exe=new Executable(*this, *j, objs);
+
add_target(exe);
if(i->second==default_pkg)
+ {
def_tgt->add_depend(exe);
+ if(slib) def_tgt->add_depend(slib);
+ }
else
+ {
world->add_depend(exe);
+ if(slib) world->add_depend(slib);
+ }
if(j->get_install())
{
Install *inst=new Install(*this, *i->second, *exe, (inst_base/inst_dir/Path::basename(exe->get_name())).str());
add_target(inst);
install->add_depend(inst);
+
+ if(slib)
+ {
+ inst=new Install(*this, *i->second, *slib, (inst_base/inst_dir/Path::basename(slib->get_name())).str());
+ add_target(inst);
+ install->add_depend(inst);
+ }
}
}
}
const Config::OptionMap &options=config.get_options();
cout<<"Required packages:\n ";
- const list<PackageRef> &requires=default_pkg->get_requires();
- for(list<PackageRef>::const_iterator i=requires.begin(); i!=requires.end(); ++i)
+ const PkgRefList &requires=default_pkg->get_requires();
+ for(PkgRefList::const_iterator i=requires.begin(); i!=requires.end(); ++i)
{
if(i!=requires.begin())
cout<<", ";