diff options
Diffstat (limited to 'src/task_cc.cc')
| -rw-r--r-- | src/task_cc.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/task_cc.cc b/src/task_cc.cc index 9628455..479a453 100644 --- a/src/task_cc.cc +++ b/src/task_cc.cc @@ -14,15 +14,22 @@ #include "tools.h" #include "deps.h" -TaskCC::TaskCC(const ctor::build_configuration& config_, const ctor::settings& settings_, - const std::string& sourceDir_, const ctor::source& source) - : Task(config_, settings_, sourceDir_) +TaskCC::TaskCC(ctor::target_type resolved_target_type, + const ctor::build_configuration& config_, + const ctor::settings& settings_, + const std::string& sourceDir_, + const ctor::source& source) + : Task(resolved_target_type, config_, settings_, sourceDir_) , sourceFile(sourceDir_) , config(config_) , settings(settings_) , sourceDir(sourceDir_) , _source(source) { + if(source.source_type == ctor::source_type::generated) + { + sourceFile = std::filesystem::path(settings.builddir) / sourceFile; + } sourceFile /= source.file; std::filesystem::path base = sourceFile.parent_path(); @@ -31,8 +38,6 @@ TaskCC::TaskCC(const ctor::build_configuration& config_, const ctor::settings& s base += "-"; base += sourceFile.stem(); - target_type = ctor::target_type::object; - output_system = config.system; source_language = source.language; if(source_language == ctor::language::automatic) { @@ -252,6 +257,10 @@ int TaskCC::clean() std::vector<std::string> TaskCC::depends() const { + if(_source.source_type == ctor::source_type::generated) + { + return {sourceFile.string()}; + } return {}; } |
