X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=31cdd1806aa62b5e921ed531d73631920a8baf3a;hb=0fd98b61eb112fe397c67b7735627b7bbdd01e41;hp=1afc741ef59ee3c9b6c060c55800dea0238f97f0;hpb=2842eeda5aa7c143b3ff54d48f8673bbdcb35c75;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index 1afc741..31cdd18 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -1,12 +1,11 @@ #include #include #include -#include -#include #include #include #include #include +#include #include #include #include "action.h" @@ -30,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; @@ -101,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")); } /** @@ -250,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))