summaryrefslogtreecommitdiff
path: root/src/task_cc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/task_cc.cc')
-rw-r--r--src/task_cc.cc19
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 {};
}