X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuildercli.cpp;h=41a2429a48aba8307c00553bb45583c183134e7c;hb=5e00719d0c63e306786ff36df61797cdbc86f3e9;hp=1952f594bd7daece578b4d7e65e1608ba5044097;hpb=3938f8030b1f62802decce19777ce70fdafaff10;p=builder.git diff --git a/source/buildercli.cpp b/source/buildercli.cpp index 1952f59..41a2429 100644 --- a/source/buildercli.cpp +++ b/source/buildercli.cpp @@ -39,7 +39,7 @@ BuilderCLI::BuilderCLI(int argc, char **argv): bool no_externals = false; unsigned verbose = 1; bool silent = false; - list log_channels; + vector log_channels; string build_type; GetOpt getopt; @@ -121,18 +121,6 @@ BuilderCLI::BuilderCLI(int argc, char **argv): else if(!clean && !create_makefile) build = true; - for(auto i=cmdline_targets.begin(); i!=cmdline_targets.end(); ) - { - string::size_type equal = i->find('='); - if(equal!=string::npos) - { - cmdline_options.insert({ i->substr(0, equal), i->substr(equal+1) }); - cmdline_targets.erase(i++); - } - else - ++i; - } - if(!work_dir.empty()) FS::chdir(work_dir); @@ -148,7 +136,7 @@ BuilderCLI::BuilderCLI(int argc, char **argv): builder.set_architecture(tolower(arch)); - list start_files; + vector start_files; start_files.push_back(FS::get_sys_data_dir()/"builderrc"); start_files.push_back(FS::get_user_data_dir()/"rc"); for(const FS::Path &f: start_files) @@ -167,12 +155,18 @@ BuilderCLI::BuilderCLI(int argc, char **argv): builder.add_default_tools(); const Toolchain &toolchain = builder.get_toolchain(); - for(auto i=cmdline_options.begin(); i!=cmdline_options.end(); ) + for(auto i=cmdline_targets.begin(); i!=cmdline_targets.end(); ) { - if(toolchain.has_tool(i->first)) + string::size_type equal = i->find('='); + if(equal!=string::npos) { - toolchain.get_tool(i->first).set_command(i->second); - cmdline_options.erase(i++); + string key = i->substr(0, equal); + string value = i->substr(equal+1); + if(toolchain.has_tool(key)) + toolchain.get_tool(key).set_command(value); + else + cmdline_options.insert({ key, value }); + i = cmdline_targets.erase(i); } else ++i; @@ -209,28 +203,28 @@ int BuilderCLI::main() return 0; } - if(!prepare_build()) - return 1; - - if(conf_only) - return 0; - const Architecture &native_arch = builder.get_native_arch(); const Architecture ¤t_arch = builder.get_current_arch(); - logger.log("environment", format("Building on %s, for %s%s", native_arch.get_name(), - current_arch.get_name(), (current_arch.is_native() ? " (native)" : ""))); - logger.log("environment", format("Prefix is %s", builder.get_prefix())); + logger.log("environment", "Building on %s, for %s%s", native_arch.get_name(), + current_arch.get_name(), (current_arch.is_native() ? " (native)" : "")); + logger.log("environment", "Prefix is %s", builder.get_prefix()); const FS::Path &tempdir = builder.get_temp_directory(); if(tempdir.is_absolute()) - logger.log("environment", format("Temporary directory is %s", tempdir)); + logger.log("environment", "Temporary directory is %s", tempdir); else - logger.log("environment", format("Using per-package temporary directory %s", tempdir)); + logger.log("environment", "Using per-package temporary directory %s", tempdir); const BuildType &build_type = builder.get_build_type(); - logger.log("environment", format("Build type is %s", build_type.get_name())); + logger.log("environment", "Build type is %s", build_type.get_name()); + + if(!prepare_build()) + return 1; + + if(conf_only) + return 0; BuildGraph &build_graph = builder.get_build_graph(); PackageManager &package_manager = builder.get_package_manager(); - list package_details; + vector package_details; for(const auto &kvp: package_manager.get_packages()) { if(!kvp.second->is_prepared()) @@ -262,7 +256,7 @@ int BuilderCLI::main() package_details.push_back(line); } - logger.log("summary", format("%d active packages, %d targets", package_details.size(), build_graph.get_targets().size())); + logger.log("summary", "%d active packages, %d targets", package_details.size(), build_graph.get_targets().size()); for(const string &d: package_details) logger.log("packages", d); @@ -271,7 +265,7 @@ int BuilderCLI::main() if(build_graph.get_goals().is_broken()) { - list problems = builder.collect_problems(); + vector problems = builder.collect_problems(); IO::print(IO::cerr, "The following problems were detected:\n"); for(const string &p: problems) IO::print(IO::cerr, " %s\n", p);