From c53e622b648635539e4870fd0c9159c5d8c3be4a Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 20 Jun 2021 20:21:58 +0200 Subject: Introduction of configuration generation for controlling tool-chain. --- task_cc.cc | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) (limited to 'task_cc.cc') diff --git a/task_cc.cc b/task_cc.cc index 6c7e3b7..27b2176 100644 --- a/task_cc.cc +++ b/task_cc.cc @@ -85,7 +85,7 @@ std::vector readDeps(const std::string& depFile) TaskCC::TaskCC(const BuildConfiguration& config, const Settings& settings, const std::string& sourceDir, const std::string& source) - : Task({}) + : Task(config) , config(config) , settings(settings) , sourceDir(sourceDir) @@ -101,6 +101,16 @@ TaskCC::TaskCC(const BuildConfiguration& config, const Settings& settings, flagsFile = settings.builddir / sourceFile.stem(); flagsFile += ".flags"; + + target_type = TargetType::Object; + if(sourceFile.extension().string() == ".c") + { + _language = Language::C; + } + else + { + _language = Language::Cpp; + } } bool TaskCC::dirtyInner() @@ -245,11 +255,17 @@ std::string TaskCC::toJSON() const std::vector TaskCC::flags() const { - if(std::string(sourceFile.extension()) == ".c") + switch(language()) { + case Language::C: return config.cflags; + case Language::Cpp: + return config.cxxflags; + default: + std::cerr << "Unknown CC target type\n"; + exit(1); + break; } - return config.cxxflags; } std::string TaskCC::flagsString() const @@ -268,11 +284,17 @@ std::string TaskCC::flagsString() const std::string TaskCC::compiler() const { - if(std::string(sourceFile.extension()) == ".c") + switch(language()) { - return "/usr/bin/gcc"; + case Language::C: + return getConfiguration("host-cc"); + case Language::Cpp: + return getConfiguration("host-cpp"); + default: + std::cerr << "Unknown CC target type\n"; + exit(1); + break; } - return "/usr/bin/g++"; } std::vector TaskCC::getCompilerArgs() const -- cgit v1.2.3