build_info.incpath.push_back(public_dir);
FS::Path arch_path = libstdcxx_path/"libs";
- builder.get_logger().log("files", format("Traversing %s", arch_path.str()));
+ builder.get_logger().log("files", "Traversing %s", arch_path.str());
string arch_dir = architecture->best_match(list_files(arch_path));
if(!arch_dir.empty())
{
root = default_path;
else
{
- builder.get_logger().log("problems", format("Android %s not found", type));
+ builder.get_logger().log("problems", "Android %s not found", type);
return;
}
}
if(!FS::exists(platforms_dir))
return;
- builder.get_logger().log("files", format("Traversing %s", platforms_dir.str()));
+ builder.get_logger().log("files", "Traversing %s", platforms_dir.str());
supported_api_levels = 0;
for(const string &p: list_filtered(platforms_dir, "^android-[1-9][0-9]*$"))
{
unsigned api = lexical_cast<unsigned>(p.substr(8));
if(api>63)
- builder.get_logger().log("problems", format("API level %d is too high", api));
+ builder.get_logger().log("problems", "API level %d is too high", api);
else
supported_api_levels |= 1<<api;
}
return;
}
- builder.get_logger().log("files", format("Traversing %s", bt_dir.str()));
+ builder.get_logger().log("files", "Traversing %s", bt_dir.str());
string use_tools;
unsigned latest_version = 0;
for(const string &v: list_files(bt_dir))
}
build_tools_dir = bt_dir/use_tools;
- builder.get_logger().log("tools", format("Android build-tools found in %s", build_tools_dir.str()));
+ builder.get_logger().log("tools", "Android build-tools found in %s", build_tools_dir.str());
}
void AndroidSdk::init_api_level(unsigned api)
if(FS::exists(csr))
{
common_sysroot = csr;
- builder.get_logger().log("tools", format("Android NDK common sysroot is %s", common_sysroot));
+ builder.get_logger().log("tools", "Android NDK common sysroot is %s", common_sysroot);
}
}
return;
}
- builder.get_logger().log("files", format("Traversing %s", toolchains_dir.str()));
+ builder.get_logger().log("files", "Traversing %s", toolchains_dir.str());
string prefix = architecture.get_cross_prefix()+"-";
string use_toolchain;
unsigned latest_version = 0;
const Architecture &native_arch = builder.get_native_arch();
FS::Path tc_archs_dir = toolchains_dir/use_toolchain/"prebuilt";
- builder.get_logger().log("files", format("Traversing %s", tc_archs_dir.str()));
+ builder.get_logger().log("files", "Traversing %s", tc_archs_dir.str());
string use_arch = native_arch.best_match(list_files(tc_archs_dir));
if(use_arch.empty())
}
bin_dir = toolchains_dir/use_toolchain/"prebuilt"/use_arch/"bin";
- builder.get_logger().log("tools", format("Android NDK toolchain binaries found in %s", bin_dir.str()));
+ builder.get_logger().log("tools", "Android NDK toolchain binaries found in %s", bin_dir.str());
}
void AndroidNdk::init_api_level(unsigned api)
{
FS::Path platform_archs_dir = root/"platforms"/format("android-%d", api);
- builder.get_logger().log("files", format("Traversing %s", platform_archs_dir.str()));
+ builder.get_logger().log("files", "Traversing %s", platform_archs_dir.str());
vector<string> platform_archs = list_filtered(platform_archs_dir, "^arch-");
for(string &a: platform_archs)
a.erase(0, 5);
}
platform_sysroot = platform_archs_dir/("arch-"+use_arch);
- builder.get_logger().log("tools", format("Android NDK platform sysroot is %s", platform_sysroot));
+ builder.get_logger().log("tools", "Android NDK platform sysroot is %s", platform_sysroot);
}
unsigned api = 0;
for(unsigned i=32; i>0; i>>=1)
api += i*!!(common_api_levels>>(api+i));
- builder.get_logger().log("tools", format("Using Android API level %d", api));
+ builder.get_logger().log("tools", "Using Android API level %d", api);
sdk.select_api_level(api);
ndk.select_api_level(api);
}
if(all_found)
{
base_path = prefix;
- builder.get_logger().log("configure", format("%s found in %s", name, ((system && use_pkgconfig) ? "system" : base_path.str())));
+ builder.get_logger().log("configure", "%s found in %s", name, ((system && use_pkgconfig) ? "system" : base_path.str()));
break;
}
}
if(base_path.empty())
{
// TODO report which files were not found
- builder.get_logger().log("problems", format("Cannot locate files for %s", name));
+ builder.get_logger().log("problems", "Cannot locate files for %s", name);
problems.push_back("Cannot locate files");
return;
}
{
IO::BufferedFile in(fn.str());
- get_logger().log("files", format("Reading %s", fn));
+ get_logger().log("files", "Reading %s", fn);
DataFile::Parser parser(in, fn.str());
Loader loader(*this, opts, all);
get_logger().log("summary", "Already up to date");
return 0;
}
- get_logger().log("summary", format("Will build %d target%s", total, (total!=1 ? "s" : "")));
+ get_logger().log("summary", "Will build %d target%s", total, (total!=1 ? "s" : ""));
vector<Task *> tasks;
if(tgt)
{
if(tgt->get_tool())
- get_logger().log("tasks", format("%-4s %s", tgt->get_tool()->get_tag(), tgt->get_name()));
+ get_logger().log("tasks", "%-4s %s", tgt->get_tool()->get_tag(), tgt->get_name());
Task *task = tgt->build();
if(task)
{
- get_logger().log("commands", format("%s", task->get_command()));
+ get_logger().log("commands", "%s", task->get_command());
if(dry_run)
{
task->signal_finished.emit(true);
for(Target *t: clean_tgts)
{
- get_logger().log("tasks", format("RM %s", t->get_name()));
+ get_logger().log("tasks", "RM %s", t->get_name());
if(!dry_run)
t->clean();
}
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;
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);
i = data.insert({ key, Values() }).first;
i->second.push_back(v);
changed = true;
- package.get_builder().get_logger().log("cache", format("Updated key %s %s+ %s", tgt->get_name(), k, v));
+ package.get_builder().get_logger().log("cache", "Updated key %s %s+ %s", tgt->get_name(), k, v);
}
void Cache::set_values(const Target *tgt, const string &k, const Values &v)
{
data[Key(tgt->get_name(), k)] = v;
changed = true;
- package.get_builder().get_logger().log("cache", format("Updated key %s %s: %s", tgt->get_name(), k, join(v.begin(), v.end())));
+ package.get_builder().get_logger().log("cache", "Updated key %s %s: %s", tgt->get_name(), k, join(v.begin(), v.end()));
}
const string &Cache::get_value(const Target *tgt, const string &k)
{
if(FS::Stat st = FS::stat(filename))
{
- package.get_builder().get_logger().log("files", format("Reading %s", filename));
+ package.get_builder().get_logger().log("files", "Reading %s", filename);
IO::BufferedFile in(filename.str());
while(!in.eof())
Values &values = data[key];
for(unsigned count = read_count(in); count; --count)
values.push_back(read_string(in));
- package.get_builder().get_logger().log("cache", format("Loaded key %s %s: %s", key.first, key.second, join(values.begin(), values.end())));
+ package.get_builder().get_logger().log("cache", "Loaded key %s %s: %s", key.first, key.second, join(values.begin(), values.end()));
}
mtime = st.get_modify_time();
FS::Path dir = FS::dirname(filename);
if(!FS::exists(dir))
FS::mkpath(dir, 0755);
- package.get_builder().get_logger().log("files", format("Writing %s", filename));
+ package.get_builder().get_logger().log("files", "Writing %s", filename);
IO::BufferedFile out(filename.str(), IO::M_WRITE);
for(const auto &kvp: data)
set<string> overlay_files;
for(auto j=dirs.begin(); j!=dirs.end(); ++j)
{
- package.get_builder().get_logger().log("files", format("Traversing %s", *j));
+ package.get_builder().get_logger().log("files", "Traversing %s", *j);
for(const string &f: list_files(*j))
{
if(j!=dirs.begin())
-#include <msp/strings/format.h>
#include "booleanevaluator.h"
#include "builder.h"
#include "conditionalloader.h"
const Architecture &arch = builder.get_current_arch();
BooleanEvaluator eval([&arch](const string &value){ return arch.match_name(value); });
bool match = eval.evaluate(cond);
- builder.get_logger().log("configure", format("%s: arch %s %smatched", log_prefix, cond, (match ? "" : "not ")));
+ builder.get_logger().log("configure", "%s: arch %s %smatched", log_prefix, cond, (match ? "" : "not "));
if(match)
load_sub_with(*this);
}
{
BooleanEvaluator eval([this](const string &feat, const string *value){ return package.match_feature(feat, value); });
bool match = eval.evaluate(cond);
- package.get_builder().get_logger().log("configure", format("%s: feature %s %smatched", log_prefix, cond, (match ? "" : "not ")));
+ package.get_builder().get_logger().log("configure", "%s: feature %s %smatched", log_prefix, cond, (match ? "" : "not "));
if(match)
load_sub_with(*this);
}
FS::Stat stat = FS::stat(fn);
if(stat)
{
- package.get_builder().get_logger().log("files", format("Reading %s", fn));
+ package.get_builder().get_logger().log("files", "Reading %s", fn);
IO::BufferedFile in(fn.str());
mtime = stat.get_modify_time();
FS::Path fn = package.get_source_directory()/".config";
- package.get_builder().get_logger().log("files", format("Writing %s", fn));
+ package.get_builder().get_logger().log("files", "Writing %s", fn);
IO::BufferedFile out(fn.str(), IO::M_WRITE);
DataFile::Writer writer(out);
{
IO::BufferedFile in(path.str());
- builder.get_logger().log("files", format("Reading includes from %s", path.str()));
+ builder.get_logger().log("files", "Reading includes from %s", path.str());
parse_includes(in);
cache.set_values(this, "includes", includes);
#include <msp/fs/dir.h>
#include <msp/fs/stat.h>
#include <msp/fs/utils.h>
-#include <msp/strings/format.h>
#include <msp/strings/regex.h>
#include "builder.h"
#include "cache.h"
files = cache.get_values(this, "files");
else
{
- builder.get_logger().log("files", format("Reading imports from %s", path.str()));
+ builder.get_logger().log("files", "Reading imports from %s", path.str());
IO::File in(path.str());
DataFile::Parser parser(in, path.str());
if(dir_files.empty())
{
FS::Path dir = FS::dirname(path);
- builder.get_logger().log("files", format("Traversing %s", dir.str()));
+ builder.get_logger().log("files", "Traversing %s", dir.str());
dir_files = list_files(dir);
}
argv.push_back("--sysroot="+sysroot.str());
argv.push_back("-");
- builder.get_logger().log("auxcommands", format("Running %s", join(argv.begin(), argv.end())));
+ builder.get_logger().log("auxcommands", "Running %s", join(argv.begin(), argv.end()));
try
{
string output = ExternalTask::run_and_capture_output(argv, FS::Path(), true);
else if(record_path)
{
FS::Path path = strip(output.substr(start, newline-start));
- builder.get_logger().log("tools", format("Got %s system path: %s", tag, path));
+ builder.get_logger().log("tools", "Got %s system path: %s", tag, path);
system_path.push_back(path);
}
start = newline+1;
if(!path_found)
{
- builder.get_logger().log("tools", format("No %s system path found, using defaults", tag));
+ builder.get_logger().log("tools", "No %s system path found, using defaults", tag);
if(!sysroot.empty())
system_path.push_back(sysroot/"usr/include");
else if(architecture->is_native())
prepare_version("-dumpversion");
if(version>=0x70000)
prepare_version("-dumpfullversion");
- builder.get_logger().log("tools", format("%s version is %d.%d.%d", FS::basename(executable->get_path()), version>>16, (version>>8)&0xFF, version&0xFF));
+ builder.get_logger().log("tools", "%s version is %d.%d.%d", FS::basename(executable->get_path()), version>>16, (version>>8)&0xFF, version&0xFF);
}
void GnuCompiler::prepare_version(const string &arg)
argv.push_back(executable->get_path().str());
argv.push_back(arg);
- builder.get_logger().log("auxcommands", format("Running %s", join(argv.begin(), argv.end())));
+ builder.get_logger().log("auxcommands", "Running %s", join(argv.begin(), argv.end()));
try
{
string version_str = strip(ExternalTask::run_and_capture_output(argv));
if(!sysroot.empty())
argv.push_back("--sysroot="+sysroot.str());
- builder.get_logger().log("auxcommands", format("Running %s", join(argv.begin(), argv.end())));
+ builder.get_logger().log("auxcommands", "Running %s", join(argv.begin(), argv.end()));
try
{
string output = ExternalTask::run_and_capture_output(argv, FS::Path(), true);
}
path /= output.substr(search_dir, end-search_dir);
- builder.get_logger().log("tools", format("Got %s system path: %s", tag, path));
+ builder.get_logger().log("tools", "Got %s system path: %s", tag, path);
system_path.push_back(path);
path_found = true;
if(!path_found)
{
- builder.get_logger().log("tools", format("No %s system path found, using defaults", tag));
+ builder.get_logger().log("tools", "No %s system path found, using defaults", tag);
if(!sysroot.empty())
system_path.push_back(sysroot/"usr/lib");
else if(architecture->is_native())
enabled_channels.erase(i);
}
-void Logger::log(const string &chan, const string &message) const
+bool Logger::is_channel_enabled(const string &chan) const
{
auto i = lower_bound(enabled_channels, chan);
- if(i!=enabled_channels.end() && *i==chan)
- IO::print("%s\n", message);
+ return (i!=enabled_channels.end() && *i==chan);
+}
+
+void Logger::log(const string &chan, const string &message) const
+{
+ if(is_channel_enabled(chan))
+ print(message);
+}
+
+void Logger::print(const string &message) const
+{
+ IO::print("%s\n", message);
}
#include <string>
#include <vector>
+#include <msp/strings/format.h>
class Logger
{
public:
void enable_channel(const std::string &);
void disable_channel(const std::string &);
+ bool is_channel_enabled(const std::string &) const;
void log(const std::string &, const std::string &) const;
+
+ template<typename... Args>
+ void log(const std::string &, const std::string &, Args &&...) const;
+
+private:
+ void print(const std::string &) const;
};
+template<typename... Args>
+void Logger::log(const std::string &chan, const std::string &fmt, Args &&... args) const
+{
+ if(is_channel_enabled(chan))
+ print(Msp::format(fmt, std::forward<Args>(args)...));
+}
+
#endif
#include <msp/core/algorithm.h>
#include <msp/fs/dir.h>
-#include <msp/strings/format.h>
#include <msp/strings/utils.h>
#include "builder.h"
#include "externaltask.h"
argv.push_back("-property");
argv.push_back("installationPath");
- builder.get_logger().log("auxcommands", format("Running %s", join(argv.begin(), argv.end())));
+ builder.get_logger().log("auxcommands", "Running %s", join(argv.begin(), argv.end()));
string output = ExternalTask::run_and_capture_output(argv, FS::Path(), true);
FS::Path vs_path = strip(output);
- builder.get_logger().log("tools", format("Visual Studio found in %s", vs_path));
+ builder.get_logger().log("tools", "Visual Studio found in %s", vs_path);
FS::Path vc_aux_build_dir = vs_path/"VC"/"Auxiliary"/"Build";
- builder.get_logger().log("files", format("Traversing %s", vc_aux_build_dir));
+ builder.get_logger().log("files", "Traversing %s", vc_aux_build_dir);
vector<string> vc_version_files = FS::list_filtered(vc_aux_build_dir, "^Microsoft\\.VCToolsVersion\\.");
if(vc_version_files.empty())
{
sort(vc_version_files);
FS::Path vc_version_fn = vc_aux_build_dir/vc_version_files.back();
- builder.get_logger().log("files", format("Reading %s", vc_version_fn));
+ builder.get_logger().log("files", "Reading %s", vc_version_fn);
char buffer[256];
unsigned len = IO::File(vc_version_fn.str()).read(buffer, sizeof(buffer));
string vc_version = strip(string(buffer, len));
- builder.get_logger().log("tools", format("Detected MSVC version %s", vc_version));
+ builder.get_logger().log("tools", "Detected MSVC version %s", vc_version);
const Architecture &native_arch = builder.get_native_arch();
string host = (native_arch.get_bits()==64 ? "Hostx64" : "Hostx86");
if(win_sdk_dir.empty())
win_sdk_dir = get_program_files_x86_dir()/"Windows Kits"/"10";
- builder.get_logger().log("files", format("Traversing %s", win_sdk_dir/"include"));
+ builder.get_logger().log("files", "Traversing %s", win_sdk_dir/"include");
vector<string> sdk_versions = FS::list_filtered(win_sdk_dir/"include", "^10\\.");
if(sdk_versions.empty())
{
sort(sdk_versions);
win_sdk_version = sdk_versions.back();
- builder.get_logger().log("tools", format("Windows SDK version %s found in %s", win_sdk_version, win_sdk_dir));
+ builder.get_logger().log("tools", "Windows SDK version %s found in %s", win_sdk_version, win_sdk_dir);
}
for(const FS::Path &p: system_path)
{
append(path, ";", p.str());
- builder.get_logger().log("tools", format("Got %s system path: %s", tag, p));
+ builder.get_logger().log("tools", "Got %s system path: %s", tag, p);
}
setenv("INCLUDE", path);
#include <msp/core/environ.h>
#include <msp/fs/utils.h>
-#include <msp/strings/format.h>
#include <msp/strings/utils.h>
#include "builder.h"
#include "component.h"
for(const FS::Path &p: system_path)
{
append(path, ";", p.str());
- builder.get_logger().log("tools", format("Got %s system path: %s", tag, p));
+ builder.get_logger().log("tools", "Got %s system path: %s", tag, p);
}
setenv("LIB", path);
#include <msp/fs/stat.h>
#include <msp/fs/utils.h>
#include <msp/io/print.h>
-#include <msp/strings/format.h>
#include <msp/strings/utils.h>
#include <msp/time/timedelta.h>
#include <msp/time/utils.h>
argv.push_back("--variable="+what);
argv.push_back(pkg);
- builder.get_logger().log("auxcommands", format("Running %s", join(argv.begin(), argv.end())));
+ builder.get_logger().log("auxcommands", "Running %s", join(argv.begin(), argv.end()));
return ExternalTask::run_and_capture_output(argv);
#else
FS::Path PackageManager::get_package_location(const string &name)
{
- builder.get_logger().log("packagemgr", format("Looking for source package %s", name));
+ builder.get_logger().log("packagemgr", "Looking for source package %s", name);
try
{
{
for(const FS::Path &p: pkg_path)
{
- builder.get_logger().log("files", format("Traversing %s", p));
+ builder.get_logger().log("files", "Traversing %s", p);
unsigned count = 0;
for(const string &f: list_files(p))
{
}
}
- builder.get_logger().log("packagemgr", format("%d source packages found in %s", count, p));
+ builder.get_logger().log("packagemgr", "%d source packages found in %s", count, p);
}
- builder.get_logger().log("packagemgr", format("%d source packages found", pkg_dirs.size()));
+ builder.get_logger().log("packagemgr", "%d source packages found", pkg_dirs.size());
}
bool msp = !name.compare(0, 3, "msp");
FS::Path PackageManager::get_binary_package_file(const string &name)
{
- builder.get_logger().log("packagemgr", format("Looking for binary package %s", name));
+ builder.get_logger().log("packagemgr", "Looking for binary package %s", name);
if(binpkg_files.empty())
{
for(const FS::Path &p: binpkg_path)
{
- builder.get_logger().log("files", format("Traversing %s", p));
+ builder.get_logger().log("files", "Traversing %s", p);
vector<string> files = list_filtered(p, "\\.bpk$");
for(const string &f: files)
binpkg_files.push_back(p/f);
- builder.get_logger().log("packagemgr", format("%d binary packages found in %s", files.size(), p));
+ builder.get_logger().log("packagemgr", "%d binary packages found in %s", files.size(), p);
}
- builder.get_logger().log("packagemgr", format("%d binary packages found", binpkg_files.size()));
+ builder.get_logger().log("packagemgr", "%d binary packages found", binpkg_files.size());
}
auto i = find_if(binpkg_files, [&name](const FS::Path &p){ return FS::basepart(FS::basename(p))==name; });
#include <msp/core/algorithm.h>
#include <msp/fs/stat.h>
#include <msp/fs/utils.h>
-#include <msp/strings/format.h>
#include "builder.h"
#include "filetarget.h"
#include "sourcepackage.h"
state = REBUILD;
rebuild_reason = reason;
- builder.get_logger().log("rebuild", format("Rebuilding %s: %s", name, reason));
+ builder.get_logger().log("rebuild", "Rebuilding %s: %s", name, reason);
signal_bubble_rebuild.emit();
}
return;
if(state==PREPARING)
{
- builder.get_logger().log("problems", format("Dependency cycle detected at %s", name));
+ builder.get_logger().log("problems", "Dependency cycle detected at %s", name);
problems.push_back("Dependency cycle detected");
state = BROKEN;
return;
executable = builder.get_vfs().find_binary(command);
if(!executable)
{
- builder.get_logger().log("problems", format("Can't find executable %s for %s", command, tag));
+ builder.get_logger().log("problems", "Can't find executable %s for %s", command, tag);
problems.push_back(format("Can't find executable %s", command));
}
}
{
targets.insert({ path, t });
nonexistent.erase(path);
- builder.get_logger().log("vfs", format("Path %s registered to %s", path, t->get_name()));
+ builder.get_logger().log("vfs", "Path %s registered to %s", path, t->get_name());
}
FileTarget *VirtualFileSystem::find_header(const string &name, Tool *tool, const SearchPath &path, bool use_syspath)
FS::Path filename = p/name;
if(FileTarget *tgt = get_target(filename))
{
- builder.get_logger().log("vfs", format("Header %s found in %s as existing %s", name, p.str(), tgt->get_type()));
+ builder.get_logger().log("vfs", "Header %s found in %s as existing %s", name, p.str(), tgt->get_type());
return tgt;
}
else if(file_exists(filename))
{
- builder.get_logger().log("vfs", format("Header %s found in %s", name, p.str()));
+ builder.get_logger().log("vfs", "Header %s found in %s", name, p.str());
return dynamic_cast<FileTarget *>(tool->create_source(filename));
}
- builder.get_logger().log("vfs", format("Header %s not found in %s", name, p.str()));
+ builder.get_logger().log("vfs", "Header %s not found in %s", name, p.str());
}
return 0;
FS::Path filename = p / *j;
if(FileTarget *tgt = get_target(filename))
{
- builder.get_logger().log("vfs", format("Library %s (%s) found in %s as existing %s", lib, *j, p.str(), tgt->get_type()));
+ builder.get_logger().log("vfs", "Library %s (%s) found in %s as existing %s", lib, *j, p.str(), tgt->get_type());
return tgt;
}
else if(file_exists(filename))
{
- builder.get_logger().log("vfs", format("Library %s (%s) found in %s", lib, *j, p.str()));
+ builder.get_logger().log("vfs", "Library %s (%s) found in %s", lib, *j, p.str());
if(cur_names==&shared_names)
{
if(use_import_lib)
}
}
- builder.get_logger().log("vfs", format("Library %s not found in %s", lib, p.str()));
+ builder.get_logger().log("vfs", "Library %s not found in %s", lib, p.str());
}
return 0;
FS::Path filename = p/name;
if(FileTarget *tgt = get_target(filename))
{
- builder.get_logger().log("vfs", format("Binary %s found in %s as existing %s", name, p, tgt->get_type()));
+ builder.get_logger().log("vfs", "Binary %s found in %s as existing %s", name, p, tgt->get_type());
return tgt;
}
else if(file_exists(filename))
{
- builder.get_logger().log("vfs", format("Binary %s found in %s", name, p));
+ builder.get_logger().log("vfs", "Binary %s found in %s", name, p);
return new Executable(builder, filename);
}
- builder.get_logger().log("vfs", format("Binary %s not found in %s", name, p));
+ builder.get_logger().log("vfs", "Binary %s not found in %s", name, p);
}
return 0;