From 69d6df33bf7fabe62cdcd61bcd7ebc20b6de6b67 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Mon, 30 May 2022 19:33:37 +0200 Subject: Add custom output object names to source specifications. --- src/libctor.h | 6 ++++++ src/task_cc.cc | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/libctor.h b/src/libctor.h index f80a5c5..b539910 100644 --- a/src/libctor.h +++ b/src/libctor.h @@ -44,8 +44,14 @@ struct Source Source(const char* file, Language lang) : file(file), language(lang) {} Source(const std::string& file, Language lang) : file(file), language(lang) {} + Source(const char* file, const char* output) : file(file), output(output) {} + Source(const std::string& file, const std::string& output) : file(file), output(output) {} + Source(const char* file, Language lang, const char* output) : file(file), language(lang), output(output) {} + Source(const std::string& file, Language lang, const std::string& output) : file(file), language(lang), output(output) {} + std::string file; Language language{Language::Auto}; + std::string output{}; }; struct Flags diff --git a/src/task_cc.cc b/src/task_cc.cc index 673c16d..ee25abf 100644 --- a/src/task_cc.cc +++ b/src/task_cc.cc @@ -51,8 +51,15 @@ TaskCC::TaskCC(const BuildConfiguration& config, const Settings& settings, break; } - _targetFile = base; - _targetFile += ".o"; + if(source.output.empty()) + { + _targetFile = base; + _targetFile += ".o"; + } + else + { + _targetFile = source.output; + } depsFile = targetFile().parent_path() / targetFile().stem(); depsFile += ".d"; flagsFile = targetFile().parent_path() / targetFile().stem(); -- cgit v1.2.3