]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Add basic support for tools (not configurable yet)
[builder.git] / source / builder.cpp
index f23e85af8c06d17c1056734a0bb2ce3995d82425..31cdd1806aa62b5e921ed531d73631920a8baf3a 100644 (file)
@@ -29,10 +29,15 @@ using namespace Msp;
 Builder::Builder(int argc, char **argv):
        analyzer(0),
        do_build(false),
+       dry_run(false),
+       help(false),
        verbose(1),
        chrome(false),
        build_file("Build"),
-       jobs(1)
+       jobs(1),
+       conf_all(false),
+       conf_only(false),
+       build_all(false)
 {
        string   analyze_mode;
        string   work_dir;
@@ -100,6 +105,13 @@ Builder::Builder(int argc, char **argv):
        archs.insert(StringMap::value_type("native", ""));
        archs.insert(StringMap::value_type("arm", "arm-linux-gnu-"));
        archs.insert(StringMap::value_type("win32", "i586-mingw32msvc-"));
+
+       StringMap &native_tools=tools.insert(ToolMap::value_type("native", StringMap())).first->second;
+       native_tools.insert(StringMap::value_type("CC",   "gcc"));
+       native_tools.insert(StringMap::value_type("CXX",  "g++"));
+       native_tools.insert(StringMap::value_type("LD",   "gcc"));
+       native_tools.insert(StringMap::value_type("LDXX", "g++"));
+       native_tools.insert(StringMap::value_type("AR",   "ar"));
 }
 
 /**
@@ -249,6 +261,25 @@ const string &Builder::get_arch_prefix(const string &arch) const
        return i->second;
 }
 
+string Builder::get_tool(const std::string &tool, const std::string &arch)
+{
+       ToolMap::iterator i=tools.find(arch);
+       if(i!=tools.end())
+       {
+               StringMap::iterator j=i->second.find(tool);
+               if(j!=i->second.end())
+                       return j->second;
+       }
+
+       // Either the arch, or the tool within the arch was not found
+       i=tools.find("native");
+       StringMap::iterator j=i->second.find(tool);
+       if(j==i->second.end())
+               throw InvalidParameterValue("Unknown tool");
+
+       return get_arch_prefix(arch)+j->second;
+}
+
 int Builder::main()
 {
        if(load_build_file(cwd/build_file))