path=builder.get_cwd()/p;
}
+Msp::Path::Path Package::get_temp_dir() const
+{
+ return source/config.get_option("tempdir").value/config.get_option("profile").value;
+}
+
+Msp::Path::Path Package::get_out_dir() const
+{
+ return source/config.get_option("outdir").value;
+}
+
/**
Checks which kinds of things the components of this package install.
return flags;
}
+LibMode Package::get_library_mode() const
+{
+ const string &mode=config.get_option("staticlibs").value;
+ if(mode=="all")
+ return ALL_STATIC;
+ else if(mode=="local")
+ return LOCAL_STATIC;
+ else if(mode=="none")
+ return DYNAMIC;
+ else
+ throw Exception("Unknown library mode");
+}
+
/**
Tries to resolve all references to dependency packages.
*/
*/
void Package::configure(const RawOptionMap &opts, unsigned flag)
{
- if(conf_done || !buildable)
+ if(conf_done)
return;
-
+
if(builder.get_verbose()>=3)
cout<<"Configuring "<<name<<'\n';
-
- init_config();
- if(flag && config.process(opts) && !builder.get_dry_run())
- {
- if(builder.get_verbose()>=2)
- cout<<"Configuration of "<<name<<" changed.\n";
- config.save(source/".options.cache");
- }
-
- for(PackageList::iterator i=all_reqs.begin(); i!=all_reqs.end(); ++i)
+ if(buildable)
{
- (*i)->configure(opts, flag&2);
- if((*i)->get_need_path())
- (*i)->set_path(config.get_option((*i)->get_name()+"_path").value);
+ init_config();
+
+ RawOptionMap::const_iterator prof=opts.find("profile");
+ if(prof!=opts.end())
+ config.select_profile(prof->second);
+ else
+ config.select_last_profile();
+
+ if(flag && config.update(opts))
+ {
+ if(builder.get_verbose()>=2)
+ cout<<"Configuration of "<<name<<" changed\n";
+ if(!builder.get_dry_run())
+ config.save();
+ }
+
+ for(PackageList::iterator i=all_reqs.begin(); i!=all_reqs.end(); ++i)
+ {
+ if((*i)->get_need_path())
+ (*i)->set_path(config.get_option((*i)->get_name()+"_path").value);
+ (*i)->configure(opts, flag&2);
+ }
}
-
+
create_build_info();
conf_done=true;
info.push_back("-lgmpxx");
else if(name=="fmod4")
need_path=true;
+ else if(name=="devil")
+ info.push_back("-lIL");
else
return 0;
}
*/
void Package::init_config()
{
- config.add_option("tempdir", "temp", "Directory for storing temporary files");
- config.add_option("optimize", "0", "Apply compiler optimizations");
- 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");
+ config.add_option("profile", "default", "Configuration profile");
+ config.add_option("tempdir", "temp", "Directory for storing temporary files");
+ config.add_option("outdir", ".", "Directory to put build results in");
+ config.add_option("optimize", "0", "Apply compiler optimizations");
+ 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");
const char *home=getenv("HOME");
unsigned flags=get_install_flags();
if(i->get_package() && i->get_package()->get_need_path())
config.add_option(i->get_name()+"_path", "", "Path for "+i->get_name());
- config.load(source/".options.cache");
+ config.set_source(source);
}
/**