diff options
Diffstat (limited to 'src/plugins/projectexplorer/makestep.cpp')
-rw-r--r-- | src/plugins/projectexplorer/makestep.cpp | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index ed8a048e68..fef7acd52d 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -36,7 +36,6 @@ #include "target.h" #include "toolchain.h" -#include <coreplugin/id.h> #include <coreplugin/variablechooser.h> #include <utils/environment.h> #include <utils/hostosinfo.h> @@ -60,7 +59,7 @@ const char MAKEFLAGS[] = "MAKEFLAGS"; namespace ProjectExplorer { -MakeStep::MakeStep(BuildStepList *parent, Core::Id id) +MakeStep::MakeStep(BuildStepList *parent, Utils::Id id) : AbstractProcessStep(parent, id), m_userJobCount(defaultJobCount()) { @@ -81,23 +80,19 @@ void MakeStep::setAvailableBuildTargets(const QStringList &buildTargets) bool MakeStep::init() { - BuildConfiguration *bc = buildConfiguration(); - if (!bc) - emit addTask(Task::buildConfigurationMissingTask()); - const CommandLine make = effectiveMakeCommand(Execution); if (make.executable().isEmpty()) emit addTask(makeCommandMissingTask()); - if (!bc || make.executable().isEmpty()) { + if (make.executable().isEmpty()) { emitFaultyConfigurationMessage(); return false; } ProcessParameters *pp = processParameters(); - pp->setMacroExpander(bc->macroExpander()); - pp->setWorkingDirectory(bc->buildDirectory()); - pp->setEnvironment(environment(bc)); + pp->setMacroExpander(macroExpander()); + pp->setWorkingDirectory(buildDirectory()); + pp->setEnvironment(buildEnvironment()); pp->setCommandLine(make); pp->resolveAll(); @@ -106,15 +101,17 @@ bool MakeStep::init() // That is mostly so that rebuild works on an already clean project setIgnoreReturnValue(isClean()); - setOutputParser(new GnuMakeParser()); - IOutputParser *parser = target()->kit()->createOutputParser(); - if (parser) - appendOutputParser(parser); - outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory().toString()); - return AbstractProcessStep::init(); } +void MakeStep::setupOutputFormatter(OutputFormatter *formatter) +{ + formatter->addLineParser(new GnuMakeParser()); + formatter->addLineParsers(target()->kit()->createOutputParsers()); + formatter->addSearchDir(processParameters()->effectiveWorkingDirectory()); + AbstractProcessStep::setupOutputFormatter(formatter); +} + void MakeStep::setClean(bool clean) { m_clean = clean; @@ -153,7 +150,7 @@ FilePath MakeStep::defaultMakeCommand() const BuildConfiguration *bc = buildConfiguration(); if (!bc) return {}; - const Utils::Environment env = environment(bc); + const Utils::Environment env = makeEnvironment(); for (const ToolChain *tc : preferredToolChains(target()->kit())) { FilePath make = tc->makeCommand(env); if (!make.isEmpty()) @@ -225,7 +222,7 @@ static Utils::optional<int> argsJobCount(const QString &str) bool MakeStep::makeflagsJobCountMismatch() const { - const Utils::Environment env = environment(buildConfiguration()); + const Environment env = makeEnvironment(); if (!env.hasKey(MAKEFLAGS)) return false; Utils::optional<int> makeFlagsJobCount = argsJobCount(env.expandedValueForKey(MAKEFLAGS)); @@ -234,7 +231,7 @@ bool MakeStep::makeflagsJobCountMismatch() const bool MakeStep::makeflagsContainsJobCount() const { - const Utils::Environment env = environment(buildConfiguration()); + const Environment env = makeEnvironment(); if (!env.hasKey(MAKEFLAGS)) return false; return argsJobCount(env.expandedValueForKey(MAKEFLAGS)).has_value(); @@ -245,9 +242,9 @@ bool MakeStep::userArgsContainsJobCount() const return argsJobCount(m_userArguments).has_value(); } -Utils::Environment MakeStep::environment(BuildConfiguration *bc) const +Environment MakeStep::makeEnvironment() const { - Utils::Environment env = bc ? bc->environment() : Utils::Environment::systemEnvironment(); + Environment env = buildEnvironment(); Utils::Environment::setupEnglishOutput(&env); if (makeCommand().isEmpty()) { // We also prepend "L" to the MAKEFLAGS, so that nmake / jom are less verbose @@ -494,10 +491,10 @@ void MakeStepConfigWidget::updateDetails() m_ui->disableInSubDirsCheckBox->setChecked(!m_makeStep->enabledForSubDirs()); ProcessParameters param; - param.setMacroExpander(bc->macroExpander()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setMacroExpander(m_makeStep->macroExpander()); + param.setWorkingDirectory(m_makeStep->buildDirectory()); param.setCommandLine(make); - param.setEnvironment(m_makeStep->environment(bc)); + param.setEnvironment(m_makeStep->buildEnvironment()); if (param.commandMissing()) setSummaryText(tr("<b>Make:</b> %1 not found in the environment.") |