From d5feb5b34cd9f595bf42aa934738b918785e3e87 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 9 Oct 2016 10:34:49 +0200 Subject: cmLocalGenerator: Populate variable mapping for all replacements This reduces the final replacement to a simple query in the map, which is much more readable than what was here before. --- Source/cmLocalGenerator.cxx | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 0cf2e54..3957641 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -738,8 +738,6 @@ std::string cmLocalGenerator::ExpandRuleVariable( std::map::iterator compIt = compilers.find(variable); - std::string replace = this->Makefile->GetSafeDefinition(variable); - if (compIt != compilers.end()) { std::string ret = this->ConvertToOutputForExisting( variableMappings["CMAKE_" + compIt->second + "_COMPILER"]); @@ -783,7 +781,6 @@ std::string cmLocalGenerator::ExpandRuleVariable( return ret; } - // loop over language specific replace variables for (const char* const* replaceIter = cmArrayBegin(ruleReplaceVars); replaceIter != cmArrayEnd(ruleReplaceVars); ++replaceIter) { for (std::vector::iterator i = enabledLanguages.begin(); @@ -793,14 +790,18 @@ std::string cmLocalGenerator::ExpandRuleVariable( if (actualReplace.find("${LANG}") != actualReplace.npos) { cmSystemTools::ReplaceString(actualReplace, "${LANG}", lang); } - if (actualReplace == variable) { - // if the variable is not a FLAG then treat it like a path - if (variable.find("_FLAG") == variable.npos) { - return this->ConvertToOutputForExisting(replace); - } - return replace; - } + + variableMappings[actualReplace] = + this->Makefile->GetSafeDefinition(actualReplace); + } + } + std::map::iterator mapIt = + variableMappings.find(variable); + if (mapIt != variableMappings.end()) { + if (variable.find("_FLAG") == variable.npos) { + return this->ConvertToOutputForExisting(mapIt->second); } + return mapIt->second; } return variable; } -- cgit v0.12