X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuildercli.cpp;h=a37336f20e886686a7873d08947d1b6855c33f4b;hb=8b6370186b119e56275401aefbea22b5e0d76142;hp=a7dd1e23ff2402f94ab07a1b67ce85f0fb446801;hpb=0d95fee118a3fcd78f153dca5721d9fe19b6f6bf;p=builder.git diff --git a/source/buildercli.cpp b/source/buildercli.cpp index a7dd1e2..a37336f 100644 --- a/source/buildercli.cpp +++ b/source/buildercli.cpp @@ -8,11 +8,14 @@ #include "buildercli.h" #include "filetarget.h" #include "sourcepackage.h" +#include "tool.h" +#include "toolchain.h" using namespace std; using namespace Msp; BuilderCLI::BuilderCLI(int argc, char **argv): + RegisteredApplication("builder"), analyzer(0), build(false), clean(0), @@ -142,15 +145,15 @@ BuilderCLI::BuilderCLI(int argc, char **argv): package_manager.append_package_path(cwd); package_manager.append_package_path(cwd/".."); - package_manager.append_binary_package_path(FS::get_sys_data_dir(argv[0], "builder")); + package_manager.append_binary_package_path(FS::get_sys_data_dir()/"packages"); package_manager.set_no_externals(no_externals); - builder.set_architecture(arch); + builder.set_architecture(tolower(arch)); list start_files; - start_files.push_back(FS::get_sys_data_dir(argv[0], "builder")/"builderrc"); - start_files.push_back(FS::get_user_data_dir("builder")/"rc"); + start_files.push_back(FS::get_sys_data_dir()/"builderrc"); + start_files.push_back(FS::get_user_data_dir()/"rc"); for(list::const_iterator i=start_files.begin(); i!=start_files.end(); ++i) if(FS::exists(*i)) builder.load_build_file(*i); @@ -165,6 +168,18 @@ BuilderCLI::BuilderCLI(int argc, char **argv): builder.set_build_type(build_type); builder.add_default_tools(); + + const Toolchain &toolchain = builder.get_toolchain(); + for(Config::InputOptions::iterator i=cmdline_options.begin(); i!=cmdline_options.end(); ) + { + if(toolchain.has_tool(i->first)) + { + toolchain.get_tool(i->first).set_command(i->second); + cmdline_options.erase(i++); + } + else + ++i; + } } BuilderCLI::~BuilderCLI() @@ -346,13 +361,29 @@ void BuilderCLI::package_help() IO::print(", "); IO::print((*i)->get_name()); } - IO::print("\n\nPackage configuration:\n"); - for(Config::OptionMap::const_iterator i=options.begin(); i!=options.end(); ++i) + IO::print("\n"); + + if(!options.empty()) { - const Config::Option &opt = i->second; - IO::print(" %s: %s (%s)", opt.name, opt.description, opt.value); - if(opt.value!=opt.default_value) - IO::print(" [%s]", opt.default_value); - IO::print("\n"); + IO::print("\nPackage configuration:\n"); + for(Config::OptionMap::const_iterator i=options.begin(); i!=options.end(); ++i) + { + const Config::Option &opt = i->second; + string line = format(" %s: %s (%s)", opt.name, opt.description, opt.value); + if(!opt.choices.empty()) + { + line += " {"; + for(list::const_iterator j=opt.choices.begin(); j!=opt.choices.end(); ++j) + { + if(j!=opt.choices.begin()) + line += ' '; + line += *j; + } + line += '}'; + } + else if(opt.value!=opt.default_value) + line += format(" [%s]", opt.default_value); + IO::print("%s\n", line); + } } }