delete current_arch;
if(name.empty())
- {
current_arch = &native_arch;
- prefix = FS::get_home_dir()/"local";
- }
else
- {
current_arch = new Architecture(*this, name);
- prefix = FS::get_home_dir()/"local"/current_arch->get_name();
- }
+
+ if(auto_prefix)
+ update_auto_prefix();
}
vector<string> Builder::get_build_types() const
void Builder::set_prefix(const FS::Path &p)
{
+ auto_prefix = false;
prefix = p;
}
tempdir = p;
}
+void Builder::update_auto_prefix()
+{
+ if(current_arch->is_native())
+ prefix = FS::get_home_dir()/"local";
+ else
+ prefix = FS::get_home_dir()/"local"/current_arch->get_name();
+}
+
void Builder::add_default_tools()
{
toolchain.add_toolchain(new GnuTools(*this, *current_arch));
auto i = find_if(toolchain.get_toolchains(), [](const Toolchain *tc){ return (tc->has_tool("CC") || tc->has_tool("CXX")); });
if(i!=toolchain.get_toolchains().end())
+ {
current_arch->refine((*i)->get_name());
+ if(auto_prefix)
+ update_auto_prefix();
+ }
}
void Builder::set_logger(const Logger *l)
Logger default_logger;
const Logger *logger;
+ bool auto_prefix = true;
Msp::FS::Path prefix;
Msp::FS::Path tempdir = "temp";
const Msp::FS::Path &get_prefix() const { return prefix; }
const Msp::FS::Path &get_temp_directory() const { return tempdir; }
+private:
+ void update_auto_prefix();
+
+public:
void add_default_tools();
const Toolchain &get_toolchain() const { return toolchain; }
VirtualFileSystem &get_vfs() { return vfs; }