X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flib%2Fbuilder.cpp;h=f979d28f38ce35c6f01976cc5109886f83b50ab7;hb=ba5078a4334ef419aeb1949190a743a05037750c;hp=c8c7bf81efbccb47726edef19c1ae11417184103;hpb=f9f8b6926a842f241edf7db6590af4b47a87bfd3;p=builder.git diff --git a/source/lib/builder.cpp b/source/lib/builder.cpp index c8c7bf8..f979d28 100644 --- a/source/lib/builder.cpp +++ b/source/lib/builder.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -47,6 +48,9 @@ void Builder::load_plugins() using CreateFunc = Plugin *(Builder &); FS::Path plugins_dir = FS::get_sys_lib_dir(); + if(!FS::exists(plugins_dir)) + return; + logger->log("files", "Traversing %s", plugins_dir); vector unordered_plugins; for(const string &f: list_filtered(plugins_dir, "\\.dlm$")) @@ -83,6 +87,11 @@ void Builder::load_plugins() } } + add_plugins(unordered_plugins); +} + +void Builder::add_plugins(vector &unordered_plugins) +{ auto have_plugin = [this](const string &r){ return any_of(plugins.begin(), plugins.end(), [&r](const LoadedPlugin &p){ return FS::basepart(FS::basename(p.path))==r; }); }; @@ -278,6 +287,7 @@ void Builder::save_caches() int Builder::build(unsigned jobs, bool dry_run, bool show_progress) { unsigned total = build_graph.count_rebuild_targets(); + Time::TimeStamp start_time = Time::now(); if(!total) { @@ -289,6 +299,7 @@ int Builder::build(unsigned jobs, bool dry_run, bool show_progress) vector tasks; unsigned count = 0; + Time::TimeDelta sum_time; bool fail = false; bool finish = false; @@ -346,6 +357,13 @@ int Builder::build(unsigned jobs, bool dry_run, bool show_progress) { ++count; + const vector &targets = tasks[i]->get_targets(); + if(!targets.empty()) + { + sum_time += tasks[i]->get_duration(); + get_logger().log("timings", "%s built in %s", targets.front()->get_name(), tasks[i]->get_duration()); + } + delete tasks[i]; tasks.erase(tasks.begin()+i); if(status==Task::ERROR) @@ -366,6 +384,9 @@ int Builder::build(unsigned jobs, bool dry_run, bool show_progress) else if(show_progress) get_logger().log("summary", "Build complete"); + Time::TimeStamp end_time = Time::now(); + get_logger().log("timings", "Build took %s, with a total %s spent on tasks", end_time-start_time, sum_time); + return fail; }